Files
homelab-manifests/argocd-apps/homelab.yaml
T
2025-12-27 16:41:41 +01:00

529 lines
12 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
---
# 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
---