Files
homelab-manifests/argocd-apps/homelab.yaml
T
2025-12-18 15:56:04 +01:00

195 lines
4.4 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/*
---
# 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
---