I've been building out a small personal server which I call it Red Fox. Here's a quick rundown of what's on it and why. The repo is on Codeberg.
Ghost
The blog itself runs on Ghost, a lightweight publishing platform. It's containerized, sitting behind a Caddy reverse proxy that handles TLS automatically. Nothing exotic here I wanted something I control end to end, rather than handing my writing over to a platform I don't own.
ntfy
ntfy is a simple push notification service you send a message to a topic, and anything subscribed to that topic gets notified. I self-host my own instance on rather than using the public one, mainly so notifications about my own infrastructure (upgrades, backups, uptime) stay on infrastructure I control, with auth locked down rather than open to anyone who finds the URL.
MollySocket
This is the one I'm most pleased with. I run Molly — a hardened fork of Signal — on my phone, but standard Signal notifications route through Google's Firebase Cloud Messaging, which means Google knows something's happening on your phone even if it can't read the message. MollySocket sidesteps that: it maintains its own connection to Signal's servers and, when a message arrives, pings my self-hosted ntfy instance instead, which wakes up Molly directly. No Google in the loop at all.
I run it in airgapped mode, meaning there's no public web server exposed for it registration happens once, manually, over SSH, rather than through an internet-facing endpoint. Fewer open doors on the box.
NixOS
The whole thing runs on NixOS. I like it for the same reason I like most of my setup choices: everything is declared in one config file, version-controlled, and reproducible. The flake pins Ghost, Caddy, ntfy, and MollySocket together, so a rebuild brings back the exact same stack, not whatever's current when I get around to it. If Red Fox ever dies, I rebuild it from a repo, not from memory.