Self-hosting 8+ apps with zero unplanned downtime
I run a small fleet of production applications on hardware I configured myself. This post is the short version of how — and why a backend developer should care about the box their code runs on.
The setup
A repurposed PC with a fiber uplink runs Ubuntu Server. Everything on it is containerized with Docker and sits behind Nginx Proxy Manager for SSL termination and per-subdomain routing. Services run on isolated Docker networks so a compromise in one doesn't reach the others.
At any time it's hosting 8+ services: MySQL, phpMyAdmin, Portainer, PocketBase, n8n (with a Redis + PostgreSQL queue), a Minecraft server, and several web apps.
Staying up
Two things keep it reliable:
- 3× daily automated backups via cron, so the worst case is a few hours of data, not days.
- Weekly scheduled restarts — the only planned downtime. Across 9+ months there has been zero unplanned downtime.
Why it matters
Owning the deployment changes how you write the application. You think about resource limits, graceful restarts, and backups as features, not afterthoughts — and that makes you a better backend engineer.