# Khue's Homelab [](https://matrix.to/#/#homelab:matrix.khuedoan.com) [](https://github.com/khuedoan/homelab/tags) [](https://homelab.khuedoan.com) [](https://www.gnu.org/licenses/gpl-3.0.html) [](https://github.com/khuedoan/homelab) Current status: **ALPHA** This project utilizes [Infrastructure as Code](https://en.wikipedia.org/wiki/Infrastructure_as_code) and [GitOps](https://www.weave.works/technologies/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. ## Overview This section provides a high level overview of the project. For further information, please see the [documentation](https://homelab.khuedoan.com). ### Hardware  - 4 × NEC SFF `PC-MK26ECZDR` (Japanese version of the ThinkCentre M700): - CPU: `Intel Core i5-6600T @ 2.70GHz` - RAM: `16GB` - SSD: `128GB` - TP-Link `TL-SG108` switch: - Ports: `8` - Speed: `1000Mbps` ### Features Project status: **Alpha** (see [roadmap](#roadmap) below) - [x] Common applications: Gitea, Seafile, Jellyfin, Paperless... - [x] Automated bare metal provisioning with PXE boot - [x] Automated Kubernetes installation and management - [x] Installing and managing applications using GitOps - [x] Modular architecture, easy to add or remove features/components - [x] Automated certificate management - [x] Automatically update DNS records for exposed services - [x] Expose services to the internet securely with [Cloudflare Tunnel](https://www.cloudflare.com/products/tunnel/) - [x] CI/CD platform - [x] Private container registry - [x] Distributed storage - [x] Support multiple environments (dev, prod) - [ ] Monitoring and alerting 🚧 - [ ] Automated offsite backups 🚧 - [ ] Single sign-on 🚧 Screenshots of some user-facing applications are shown here, I will update them before each release. They can't capture all of the project's features, but they are sufficient to get a concept of it. |  | | :--: | | Homepage with Ingress discovery powered by [Hajimari](https://github.com/toboshii/hajimari) | |  | | :--: | | Git server powered by [Gitea](https://gitea.io/en-us/) | |  | | :--: | | Continuous integration with [Tekton](https://tekton.dev/) | |  | | :--: | | Continuous deployment with [ArgoCD](https://argoproj.github.io/cd/) | |  | | :--: | | Monitoring dashboard powered by [Grafana](https://grafana.com/) | |  | | :--: | | [Matrix](https://matrix.org/) chat server powered by [Element](https://matrix.org/docs/projects/client/element) and [Dendrite](https://matrix.org/docs/projects/server/dendrite) | |  | | :--: | | Cluster management using [Lens](https://k8slens.dev/) (or you can just use `kubectl`) | |  | | :--: | | Secret management with [Vault](https://www.vaultproject.io/) | ### Tech stack
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 |
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 | |
Rocky Linux | Base OS for Kubernetes nodes | |
Tekton | Cloud native solution for building CI/CD systems | |
![]() |
Trow | Private container registry |
Vault | Secrets and encryption management system |