--- # ArgoCD Project for homelab applications # Projects provide logical grouping and access control apiVersion: argoproj.io/v1alpha1 kind: AppProject metadata: name: homelab namespace: argocd spec: description: Viktor's homelab applications # Allow deploying to any namespace destinations: - namespace: '*' server: https://kubernetes.default.svc # Allow any cluster-scoped resources clusterResourceWhitelist: - group: '*' kind: '*' # Allow all namespaced resources namespaceResourceWhitelist: - group: '*' kind: '*' # Source repos this project can pull from sourceRepos: - https://gitea.dooplex.hu/admin/homelab-manifests.git - https://gitea.dooplex.hu/admin/* # Helm repos - https://mojo2600.github.io/pihole-kubernetes/ - https://kubernetes-sigs.github.io/external-dns/ - https://raw.githubusercontent.com/plexinc/pms-docker/gh-pages --- # Servarr Application (sonarr, radarr, prowlarr, qbittorrent) apiVersion: argoproj.io/v1alpha1 kind: Application metadata: name: servarr namespace: argocd finalizers: - resources-finalizer.argocd.argoproj.io spec: project: homelab source: repoURL: https://gitea.dooplex.hu/admin/homelab-manifests.git targetRevision: main path: servarr-system destination: server: https://kubernetes.default.svc namespace: servarr-system syncPolicy: # Start with manual sync until you're comfortable # automated: # prune: true # selfHeal: true # allowEmpty: false syncOptions: - CreateNamespace=true - PruneLast=true - ApplyOutOfSyncOnly=true # Retry on transient failures retry: limit: 3 backoff: duration: 5s factor: 2 maxDuration: 3m --- # Paperless-ngx apiVersion: argoproj.io/v1alpha1 kind: Application metadata: name: paperless namespace: argocd finalizers: - resources-finalizer.argocd.argoproj.io spec: project: homelab source: repoURL: https://gitea.dooplex.hu/admin/homelab-manifests.git targetRevision: main path: paperless-system destination: server: https://kubernetes.default.svc namespace: paperless-system syncPolicy: syncOptions: - CreateNamespace=true - PruneLast=true --- # ActualBudget apiVersion: argoproj.io/v1alpha1 kind: Application metadata: name: actualbudget namespace: argocd finalizers: - resources-finalizer.argocd.argoproj.io spec: project: homelab source: repoURL: https://gitea.dooplex.hu/admin/homelab-manifests.git targetRevision: main path: actualbudget-system destination: server: https://kubernetes.default.svc namespace: actualbudget-system syncPolicy: syncOptions: - CreateNamespace=true - PruneLast=true --- # AudioBookshelf apiVersion: argoproj.io/v1alpha1 kind: Application metadata: name: audiobookshelf namespace: argocd finalizers: - resources-finalizer.argocd.argoproj.io spec: project: homelab source: repoURL: https://gitea.dooplex.hu/admin/homelab-manifests.git targetRevision: main path: audiobookshelf-system destination: server: https://kubernetes.default.svc namespace: audiobookshelf-system syncPolicy: syncOptions: - CreateNamespace=true - PruneLast=true --- # Duplicati apiVersion: argoproj.io/v1alpha1 kind: Application metadata: name: duplicati namespace: argocd finalizers: - resources-finalizer.argocd.argoproj.io spec: project: homelab source: repoURL: https://gitea.dooplex.hu/admin/homelab-manifests.git targetRevision: main path: backup-system destination: server: https://kubernetes.default.svc namespace: backup-system syncPolicy: syncOptions: - CreateNamespace=true - PruneLast=true --- # Bookstack apiVersion: argoproj.io/v1alpha1 kind: Application metadata: name: bookstack namespace: argocd finalizers: - resources-finalizer.argocd.argoproj.io spec: project: homelab source: repoURL: https://gitea.dooplex.hu/admin/homelab-manifests.git targetRevision: main path: bookstack-system destination: server: https://kubernetes.default.svc namespace: bookstack-system syncPolicy: syncOptions: - CreateNamespace=true - PruneLast=true --- # Immich apiVersion: argoproj.io/v1alpha1 kind: Application metadata: name: immich namespace: argocd finalizers: - resources-finalizer.argocd.argoproj.io spec: project: homelab source: repoURL: https://gitea.dooplex.hu/admin/homelab-manifests.git targetRevision: main path: immich-system destination: server: https://kubernetes.default.svc namespace: immich-system syncPolicy: syncOptions: - CreateNamespace=true - PruneLast=true --- # Gitea apiVersion: argoproj.io/v1alpha1 kind: Application metadata: name: gitea namespace: argocd finalizers: - resources-finalizer.argocd.argoproj.io spec: project: homelab source: repoURL: https://gitea.dooplex.hu/admin/homelab-manifests.git targetRevision: main path: gitea-system destination: server: https://kubernetes.default.svc namespace: gitea-system syncPolicy: syncOptions: - CreateNamespace=true - PruneLast=true --- # Nextcloud apiVersion: argoproj.io/v1alpha1 kind: Application metadata: name: nextcloud namespace: argocd finalizers: - resources-finalizer.argocd.argoproj.io spec: project: homelab source: repoURL: https://gitea.dooplex.hu/admin/homelab-manifests.git targetRevision: main path: nextcloud-system destination: server: https://kubernetes.default.svc namespace: nextcloud-system syncPolicy: syncOptions: - CreateNamespace=true - PruneLast=true --- # Outline apiVersion: argoproj.io/v1alpha1 kind: Application metadata: name: outline namespace: argocd finalizers: - resources-finalizer.argocd.argoproj.io spec: project: homelab source: repoURL: https://gitea.dooplex.hu/admin/homelab-manifests.git targetRevision: main path: outline-system destination: server: https://kubernetes.default.svc namespace: outline-system syncPolicy: syncOptions: - CreateNamespace=true - PruneLast=true --- # Tandoor apiVersion: argoproj.io/v1alpha1 kind: Application metadata: name: tandoor namespace: argocd finalizers: - resources-finalizer.argocd.argoproj.io spec: project: homelab source: repoURL: https://gitea.dooplex.hu/admin/homelab-manifests.git targetRevision: main path: tandoor-system destination: server: https://kubernetes.default.svc namespace: tandoor-system syncPolicy: syncOptions: - CreateNamespace=true - PruneLast=true --- # Uptimekuma apiVersion: argoproj.io/v1alpha1 kind: Application metadata: name: uptimekuma namespace: argocd finalizers: - resources-finalizer.argocd.argoproj.io spec: project: homelab source: repoURL: https://gitea.dooplex.hu/admin/homelab-manifests.git targetRevision: main path: uptimekuma-system destination: server: https://kubernetes.default.svc namespace: uptimekuma-system syncPolicy: syncOptions: - CreateNamespace=true - PruneLast=true --- # Vaultwarden apiVersion: argoproj.io/v1alpha1 kind: Application metadata: name: vaultwarden namespace: argocd finalizers: - resources-finalizer.argocd.argoproj.io spec: project: homelab source: repoURL: https://gitea.dooplex.hu/admin/homelab-manifests.git targetRevision: main path: vaultwarden-system destination: server: https://kubernetes.default.svc namespace: vaultwarden-system syncPolicy: syncOptions: - CreateNamespace=true - PruneLast=true --- # Pi-hole apiVersion: argoproj.io/v1alpha1 kind: Application metadata: name: pihole namespace: argocd finalizers: - resources-finalizer.argocd.argoproj.io spec: project: homelab source: repoURL: https://mojo2600.github.io/pihole-kubernetes/ chart: pihole targetRevision: 2.35.0 helm: valueFiles: - $values/helm/pihole/values.yaml sources: - repoURL: https://mojo2600.github.io/pihole-kubernetes/ chart: pihole targetRevision: 2.35.0 helm: valueFiles: - $values/helm/pihole/values.yaml - repoURL: https://gitea.dooplex.hu/admin/homelab-manifests.git targetRevision: main ref: values destination: server: https://kubernetes.default.svc namespace: pihole-system syncPolicy: syncOptions: - CreateNamespace=true --- # External-DNS for Pi-hole apiVersion: argoproj.io/v1alpha1 kind: Application metadata: name: external-dns-pihole namespace: argocd finalizers: - resources-finalizer.argocd.argoproj.io spec: project: homelab sources: - repoURL: https://kubernetes-sigs.github.io/external-dns/ chart: external-dns targetRevision: 1.19.0 helm: valueFiles: - $values/helm/external-dns/values.yaml - repoURL: https://gitea.dooplex.hu/admin/homelab-manifests.git targetRevision: main ref: values destination: server: https://kubernetes.default.svc namespace: pihole-system syncPolicy: syncOptions: - CreateNamespace=true --- # Plex apiVersion: argoproj.io/v1alpha1 kind: Application metadata: name: plex namespace: argocd finalizers: - resources-finalizer.argocd.argoproj.io spec: project: homelab sources: - repoURL: https://raw.githubusercontent.com/plexinc/pms-docker/gh-pages chart: plex-media-server targetRevision: 1.3.0 helm: valueFiles: - $values/helm/plex/values.yaml - repoURL: https://gitea.dooplex.hu/admin/homelab-manifests.git targetRevision: main ref: values destination: server: https://kubernetes.default.svc namespace: mediaserver-system syncPolicy: syncOptions: - CreateNamespace=true --- # Calibre apiVersion: argoproj.io/v1alpha1 kind: Application metadata: name: calibre namespace: argocd finalizers: - resources-finalizer.argocd.argoproj.io spec: project: homelab source: repoURL: https://gitea.dooplex.hu/admin/homelab-manifests.git targetRevision: main path: calibre-system destination: server: https://kubernetes.default.svc namespace: calibre-system syncPolicy: syncOptions: - CreateNamespace=true - PruneLast=true --- # Adventurelog apiVersion: argoproj.io/v1alpha1 kind: Application metadata: name: adventurelog namespace: argocd finalizers: - resources-finalizer.argocd.argoproj.io spec: project: homelab source: repoURL: https://gitea.dooplex.hu/admin/homelab-manifests.git targetRevision: main path: adventurelog-system destination: server: https://kubernetes.default.svc namespace: adventurelog-system syncPolicy: syncOptions: - CreateNamespace=true - PruneLast=true --- apiVersion: argoproj.io/v1alpha1 kind: Application metadata: name: cnpg-operator namespace: argocd spec: project: default sources: # Source 1: Helm chart - repoURL: https://cloudnative-pg.github.io/charts chart: cloudnative-pg targetRevision: 0.27.0 helm: releaseName: cnpg # Reference values file from git valueFiles: - $values/database-system/cnpg/values.yaml # Source 2: Values file from git - repoURL: http://gitea.gitea-system.svc.cluster.local:3000/admin/homelab-manifests.git targetRevision: main ref: values destination: server: https://kubernetes.default.svc namespace: cnpg-system syncPolicy: automated: prune: true selfHeal: true syncOptions: - CreateNamespace=true - Replace=true # Important for CRDs - ServerSideApply=true # Better for CRDs retry: limit: 5 backoff: duration: 5s factor: 2 maxDuration: 3m --- # DB-system apiVersion: argoproj.io/v1alpha1 kind: Application metadata: name: database-system namespace: argocd finalizers: - resources-finalizer.argocd.argoproj.io spec: project: homelab source: repoURL: https://gitea.dooplex.hu/admin/homelab-manifests.git targetRevision: main path: database-system destination: server: https://kubernetes.default.svc namespace: database-system syncPolicy: syncOptions: - CreateNamespace=true - PruneLast=true --- apiVersion: argoproj.io/v1alpha1 kind: Application metadata: name: authentik namespace: argocd finalizers: - resources-finalizer.argocd.argoproj.io spec: project: default # Using multiple sources: Helm chart + values from git repo sources: # Source 1: Helm chart from official repo - repoURL: https://charts.goauthentik.io chart: authentik targetRevision: 2025.10.3 helm: releaseName: authentik valueFiles: - $values/auth-system/authentik-values.yaml # Source 2: Values file from your git repo - repoURL: http://gitea.gitea-system.svc.cluster.local:3000/admin/homelab-manifests.git targetRevision: main ref: values destination: server: https://kubernetes.default.svc namespace: auth-system syncPolicy: automated: prune: true selfHeal: true syncOptions: - CreateNamespace=true - ServerSideApply=true retry: limit: 5 backoff: duration: 5s factor: 2 maxDuration: 3m --- # Monitoring (Grafana, Prometheus) apiVersion: argoproj.io/v1alpha1 kind: Application metadata: name: monitoring namespace: argocd finalizers: - resources-finalizer.argocd.argoproj.io spec: project: homelab source: repoURL: https://gitea.dooplex.hu/admin/homelab-manifests.git targetRevision: main path: mon-system destination: server: https://kubernetes.default.svc namespace: mon-system syncPolicy: syncOptions: - CreateNamespace=true - PruneLast=true --- # Termix apiVersion: argoproj.io/v1alpha1 kind: Application metadata: name: termix namespace: argocd finalizers: - resources-finalizer.argocd.argoproj.io spec: project: homelab source: repoURL: https://gitea.dooplex.hu/admin/homelab-manifests.git targetRevision: main path: termix-system destination: server: https://kubernetes.default.svc namespace: termix-system syncPolicy: syncOptions: - CreateNamespace=true - PruneLast=true --- # Privatebin apiVersion: argoproj.io/v1alpha1 kind: Application metadata: name: privatebin namespace: argocd finalizers: - resources-finalizer.argocd.argoproj.io spec: project: homelab source: repoURL: https://gitea.dooplex.hu/admin/homelab-manifests.git targetRevision: main path: privatebin-system destination: server: https://kubernetes.default.svc namespace: privatebin-system syncPolicy: syncOptions: - CreateNamespace=true - PruneLast=true ---