A comprehensive Kubernetes homelab deployment using GitOps principles with ArgoCD. This repository manages the deployment of various self-hosted applications through Helm charts and ArgoCD automation.
This homelab setup provides a complete self-hosted infrastructure including:
- Identity & Authentication: Authentik SSO
- Storage: Longhorn distributed storage
- Monitoring: Prometheus, Grafana, Loki stack
- Productivity: Nextcloud, Mattermost, GitLab
- Home Automation: Home Assistant
- Development: Code Server, LocalStack
- Utilities: Homer dashboard, Linkding bookmarks, Uptime Kuma, Hashicorp Vault
- ArgoCD monitors this Git repository and automatically syncs changes to the Kubernetes cluster
- Each application is defined as an ArgoCD Application resource in
/apps/templates/ - Application configurations are stored as Helm charts with upstream dependencies
-
Main Apps Chart (
/apps/)- Orchestrates all applications as ArgoCD Application resources
- Uses Helm templating to generate ArgoCD Application manifests
- Global values in
values.yamlcontrol cluster-wide settings
-
Application Templates (
/apps/templates/)- ArgoCD Application manifests for each service
- Configured with upstream Helm repositories and custom values
- Helm values live in
/apps-values/and are referenced with the$valuesmulti-source pattern - Secrets are not stored in values: charts reference on-cluster Secrets by name (
secretKeyRef,envFromSecret,configSecret, ...), and those Secrets are created from Vault by theapp-secretskustomization via argocd-vault-plugin - Includes notifications, health checks, and sync policies
-
Kustomizations (
/kustomizations/)- Kubernetes resource customizations for specific applications
- Used for complex configurations requiring custom manifests
-
Automated Updates
- Renovate Bot: Automatically creates PRs for dependency updates
- K3s Updates: System components updated via Rancher's system-upgrade-controller
- Custom Regex Managers: Track versions for various components
├── apps/ # Main Helm chart orchestrating all applications
│ ├── Chart.yaml # Main chart definition
│ ├── values.yaml # Global cluster settings
│ └── templates/ # ArgoCD Application manifests
│ ├── nextcloud.yaml
│ ├── home-assistant.yaml
│ ├── authentik.yaml
│ └── ...
├── apps-values/ # Helm values referenced by child Applications via $values
│ ├── nextcloud.yaml
│ ├── longhorn.yaml
│ └── ...
├── kustomizations/ # Custom Kubernetes resources
│ ├── app-secrets/ # Vault-backed Secrets consumed by the Helm apps
│ ├── home-assistant/
│ ├── rabbitmq-operator/
│ └── ...
├── auto_upgrades/ # K3s system upgrade configurations
└── renovate.json # Automated dependency updates
This project is licensed under the MIT License - see the LICENSE file for details.
- @Smiggiddy - https://smig.tech
Note: This is a personal homelab configuration. Adjust values and configurations according to your specific requirements and environment.