Why I Self-Host Everything on a Mini PC
The cloud bill that never goes down
Most side projects die the same way: the idea survives, the monthly invoice does not. A single small VPS is cheap until you need three of them, a managed database, and an object storage bucket that quietly grows.
I went the other direction. One Intel Celeron J4105 box, 14GB of RAM, an SSD, and a Biznet fiber line doing roughly 280/160 Mbps. Purchase price: less than one year of comparable cloud spend. Everything below runs on it today.
What actually runs on the box
- An e-commerce platform (Next.js frontend, FastAPI backend, PostgreSQL, workers)
- A fleet of AI agent gateways that write code, review PRs, and run QA
- Caddy as the reverse proxy for all of it, with automatic TLS
- This blog — static HTML generated by a Python script and pushed to GitHub
The J4105 is not fast. It does not need to be. Web workloads at personal-project scale are I/O bound, and an SSD plus 14GB of RAM covers a surprising amount.
The trade-offs nobody mentions
Self-hosting is not free. You are the on-call engineer. When the ISP drops packets at 2am, there is no status page to blame. My mitigations:
- Systemd everywhere. Every service restarts automatically.
- Nightly offsite backups. The box can die; the data cannot.
- A cheap VPS as the public face for latency-sensitive or DNS-sensitive work.
The math
Four years of cloud spend for this stack would exceed the hardware cost in year one. Break-even arrived around month eight, including a dead SSD replacement.
If your workload is bursty and latency-tolerant — CI runners, agents, batch jobs, internal tools — a used mini PC behind fiber is hard to beat. If you need five-nines availability for customers, pay the cloud tax and stop reading blogs from people who self-host.