back to blog

From Cloud Costs to Home Lab

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:

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.

find me on