After several months of debate I finally went to my local Microcenter and picked up a GEEKOM A5 Pro mini PC, a 20TB hard drive, and a 5-bay enclosure. I wiped it clean of Windows 11, installed Ubuntu Server, and was off.
I’m no stranger to servers. Back in my teens I ran old retired PCs out of my closet, streaming media to Winamp and hosting small websites for fun. But this was going to be different. The self-hosted app landscape has matured a lot since then, and this time the server needed to work for both my partner and me. That meant reliable, not just functional.
I went with Docker for deploying everything. Already familiar with it, and it gives the flexibility to try different software quickly, swap things out without breaking the whole setup, and keep things modular.
Replacing Media
My first move was migrating my media collection. Over the years I’d built up a large physical media library, backed up with MakeMKV and often compressed with HandBrake. A good library to start with.
I started with Plex but switched to Jellyfin after the consistent price hikes and a UI that had gotten worse over time. Shoutout to Plezy for adding Jellyfin support. Easily the best Jellyfin player available right now.
Switching from Spotify has been daunting, but Navidrome was the right call. Keeping the library current is an ongoing chore. Two decades of organized music already ripped helped with the initial workload. Navidrome’s built-in player leaves a lot to be desired, so I’ve landed on Feishin on desktop, Symfonium on my phone. I’ve picked up Beets to keep the library organized.
I set up Yamtrack and Maloja to track my media consumption habits, and Last.fm for scrobbling. I hadn’t scrobbled in almost 15 years. Seeing that come back to life felt nostalgic.
Google Photos was one of the reasons I switched to Android in the first place. At some point it became a testing ground for AI features nobody asked for. Slower, more cluttered, harder to use. Immich replaced it cleanly. The UI resembled previous versions of Google Photos making it an easy transition, and it handles backups and browsing with minimal effort.
The Rest of the Stack
I didn’t plan to get into home security, but after learning of Frigate I figured it was worth a try. I’d already been using Wyze cameras and paying for the subscription, and didn’t want to buy all new hardware. Wyze Bridge connects the two together, so I kept the cameras and dropped the subscription.
Frigate is more capable than the Wyze app in many ways and its detection is more consistent. A lot of its features do live in YAML config files, making initial setup less approachable, but once it’s running it’s essentially set-it-and-forget-it. That pulled Home Assistant into the picture, initially for better notifications from Frigate. It ended up replacing my Nest thermostat too.
I’ve been a Nest user since before Google bought them. The hardware still works fine. The app has spent the last few years begging me to pay a subscription for a thermostat I bought almost a decade ago. Home Assistant handles temperature control without the upsell.
Penpot replaced Figma for all my personal work. I’ve been in the industry long enough to watch this cycle play out: Fireworks, then Photoshop, then Sketch changed the game, Figma became the new industry standard. In the last few years Figma has gone sideways. The seat pricing is confusing, dev mode is borderline useless, and the push into AI design prompts and Figma Sites drifted so far from the core product I needed somewhere else to work. Penpot is a design-token focused and developer friendly alternative that is also self-hostable. I’m still forced to use Figma when involved in some client handoffs, but I’ve been able to replace my personal paid seat with Penpot.
Uptime Kuma replaced Uptime Robot for monitoring. Uptime Robot’s free tier had gotten more strict over time, and honestly it was never that impressive to begin with. Uptime Kuma covers my client sites, personal projects, and self-hosted services in one place.
What I Built
Some problems don’t have a good off-the-shelf answer. That’s where building your own starts to make sense.
Notion is a good example of the problem. It set out to be everything and ended up being nothing particularly well. Calendar integrations, email, AI features nobody asked for. Through all of it the base product never got faster, the markdown implementation capped its improvements, and the database-for-everything model became exhausting. I wanted something between a plain text editor and a full document app.
So I built TextJot. It started as a minimal notes app, closer to TextEdit than Notion. Pocketbase handles the backend. Over time I’ve added taxonomy-based organization and a few features that made sense for how I actually work. The part that makes it different from any off-the-shelf option is that I can add or change anything I want.
Docket is my Todoist replacement, also Pocketbase powered. Same logic: the existing tools had drifted from what I needed and a simple todo list shouldn’t come tacked on with a subscription fee.
The pattern is worth naming. Self-hosting isn’t just about replacing SaaS subscriptions. For some things, the right tool doesn’t exist yet, or the tool that used to exist got ruined. Building on Pocketbase has made it easy to solve specific problems without taking on a lot of infrastructure overhead. It’s a good backend for tools that are mostly just for you.
What’s Next
Home Assistant has a lot more to give. I’ve barely scratched the surface on automation, and I can already see a future where Home Assistant and Frigate move to their own dedicated box, separated from the media server. Mixing a security and automation system with everything else feels like the wrong architecture once you start caring about uptime.
The broader project isn’t done either. There are still apps in my life that are bloated, subscription-gated, or quietly getting worse. Month one was about proving the setup works. What comes next is finding out how far it goes.

Leave a Reply