Fully automated homelab from empty disk to running services with a single command.
9,597
stars
1,671
commits
Python
primary language
Sep 8, 2026
updated
Features • Get Started • Documentation
This project utilizes Infrastructure as Code and GitOps to automate provisioning, operating, and updating self-hosted services in my homelab. It can be used as a highly customizable framework to build your own homelab.
What is a homelab?
Homelab is a laboratory at home where you can self-host, experiment with new technologies, practice for certifications, and so on. For more information, please see the r/homelab introduction and the Home Operations Discord community (formerly known as k8s-at-home).
If you encounter an issue, please create a bug report (avoid asking for support about issues specific to this project in other communication channels).
Project status: ALPHA
This project is still in the experimental stage, and I don't use anything critical on it. Expect breaking changes that may require a complete redeployment. A proper upgrade path is planned for the stable release. More information can be found in the roadmap below.
PC-MK26ECZDR (Japanese version of the ThinkCentre M700):
Intel Core i5-6600T @ 2.70GHz16GB128GBTL-SG108 switch:
81000MbpsSome demo videos and screenshots are shown here. They can't capture all the project's features, but they are sufficient to get a concept of it.
| Demo |
|---|
| Deploy with a single command (after updating the configuration files) |
![]() |
| PXE boot |
| Observe network traffic with Hubble, built on top of Cilium and eBPF |
| Homepage powered by... Homepage |
| Monitoring dashboard powered by Grafana |
| Git server powered by Gitea |
![]() |
| Matrix chat server |
| Continuous integration with Woodpecker CI |
| Continuous deployment with ArgoCD |
| ntfy displaying received alerts |
| Self-hosted AI powered by Ollama (experimental, not very fast because I don't have a GPU) |
| Logo | Name | Description |
|---|---|---|
| Ansible | Automate bare metal provisioning and configuration | |
| ArgoCD | GitOps tool built to deploy applications to Kubernetes | |
| cert-manager | Cloud native certificate management | |
| Cilium | eBPF-based Networking, Observability and Security (CNI, LB, Network Policy, etc.) | |
| Cloudflare | DNS and Tunnel | |
| Docker | Ephemeral PXE server | |
| ExternalDNS | Synchronizes exposed Kubernetes Services and Ingresses with DNS providers | |
| Fedora Server | Base OS for Kubernetes nodes | |
| Gitea | Self-hosted Git service | |
| Grafana | Observability platform | |
| Helm | The package manager for Kubernetes | |
| K3s | Lightweight distribution of Kubernetes | |
| Kanidm | Modern and simple identity management platform | |
| Kubernetes | Container-orchestration system, the backbone of this project | |
| Loki | Log aggregation system | |
| NGINX | Kubernetes Ingress Controller | |
| Nix | Convenient development shell | |
| ntfy | Notification service to send notifications to your phone or desktop | |
| Prometheus | Systems monitoring and alerting toolkit | |
| Renovate | Automatically update dependencies | |
| Rook Ceph | Cloud-Native Storage for Kubernetes | |
| Tailscale | VPN without port forwarding | |
| Wireguard | Fast, modern, secure VPN tunnel | |
| Woodpecker CI | Simple yet powerful CI/CD engine with great extensibility | |
| Zot Registry | Private container registry |
See roadmap and open issues for a list of proposed features and known issues.
Any contributions you make are greatly appreciated.
Please see contributing guide for more information.
Copyright © 2020 - 2024 Khue Doan
Distributed under the GPLv3 License.
See license page or LICENSE.md file for more information.
References:
cloudflared processesHere is a list of the contributors who have helped to improve this project. Big shout-out to them!
If you feel you're missing from this list, please feel free to add yourself in a PR.
Python
41.0%
Go
22.7%
HCL
11.9%
Jinja
9.7%
Shell
4.6%
Makefile
4.1%
Nix
2.7%
Jsonnet
2.5%
Fully automated homelab from empty disk to running services with a single command.
9,597
stars
1,671
commits
Python
primary language
Sep 8, 2026
updated
Features • Get Started • Documentation
This project utilizes Infrastructure as Code and GitOps to automate provisioning, operating, and updating self-hosted services in my homelab. It can be used as a highly customizable framework to build your own homelab.
What is a homelab?
Homelab is a laboratory at home where you can self-host, experiment with new technologies, practice for certifications, and so on. For more information, please see the r/homelab introduction and the Home Operations Discord community (formerly known as k8s-at-home).
If you encounter an issue, please create a bug report (avoid asking for support about issues specific to this project in other communication channels).
Project status: ALPHA
This project is still in the experimental stage, and I don't use anything critical on it. Expect breaking changes that may require a complete redeployment. A proper upgrade path is planned for the stable release. More information can be found in the roadmap below.
PC-MK26ECZDR (Japanese version of the ThinkCentre M700):
Intel Core i5-6600T @ 2.70GHz16GB128GBTL-SG108 switch:
81000MbpsSome demo videos and screenshots are shown here. They can't capture all the project's features, but they are sufficient to get a concept of it.
| Demo |
|---|
| Deploy with a single command (after updating the configuration files) |
![]() |
| PXE boot |
| Observe network traffic with Hubble, built on top of Cilium and eBPF |
| Homepage powered by... Homepage |
| Monitoring dashboard powered by Grafana |
| Git server powered by Gitea |
![]() |
| Matrix chat server |
| Continuous integration with Woodpecker CI |
| Continuous deployment with ArgoCD |
| ntfy displaying received alerts |
| Self-hosted AI powered by Ollama (experimental, not very fast because I don't have a GPU) |
| Logo | Name | Description |
|---|---|---|
| Ansible | Automate bare metal provisioning and configuration | |
| ArgoCD | GitOps tool built to deploy applications to Kubernetes | |
| cert-manager | Cloud native certificate management | |
| Cilium | eBPF-based Networking, Observability and Security (CNI, LB, Network Policy, etc.) | |
| Cloudflare | DNS and Tunnel | |
| Docker | Ephemeral PXE server | |
| ExternalDNS | Synchronizes exposed Kubernetes Services and Ingresses with DNS providers | |
| Fedora Server | Base OS for Kubernetes nodes | |
| Gitea | Self-hosted Git service | |
| Grafana | Observability platform | |
| Helm | The package manager for Kubernetes | |
| K3s | Lightweight distribution of Kubernetes | |
| Kanidm | Modern and simple identity management platform | |
| Kubernetes | Container-orchestration system, the backbone of this project | |
| Loki | Log aggregation system | |
| NGINX | Kubernetes Ingress Controller | |
| Nix | Convenient development shell | |
| ntfy | Notification service to send notifications to your phone or desktop | |
| Prometheus | Systems monitoring and alerting toolkit | |
| Renovate | Automatically update dependencies | |
| Rook Ceph | Cloud-Native Storage for Kubernetes | |
| Tailscale | VPN without port forwarding | |
| Wireguard | Fast, modern, secure VPN tunnel | |
| Woodpecker CI | Simple yet powerful CI/CD engine with great extensibility | |
| Zot Registry | Private container registry |
See roadmap and open issues for a list of proposed features and known issues.
Any contributions you make are greatly appreciated.
Please see contributing guide for more information.
Copyright © 2020 - 2024 Khue Doan
Distributed under the GPLv3 License.
See license page or LICENSE.md file for more information.
References:
cloudflared processesHere is a list of the contributors who have helped to improve this project. Big shout-out to them!
If you feel you're missing from this list, please feel free to add yourself in a PR.
Python
41.0%
Go
22.7%
HCL
11.9%
Jinja
9.7%
Shell
4.6%
Makefile
4.1%
Nix
2.7%
Jsonnet
2.5%