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 about homelab in general, see the r/homelab introduction.
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 (click to enlarge). They can't capture all the project's features, but they are sufficient to get a concept of it.
![]() |
|
|---|---|
| Deploy with a single command (after updating the configuration files) | PXE boot |
![]() |
![]() |
| Homepage with Ingress discovery powered by Hajimari | Monitoring dashboard powered by Grafana |
![]() |
![]() |
| Git server powered by Gitea | Matrix chat server |
![]() |
![]() |
| Continuous integration with Tekton | Continuous deployment with ArgoCD |
![]() |
![]() |
| Cluster management using Lens | Secret management with Vault |
| 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 | |
| Cloudflare | DNS and Tunnel | |
| Docker | Ephermeral PXE server and convenient tools container | |
| ExternalDNS | Synchronizes exposed Kubernetes Services and Ingresses with DNS providers | |
| Fedora Server | Base OS for Kubernetes nodes | |
| Gitea | Self-hosted Git service | |
| Grafana | Operational dashboards | |
| Helm | The package manager for Kubernetes | |
| K3s | Lightweight distribution of Kubernetes | |
| Kubernetes | Container-orchestration system, the backbone of this project | |
| Loki | Log aggregation system | |
| Longhorn | Cloud native distributed block storage for Kubernetes | |
| MetalLB | Bare metal load-balancer for Kubernetes | |
| NGINX | Kubernetes Ingress Controller | |
| Prometheus | Systems monitoring and alerting toolkit | |
| Renovate | Automatically update dependencies | |
| Tekton | Cloud native solution for building CI/CD systems | |
| Trow | Private container registry | |
| Vault | Secrets and encryption management system |
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 - 2022 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!
$ claude mcp add homelab \
-- python -m otcore.mcp_server <graph>