Rebuilding My News Bot: From Raspberry Pi to Mac Mini

14/02/2026

feed igeek

From Pi to Powerhouse: Re-birthing My News Bot on a Private Fediverse

Back before Musk bought Twitter, I had an account generating quite a lot of natural traffic, managed entirely by a Raspberry Pi bot. (I also had another account before that which caught a couple too many DMCA notices and was sadly removed :p).

I miss my feed; it was there to provide a summary of things and people that I was interested in, with the bonus of sharing it with others. This week, I took another look at bringing it back.

The “Safe Space” Strategy

When I first left Twitter, I set up home at Mastodon and re-pointed my Pi script. The mods weren’t happy, and the suspension came quickly. After some apologies and promising to “behave,” my account was re-kindled, but I needed a new strategy. I needed a safe space to experiment without raising the wrath of the admins—so I built my own.

I’ve recently picked up a couple of Mac Minis (and a stray iMac). Initially, I was planning to use these to run Clawedbot, which I have an MVP running for, but I was sidelined by a long-time curiosity: creating a media server. It’s running great, but an i7 with 16GB of RAM is a lot of “grunt” for just movies. I wondered what else I could do with it and landed on hosting a private GoToSocial instance.

Why GoToSocial?

While Mastodon is the big name, it can be a bit of a resource hog. GoToSocial is lightweight, written in Go, and perfect for a single-user instance. It handles the Fediverse protocol perfectly while letting me do exactly what I please with my bot.

ComponentOld Setup (Pi)New Setup (Mac Mini)
EnginePython / TweepyPython / GoToSocial API
DatabaseNoneSQLite (posted.db)
MediaLocal StorageIn-Memory Processing
ContainerDirect ScriptDocker

Feature Summary: Same, Same, but Better

I knocked together a Docker container for the instance and re-birthed the bot. Check it out at https://igeek.gamer-geek-news.com/. Here’s how it works now:

  • Automated RSS Monitoring: Checks 50+ feeds (Tech, Gaming, Linux, AI) every 5 minutes.
  • Smart Content Fetching: Uses a “Safe Fetch” mechanism to bypass basic bot blockers (looking at you, Hackaday).
  • Duplicate Prevention: Uses a lightweight SQLite database to ensure no repeat posts.
  • Intelligent Formatting: Auto-cleans HTML and adds category icons (🐧 for Linux, 🎮 for Gaming).
  • In-Memory Media: Downloads and re-uploads images directly to the Fediverse without touching the local disk.
  • Digital Archiving: Every link is submitted to the Internet Archive for permanent preservation—no more “link rot.”
  • Multi-Platform: Posts to the Fediverse and mirrors to Discord via Webhooks.

Check the feed at @[email protected]!


Technical Deep Dive: How I handle Discord

For those interested in the code, here is a snippet of how the bot mirrors content to Discord using a simple Python function:

import requests

def post_to_discord(webhook_url, title, link, summary):
    payload = {
        "content": f"🚀 **{title}**\n\n{summary}\n\nRead more: {link}",
        "username": "Igeek News Bot"
    }
    requests.post(webhook_url, json=payload)
  

The “Secret Sauce”: Docker Compose for GoToSocial

If you’re looking to host your own “safe space” for bots or personal use, here is the docker-compose.yml I used to get up and running on the Mac Mini. It’s configured to be lightweight and fast.

version: "3.3"

services:
  gotosocial:
    image: superseriousbusiness/gotosocial:latest
    container_name: gotosocial
    networks:
      - gotosocial
    environment:
      GTS_HOST: igeek.gamer-geek-news.com
      GTS_PORT: 8080
      GTS_DB_TYPE: sqlite
      GTS_DB_ADDRESS: /gotosocial/storage/sqlite.db
      GTS_STORAGE_BACKEND: local
      GTS_STORAGE_LOCAL_BASE_PATH: /gotosocial/storage
      GTS_LETSENCRYPT_ENABLED: "false" # Set to true if not using a reverse proxy
    volumes:
      - ./data:/gotosocial/storage
    ports:
      - "8080:8080"
    restart: always

networks:
  gotosocial:
    external: false

Pro-Tip: I run this behind a reverse proxy (like Nginx or Caddy) to handle SSL. Since the Mac Mini has plenty of RAM, GoToSocial flies through the SQLite queries without breaking a sweat!