Notes on self-hosting: start boring
The most reliable homelab is a boring one. Every interesting failure I've had came from the same handful of avoidable choices. A few rules I keep re-learning:
Backups before cleverness
No service earns complexity until its backups are automated and tested. A weekly backup you never verify is a hope, not a plan. Mine run on a schedule to off-site storage, and the day I set that up was the day I stopped dreading updates.
Private by default
Everything sits behind a private mesh network. Nothing is publicly reachable unless there's a specific reason, and each exception gets reviewed. It's less exciting than hardening a public box, and that's the point.
One way to deploy
Every service gets deployed the same way — same compose patterns, same conventions, same update flow. When everything's a snowflake, nothing's maintainable at 11pm.
Small services, loud alerts
I'd rather run ten small containers with good alerting than one big box I have to babysit. If something breaks, I want to know in minutes, not discover it on the weekend.
Boring isn't the absence of ambition. It's what lets the ambitious stuff survive contact with reality.