Last week, a $34 Railway invoice landed in my inbox for a couple of side projects. Not a big bill, but enough to make me ask: why rent cloud cycles when I've got unused hardware at home?
Sitting in my utility room was an Intel NUC 11 Pro Kit with an i7, 32GB RAM, and a 1TB SSD. Instead of paying for convenience, I decided to wake it up and reclaim my infrastructure.
The Spark: That Invoice and the NUC Resurrection
I flashed Ubuntu Server 22.04 onto a USB stick, booted the NUC, wired it to my router, and stashed it in the utility room. Total time: under an hour. Cost: zero.
Lesson I share with juniors: audit before you architect. That old box might be all you need.
Enter Coolify: Self-Hosting Without the Pain
I didn't want Kubernetes on a single node. Too much overhead. Instead, I found Coolify, an open-source, self-hosted Heroku alternative. Connect it to GitHub, push code, and it builds and deploys Docker containers automatically.
Installation was one command over SSH. Minutes later, I had a dashboard running on my NUC's local IP. My first deploy โ a small API โ was live in seconds. From there it snowballed: automated CI/CD, no cloud tax, no YAML hell.
Solving Dynamic IPs with Cloudflare DDNS
Home labs break when your ISP changes IPs. Instead of paying for DDNS, I ran a Cloudflare DDNS container through Coolify. It updates DNS records automatically using a lightweight Python script.
Config took minutes: create a Cloudflare token, drop it in a JSON config, and let the container run every 15 minutes. Now my services stay reachable at api.mydomain.com or ha.mydomain.com without static IPs or manual tweaks.
Migrating Services: Home Assistant and Pi-hole
With the backbone ready, I pulled in existing services:
- Home Assistant for smart home orchestration
- Pi-hole for network-wide ad blocking
- Dozzle for monitoring Docker logs
All services run as Docker containers in Coolify. For routing, I used the built-in Caddy reverse proxy, which maps subdomains to local ports and handles SSL automatically.
Power-Proofing with a UPS
Dutch grids are reliable, but outages happen. I added a small UPS to keep the NUC and router alive for 15โ30 minutes โ enough to ride out blips or shut down cleanly. Cheap insurance for reliability.
The Payoff: Zero Bills, Infinite Experiments
A week later:
- Cloud costs: gone
- Deploys: instant
- Services: stable
- Mental bandwidth: free for real work
I can spin up experiments without guilt. This isn't just a home lab โ it's a manifesto. In a world of ballooning cloud bills, owning your stack is freedom. Cloud has its place, but if you're prototyping or tinkering, you don't need to rent convenience.