This Wiki is the new centralised location for IT Admin documentation within Dezrin's Lab
Dezrin's Lab is a home lab consisted of 4 Proxmox hosts and around ~60 VMs, stats for nerds below:

This infrastructure follows a GitOps model with Infrastructure-as-Code (IaC) organized into three main components: Terraform, Ansible, and Kubernetes/ArgoCD.
| Layer | Technology |
|---|---|
| Virtualization | Proxmox (via Terraform) |
| Kubernetes | MicroK8s (HA, 5 nodes) |
| Storage | Microceph (distributed Ceph) |
| Ingress | Traefik + Istio Ambient |
| GitOps/CD | ArgoCD |
| Authentication | Authentik |
| Container Registry | Harbor |
Provisions Ubuntu VMs on Proxmox hypervisor across three nodes.
terraform/lab/infrastructure/
βββ VH02/
β βββ proxmox-ubuntu-vm/ # Reusable module
β βββ proxmox-ubuntu/ # Role configuration
βββ VH03/
β βββ proxmox-ubuntu-vm/
β βββ proxmox-ubuntu/
βββ VH05/
βββ proxmox-ubuntu-vm/
βββ proxmox-ubuntu/
Location: /home/kasm-user/Documents/ansible/
| Playbook | Purpose |
|---|---|
microk8s.yml |
Deploys MicroK8s cluster + Microceph storage |
argocd.yml |
Installs ArgoCD with TLS ingress |
traefik.yml |
Traefik ingress with ACME/Let's Encrypt |
istio-setup.yml |
Prepares Istio Ambient mesh |
configure_registry_ca.yml |
Harbor registry CA integration |
/ansible/roles/microk8s/)Enabled Plugins:
/ansible/roles/microceph/)/ansible/roles/argocd/)/ansible/roles/traefik/)/ansible/roles/istio-helm/)Resource Limits:
| Component | CPU | Memory |
|---|---|---|
| Pilot | 100m-1000m | 128Mi-512Mi |
| Proxy | 10m-1000m | 16Mi-512Mi |
| Gateway | 10m-1000m | 128Mi-512Mi |
Host Group: k8s_cluster
| Role | Hostname |
|---|---|
| Control Plane | k8s-inf-cp |
| Worker | k8s-inf-w01 |
| Worker | k8s-inf-w02 |
| Worker | k8s-inf-w03 |
| Worker | k8s-inf-w04 (GPU) |
| Worker | k8s-inf-w05 |
Location: https://gitlab.dezr.in/lab/infrastructure/applications
https://gitlab.dezr.in/lab/infrastructure/argocd/k8s-inf-ss.git| Application | Version | Purpose | Namespace | Storage |
|---|---|---|---|---|
| Authentik | 2025.12.1 | OIDC/SSO Authentication | authentik | 10Gi (PostgreSQL) |
| Harbor | - | Private Container Registry | harbor | - |
| Home Assistant | 0.3.41 | Smart Home Automation | home-assistant | 10Gi |
| Immich | 2.0.0 | Photo management + AI | immich | 100Gi |
| Jellyseerr | 2.7.3 | Media Request Manager | jellyseerr | 4Gi |
| Open WebUI + Ollama | - | Local LLM Interface (GPU) | openwebui | 50Gi |
| PrivateBin | - | Encrypted Pastebin | privatebin | 4Gi |
| Trilium | - | Hierarchical Notes | trilium | Ceph RBD |
| Uptime Kuma | 2.24.0 | Uptime Monitoring | uptime-kuma | Existing PVC |
| Vaultwarden | 0.34.4 | Password Manager | vaultwarden | Existing PVC |
| Wiki.js | - | Wiki Platform | wiki-js | 8Gi (PostgreSQL) |
| Docuseal | 2.4.2 | Document Signing | docuseal | 4Gi |
All applications use:
dezr.in| Resource | IP/Value |
|---|---|
| MetalLB IP Pool | 10.20.1.92-10.20.1.95 |
| Traefik LoadBalancer | 10.20.1.92 |
| Istio Gateway | 10.20.1.93 |
| DNS Resolver | 10.10.20.227 |
| Domain | dezr.in |
harbor.dezr.in) with CA certificate integrationβββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β PHASE 1: INFRASTRUCTURE
β
β Terraform βββΊ Proxmox API βββΊ Create VMs (cloud-init)
β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β
βΌ
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β PHASE 2: CLUSTER SETUP
β
β Ansible (microk8s.yml)
β βββ Install MicroK8s (v1.32/stable)
β βββ Configure HA cluster
β βββ Enable plugins (DNS, MetalLB, Helm3, etc.)
β βββ Deploy Microceph storage
β βββ Output kubeconfig
β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β
βΌ
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β PHASE 3: SERVICE INFRASTRUCTURE
β
β Ansible Playbooks:
β βββ argocd.yml βββΊ ArgoCD + Ingress
β βββ traefik.yml βββΊ Traefik + ACME
β βββ istio-setup.yml βββΊ Istio Ambient
β βββ configure_registry_ca.yml βββΊ Harbor CA
β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β
βΌ
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β PHASE 4: APPLICATION DEPLOYMENT
β
β ArgoCD (GitOps)
β βββ App-of-Apps pulls from GitLab
β βββ Syncs 9 applications
β βββ Traefik IngressRoutes configured
β βββ Ceph storage provisioned
β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
| Path | Purpose |
|---|---|
/ansible/playbooks/ |
Orchestration playbooks |
/ansible/roles/ |
Ansible roles (microk8s, microceph, argocd, traefik, istio-helm) |
/terraform/lab/infrastructure/ |
Proxmox VM provisioning |
/kubernetes/argocd/ |
ArgoCD applications and configuration |
gitlab.dezr.in/lab/infrastructure/argocd/k8s-inf-ss.git - App-of-Apps repositorygitlab.dezr.in/lab/infrastructure/applications/{app-name}.git - Individual application repositoriesThis is a production-grade, fully automated infrastructure that:
Use the Markup Template to generate a ReadMe style file for each documentation or Wiki page from here: MakeAReadMe .
Pull requests are welcome. For major changes, please open an issue first to discuss what you would like to change.
Please make sure to update tests as appropriate.
MIT License
Copyright (c) 2024 Bradley Comerford
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.