Files
homelab-manifests/argocd-apps/homelab.yaml
T
2026-01-07 10:56:15 +01:00

858 lines
19 KiB
YAML

---
# 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
---
# 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
---
# Headlamp
apiVersion: argoproj.io/v1alpha1
kind: Application
metadata:
name: headlamp
namespace: argocd
finalizers:
- resources-finalizer.argocd.argoproj.io
spec:
project: homelab
source:
repoURL: https://gitea.dooplex.hu/admin/homelab-manifests.git
targetRevision: main
path: headlamp-system
destination:
server: https://kubernetes.default.svc
namespace: headlamp-system
syncPolicy:
syncOptions:
- CreateNamespace=true
- PruneLast=true
---
# Homepage
apiVersion: argoproj.io/v1alpha1
kind: Application
metadata:
name: homepage
namespace: argocd
finalizers:
- resources-finalizer.argocd.argoproj.io
spec:
project: homelab
source:
repoURL: https://gitea.dooplex.hu/admin/homelab-manifests.git
targetRevision: main
path: homepage-system
destination:
server: https://kubernetes.default.svc
namespace: homepage-system
syncPolicy:
syncOptions:
- CreateNamespace=true
- PruneLast=true
---
# Code-server
apiVersion: argoproj.io/v1alpha1
kind: Application
metadata:
name: code-server
namespace: argocd
finalizers:
- resources-finalizer.argocd.argoproj.io
spec:
project: homelab
source:
repoURL: https://gitea.dooplex.hu/admin/homelab-manifests.git
targetRevision: main
path: code-system
destination:
server: https://kubernetes.default.svc
namespace: code-system
syncPolicy:
syncOptions:
- CreateNamespace=true
- PruneLast=true
---
# Plantit
apiVersion: argoproj.io/v1alpha1
kind: Application
metadata:
name: plantit
namespace: argocd
finalizers:
- resources-finalizer.argocd.argoproj.io
spec:
project: homelab
source:
repoURL: https://gitea.dooplex.hu/admin/homelab-manifests.git
targetRevision: main
path: plantit-system
destination:
server: https://kubernetes.default.svc
namespace: plantit-system
syncPolicy:
syncOptions:
- CreateNamespace=true
- PruneLast=true
---
# Fileshare (gokapi)
apiVersion: argoproj.io/v1alpha1
kind: Application
metadata:
name: fileshare
namespace: argocd
finalizers:
- resources-finalizer.argocd.argoproj.io
spec:
project: homelab
source:
repoURL: https://gitea.dooplex.hu/admin/homelab-manifests.git
targetRevision: main
path: fileshare-system
destination:
server: https://kubernetes.default.svc
namespace: fileshare-system
syncPolicy:
syncOptions:
- CreateNamespace=true
- PruneLast=true
---
# Arcade (ROMM)
apiVersion: argoproj.io/v1alpha1
kind: Application
metadata:
name: arcade
namespace: argocd
finalizers:
- resources-finalizer.argocd.argoproj.io
spec:
project: homelab
source:
repoURL: https://gitea.dooplex.hu/admin/homelab-manifests.git
targetRevision: main
path: arcade-system
destination:
server: https://kubernetes.default.svc
namespace: arcade-system
syncPolicy:
syncOptions:
- CreateNamespace=true
- PruneLast=true
---
# Workout (wger)
apiVersion: argoproj.io/v1alpha1
kind: Application
metadata:
name: workout
namespace: argocd
finalizers:
- resources-finalizer.argocd.argoproj.io
spec:
project: homelab
source:
repoURL: https://gitea.dooplex.hu/admin/homelab-manifests.git
targetRevision: main
path: workout-system
destination:
server: https://kubernetes.default.svc
namespace: workout-system
syncPolicy:
syncOptions:
- CreateNamespace=true
- PruneLast=true
---
# Wanderer
apiVersion: argoproj.io/v1alpha1
kind: Application
metadata:
name: wanderer
namespace: argocd
finalizers:
- resources-finalizer.argocd.argoproj.io
spec:
project: homelab
source:
repoURL: https://gitea.dooplex.hu/admin/homelab-manifests.git
targetRevision: main
path: wanderer-system
destination:
server: https://kubernetes.default.svc
namespace: wanderer-system
syncPolicy:
syncOptions:
- CreateNamespace=true
- PruneLast=true
---
# Opengist
apiVersion: argoproj.io/v1alpha1
kind: Application
metadata:
name: opengist
namespace: argocd
finalizers:
- resources-finalizer.argocd.argoproj.io
spec:
project: homelab
source:
repoURL: https://gitea.dooplex.hu/admin/homelab-manifests.git
targetRevision: main
path: opengist-system
destination:
server: https://kubernetes.default.svc
namespace: opengist-system
syncPolicy:
syncOptions:
- CreateNamespace=true
- PruneLast=true
---
# zipline
apiVersion: argoproj.io/v1alpha1
kind: Application
metadata:
name: zipline
namespace: argocd
finalizers:
- resources-finalizer.argocd.argoproj.io
spec:
project: homelab
source:
repoURL: https://gitea.dooplex.hu/admin/homelab-manifests.git
targetRevision: main
path: zipline-system
destination:
server: https://kubernetes.default.svc
namespace: zipline-system
syncPolicy:
syncOptions:
- CreateNamespace=true
- PruneLast=true
---
# Crafty Controller (minecraft server manager)
apiVersion: argoproj.io/v1alpha1
kind: Application
metadata:
name: crafty
namespace: argocd
finalizers:
- resources-finalizer.argocd.argoproj.io
spec:
project: homelab
source:
repoURL: https://gitea.dooplex.hu/admin/homelab-manifests.git
targetRevision: main
path: crafty-system
destination:
server: https://kubernetes.default.svc
namespace: crafty-system
syncPolicy:
syncOptions:
- CreateNamespace=true
- PruneLast=true
---