chore(deps): update helm release cert-manager to v1.18.2 (#293) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> chore(deps): update proxmox-csi-plugin docker tag to v0.3.11 (#311) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> chore(deps): update cloudflare/cloudflared docker tag to v2025.7.0 (#314) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> chore(deps): update dependency siderolabs/talos to v1.10.5 (#331) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> chore(deps): update media containers (#328) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> chore(deps): update ghcr.io/prometheus-community/charts/kube-prometheus-stack docker tag to v73.2.3 (#332) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> chore(deps): update cilium (#333) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> chore(deps): update actions/checkout action to v4.2.2 (#336) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> chore(deps): update docker.io/adguard/adguardhome docker tag to v0.107.63 (#338) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> chore(deps): update dependency kubernetes/kubernetes to v1.33.3 (#335) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> chore(deps): update ghcr.io/authelia/authelia docker tag to v4.39.5 (#339) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> chore(deps): update ghcr.io/home-operations/qbittorrent docker tag to v5.1.2 (#340) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> chore(deps): update helm release authelia to v0.10.39 (#341) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> chore(deps): update registry.k8s.io/git-sync/git-sync docker tag to v4.4.2 (#342) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> chore(deps): update sealed-secrets docker tag to v2.5.16 (#343) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> chore(deps): update ghcr.io/advplyr/audiobookshelf docker tag to v2.26.1 (#344) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> chore(deps): update netbird (#345) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> chore(deps): update terraform proxmox to v0.80.0 (#346) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> chore(deps): update ghcr.io/home-operations/prowlarr docker tag to v2 (#347) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> chore(deps): update ghcr.io/prometheus-community/charts/kube-prometheus-stack docker tag to v75 (#348) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> Signed-off-by: Vegard Hagen <vegard@stonegarden.dev> chore(deps): update helm release authelia to v0.10.41 (#349) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
🪨 Homelab 🏡
Repository for home infrastructure and Kubernetes cluster using GitOps practices.
Held together using Proxmox VE, OpenTofu, Talos, Kubernetes, Argo CD and copious amounts of YAML with some help from Renovate.
📖 Overview
This repository hosts the IaC (Infrastructure as Code) configuration for my homelab.
The Homelab is backed by Proxmox VE hypervisor nodes with VMs bootstrapped using OpenTofu/Terraform.
Most of the services run on Talos flavoured Kubernetes, though I'm also running a TrueNAS VM for storage and Home Assistant VM for home automation.
To organise all the configuration, I've opted for an approach using Kustomized Helm with Argo CD which I've explained in more detail in this article.
I journal my homelab journey over at my self-hosted blog.
🧑💻 Getting Started
If you're new to Kubernetes, I've written a fairly thorough guide on Bootstrapping k3s with Cilium. In the article I try to guide you from a fresh Debian 12 Bookworm installation to a working cluster using the k3s flavour of Kubernetes with Cilium as a CNI and IngressController.
I've also written an article on how to get started with Kubernetes on Proxmox if virtualisation is more your thing.
The current iteration of my homelab runs on Talos Kubernetes and is set up according to this article.
🏃 Devcontainer
A devcontainer containing the required tools is available for this repository as ghcr.io/vehagn/homelab-devcontainer. See ./devcontainer for details.
⚙️ Core Components
- Proxmox VE: Server management and KVM hypervisor.
- OpenTofu: Open source infrastructure as code tool.
- Cilium: eBPF-based Networking, Observability, Security.
- Proxmox CSI Plugin: CSI driver for storage
- Argo CD: Declarative, GitOps continuous delivery tool for Kubernetes.
- Cert-manager: Cloud native certificate management.
- Sealed-secrets: Encrypt your Secret into a SealedSecret, which is safe to store - even inside a public repository.
- Authelia: open-source authentication and authorization server
- Gateway API: Next generation of Kubernetes Ingress
- AdGuardHome: Domain name server backed by Unbound
- NetBird: Completely self hosted VPN solution
- CloudNativePG: PostgreSQL database operator
🗃️ Folder Structure
.
├── 📂 docs # Documentation
├── 📂 k8s # Kubernetes manifests
│ ├── 📂 apps # Applications
│ ├── 📂 infra # Infrastructure components
│ └── 📂 sets # Bootstrapping ApplicationSets
└── 📂 tofu # Tofu configuration
├── 📂 home-assistant # Home Assistant VM
└── 📂 kubernetes # Kubernetes VM configuration
├── 📂 bootstrap # Kubernetes bootstrap config
└── 📂 talos # Talos configuration
🖥️ Hardware
| Name | Device | CPU | RAM | Storage | Purpose |
|---|---|---|---|---|---|
| Abel | CWWK 6 LAN Port | Intel i3-N305 | 48 GB DDR5 | - | Control-plane |
| Euclid | ASUS ExpertCenter PN42 | Intel N100 | 32 GB DDR4 | - | Control-plane |
| Cantor | ASUS PRIME N100I-D D4 | Intel N100 | 32 GB DDR4 | 5x8TB HDD RaidZ2 | NAS/Control-plane |
| Gauss | Dell Precision Tower 5810 | Xeon E5-1650 v3 | 64 GB DDR4 ECC | 14 TB HDD | Compute |
🏗️ Work in Progress
- External DNS
- Use BGP with Cilium and UniFi
- Hajimari dashboard
- Podcast client
- Immich for photos
- Nextcloud for files
- Self-hosted git-solution (Gitea, GitLab, etc.)
👷 Future Projects
- Explore Kanidm as an identity management platform
- Explore other database operators
- Implement LGTM-stack for monitoring
- Local LLM
- Dynamic Resource Allocation for GPU
- Cilium mTLS & SPIFFE/SPIRE
- Ceph for distributed storage
- OPNSense/pfSense/OpenWRT