Rebuilding My News Bot: From Raspberry Pi to Mac Mini
14/02/2026

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. 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. 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. 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: Check the feed at @[email protected]! For those interested in the code, here is a snippet of how the bot mirrors content to Discord using a simple Python function:From Pi to Powerhouse: Re-birthing My News Bot on a Private Fediverse
The “Safe Space” Strategy
Why GoToSocial?
Component Old Setup (Pi) New Setup (Mac Mini) Engine Python / Tweepy Python / GoToSocial API Database None SQLite (posted.db) Media Local Storage In-Memory Processing Container Direct Script Docker Feature Summary: Same, Same, but Better
Technical Deep Dive: How I handle Discord
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!