This diagram summarizes the high-level traffic flow and operational layers of the HomeLab: public/LAN entry points, ingress routing, authentication, application groups, observability, GitOps reconciliation, secrets synchronization, and persistent storage.
This project is, first and foremost, a platform for learning and exploration. The core philosophy is to maintain a resilient and reproducible test environment where experimentation is encouraged. While this approach can sometimes lead to over-engineering (here's the counter-argument), the primary goal is to guarantee that any component can be rebuilt from code.
This philosophy is supported by several key principles:
- Everything as Code: All infrastructure, from bare-metal provisioning to application deployment, is defined declaratively and managed through version control. This ensures consistency and enables rapid disaster recovery.
- Monorepo Simplicity: The entire homelab is managed within a single repository, providing a unified view of all services, configurations, and documentation.
- Open Source First: I prioritize the use of open-source software to maintain flexibility and support the community.
Hardware:
- Servers: 4 servers/nodes – (N5105 16C16G), (Oracle Cloud VM.Standard.2.1), (Ugreen DXP4800), and a Mac mini worker node
- Management: UPS (APC Back-UPS 500VA)
- Storage: 4x 4TB HDD, 1x 256GB SSD
Software Stack:
- Operating Systems: Ubuntu, Proxmox, macOS
- Container Orchestration: Kubernetes
- Automation: FluxCD, Renovate
- Security: PocketID, TinyAuth, Cert-Manager, Mkcert
- Networking: Ingress Nginx, WireGuard, Cloudflare Tunnel, NetBird, Tailscale / Headscale
- Observability: Kube Prometheus Stack, Grafana, Uptime Kuma