Ramblings of an aging IT geek
← Ramblings of an aging IT geek
homelab

bringing it all back home

After watching a small VPS bill creep upwards, I moved most of my self-hosted services off rented servers and back onto hardware in the cupboard under the stairs.

A server rack with cabling

I added up the rented infrastructure last weekend and it was a slightly embarrassing number. Two VPS instances, a managed database I'd forgotten I was paying for, object storage for backups, and a small box that did nothing but run a couple of cron jobs. None of it was expensive on its own. Together it was about the cost of a decent dinner out every month, for things that mostly served me and a handful of friends.

So I've spent the last fortnight pulling it home.

The trigger was honest laziness rather than principle. I already have a machine running in the house that idles most of the day. Every service I was renting could live there comfortably, and the marginal electricity cost of running a few more containers is rounding error next to what I was handing over each month. The cloud made sense when I had nothing at home. Now that I do, paying twice felt daft.

A homelab shelf with mixed hardware

The actual move was less dramatic than I expected. Most of it was already in containers, so it was a case of moving compose files, re-pointing DNS, and copying volumes across. The managed database was the only thing that made me sweat, and even that was a pg_dump and restore once I'd stopped lying to myself about needing point-in-time recovery for a personal project.

The bit I almost got wrong was ingress. On the cloud I'd leaned on the provider for TLS termination and a public IP that just worked. At home I'm behind CGNAT on one connection, so I can't simply forward port 443 and call it done. I ended up running a small tunnel out to a cheap, tiny VPS that does nothing but terminate TLS and proxy back through WireGuard. That one box I've kept. It costs almost nothing and it's the only thing that genuinely needs to be somewhere with a stable public address.

What I lost is worth naming plainly, because self-hosting evangelists tend to skip it. If my house loses power, my services go down. If my single disk dies and I've been careless, data goes with it. The cloud was quietly handling a lot of failure modes I'd stopped thinking about. So the rule I've set myself is that anything I'd genuinely miss gets backed up off-site, encrypted, to storage I still rent for exactly that purpose. Restore-tested, not just backed-up. I ran the restore once to prove it works, which is more than I ever did for the managed database.

The result is a setup that's cheaper, a bit more fragile, and considerably more mine. I can see every log, change anything I like, and nobody's going to deprecate the platform out from under me. That last part is the real win. Most of what I run, I run because I enjoy running it, and there's a quiet pleasure in the whole thing living ten feet away rather than in someone else's datacentre.

I'll report back if the cupboard under the stairs catches fire. So far it's just warm.