Your Homelab, But Make It Self-Managing
You've probably heard the homelab pitch before: buy some used enterprise hardware, spin up a few Docker containers, and call it a day. That works—until you want to rebuild, scale, or actually maintain the thing. The manual labor creeps in: reinstalling OSes, configuring Kubernetes, updating apps, renewing certificates. It becomes a part-time job, not a hobby.
That's where khuedoan/homelab comes in. It's a complete, open-source homelab framework that treats your entire infrastructure as code. From the moment a bare-metal machine powers on to the moment your apps get updated, everything is automated. It's a serious reference architecture for anyone who wants their homelab to run itself.
What It Does
At its core, this project uses Infrastructure as Code (IaC) and GitOps to provision, operate, and update self-hosted services. The author runs it on four NEC SFF machines (Japanese ThinkCentre M700s) with Core i5-6600T CPUs, 16GB RAM each, and a simple 8-port gigabit switch. Nothing exotic—realistic homelab hardware.
The pipeline is end-to-end automated:
- PXE boot provisions bare metal machines with zero manual installation
- Kubernetes gets installed and managed automatically
- Applications are deployed and updated via GitOps—you approve changes, then the system rolls them out
- Certificates are issued and renewed automatically
- DNS records update themselves for exposed services
- Backups and restores run on a schedule
The architecture is modular. You can add or remove components based on what you need. It supports multiple environments (dev and prod), includes a CI/CD platform, a private container registry, distributed storage, monitoring and alerting, single sign-on, and even infrastructure testing.
One thing to note: this project is in ALPHA. The README is upfront that breaking changes are expected and may require a complete redeployment. It's a framework to learn from and build on, not a production-grade appliance.
Why It's Cool
The appeal here isn't just that it automates things—it's how it automates them. A few things stand out:
-
The full lifecycle is covered. Most homelab setups automate deployment but leave the boring parts manual. This project handles PXE boot, OS upgrades, Kubernetes upgrades, and app updates. You don't just get a running cluster; you get one that maintains itself.
-
GitOps is the control plane. Your entire infrastructure state lives in Git. Want to change something? Edit a config, push, and the system reconciles. Want to update an app? Approve the change and let it roll. This is the same pattern used in serious production environments, and seeing it applied to a homelab is genuinely instructive.
-
It's opinionated but modular. The feature list reads like a checklist of everything you'd want in a self-hosted setup: Gitea for git, Jellyfin for media, Paperless for documents, Tailscale or Wireguard for VPN, Cloudflare Tunnel for secure exposure, and more. But because it's modular, you can strip out what you don't need and keep what you do.
-
It's a learning tool disguised as a homelab. Even if you never deploy this exact setup, the project is a masterclass in how to structure infrastructure as code. The documentation and architecture alone are worth studying if you're interested in Kubernetes, GitOps, or automated provisioning.
-
The demo is compelling. The README links to an asciinema recording showing a full deployment with a single command (after configuration). Watching a cluster spin up from bare metal with zero manual intervention is the kind of thing that makes you rethink your own setup.
How to Try It
If you want to dig in, the full documentation lives at homelab.khuedoan.com. The repository itself is the starting point:
git clone https://github.com/khuedoan/homelab
cd homelab
From there, the process is: update the configuration files to match your hardware and preferences, then run the deploy command. The README shows a single-command deployment after configuration—though be aware that "after configuration" is doing a lot of heavy lifting. This isn't a turnkey solution; you'll need to understand the components and adapt them to your environment.
Before you dive in, a few practical notes:
- Read the docs first. This is a complex system. The documentation site is your friend.
- Expect to break things. It's alpha software. The author explicitly says not to run anything critical on it.
- Start small. Maybe don't go straight for the full feature set. Use the modularity to your advantage and add components incrementally.
If you run into issues specific to this project, the README asks you to create a bug report rather than seeking support in other channels—respect that, and check the existing issues first.
Final Thoughts
This project isn't for everyone. If you just want a simple NAS or a couple of Docker containers, it's massive overkill. But if you're the kind of person who finds joy in watching infrastructure assemble itself, or if you want a practical, working example of GitOps and IaC on real hardware, this is a goldmine.
The alpha status is a feature, not a bug. You get to see how a complex system is built, break it, fix it, and learn from it. By the time it reaches a stable release, you'll have gained more hands-on knowledge than any tutorial could give you. And if you build your own homelab from this framework, you'll have a setup that maintains itself—leaving you more time to actually use the services you're hosting.
Follow @githubprojects for more developer tools and open source projects.