This repository contains the complete Infrastructure as Code (IaC) for the Mosher Labs homelab Kubernetes cluster, managed via GitOps principles using ArgoCD.
- Cluster: 3-node k3s cluster
- GitOps Tool: ArgoCD
- Package Manager: Helm
- Ingress: Cloudflare Tunnels (*.benniemosher.dev)
- Storage: NFS (Drobo)
homelab-gitops/
├── bootstrap/ # ArgoCD installation and self-management
│ └── argocd/
├── infrastructure/ # Core cluster services
│ ├── cert-manager/
│ └── ingress-nginx/
└── apps/ # Applications
├── hello-world/
├── pihole/
├── homebridge/
└── jellyfin/
- Install ArgoCD via Helm (one-time bootstrap)
- Apply ArgoCD Application to manage itself from this repo
- All subsequent changes via Git commits
| App | Purpose | Status |
|---|---|---|
| ArgoCD | GitOps CD tool | ✅ Active |
| hello-world | Testing | 🚧 In Progress |
| PiHole | DNS/Ad-blocking | 📋 Planned |
| Homebridge | HomeKit automation | 📋 Planned |
| Jellyfin | Media server | 📋 Planned |
# Set your kubeconfig
export KUBECONFIG=~/k3s.yaml
# Watch ArgoCD apps
k9s
# Check ArgoCD status
argocd app listUpon first clone, install the pre-commit hooks.
pre-commit installTo run pre-commit hooks locally, without a git commit.
pre-commit run -a --all-filesTo update pre-commit hooks, this ideally should be ran before a pull request is merged.
pre-commit autoupdate