Published on: 20-05-2025
From Cloud to on-prem Nomad Cluster: My Homelab Awakening
My cloud compute costs for side projects have gotten high. That, combined with consuming lots of mini/micro homelab content on /r/minilab and TikTok, has me inspired. Why not shut down these fly.io containers and self-host?
First, I’ll need servers, aka computers, to run my projects. I’m looking for the best price-to-compute-power ratio and ideally multiples to build a cluster. Why build a cluster? Clusters === badass. After a quick look at building a custom PC, I find the best price-to-compute-power ratio is buying used office PCs. Here is a spreadsheet of offerings on eBay Kleinanzeigen (German Craigslist) in my area. The best deal is HP ProDesks with 8GB RAM (upgradeable to 16GB) with Intel Core i5 CPUs from a hardware guy decommissioning his test cluster. Since he runs Linux on them, I’m confident they will work for my use case.
A bike ride through the city, with my daughter in tow, and now I have two servers to set up. The only computer monitor we have in the house is a weird Apple one that exclusively supports Macs via Thunderbolt, so I’ll have to borrow one from the neighbor. Good old VGA. Now with a keyboard attached, I can install Ubuntu 24, Noble, on the servers. With that done, SSH keys configured, and static IPs assigned to them, I can return the monitor. It’s the command line from here on out.
What software should I use to orchestrate the Docker containers I want to run? Docker Compose is great on my laptop but not for clustering. Docker Swarm is a step up from Compose but not that slick since it does not come with a nice UI. Kubernetes, the holy grail of container orchestration, is overkill for my homelab. Nomad from HashiCorp it is!
Now for a hundred hurdles to test my DevOps skills: Firewall configuration blocking traffic, bridge network interfaces disabled by default, an attempt to self-host a Docker image repo and fail, then switch to AWS ECR, get AWS ECR auto login working on the nodes… It’s been a full week of hacking on the homelab, but I’m happy to say it is live. This site is now hosted on two mini PCs on a shelf in my apartment.
Besides saving money, the part that excites me most is the ability to spin up new projects. Since the cluster is just Docker containers, I can use any programming language out there. Sometimes I get cravings for writing weird software, starting with a little experiment in Racket to fetch my reading statuses from Bookwyrm. I’m looking forward to creating more projects and experimenting with different technologies, then posting about it here on my tech blog.