diff --git a/longhorn/backblaze-secrets.yaml b/longhorn/backblaze-secrets.yaml new file mode 100644 index 0000000..1c46d53 --- /dev/null +++ b/longhorn/backblaze-secrets.yaml @@ -0,0 +1,27 @@ +apiVersion: external-secrets.io/v1 +kind: ExternalSecret +metadata: + name: backblaze-secrets + namespace: longhorn-system +spec: + refreshInterval: "1h" + secretStoreRef: + name: vault-external-secrets-store + kind: ClusterSecretStore + target: + name: backblaze-secret + creationPolicy: Owner + data: + - secretKey: AWS_ACCESS_KEY_ID + remoteRef: + key: backblaze + property: key-id + - secretKey: AWS_SECRET_ACCESS_KEY + remoteRef: + key: backblaze + property: application-key + - secretKey: AWS_ENDPOINTS + remoteRef: + key: backblaze + property: endpoint + diff --git a/longhorn/longhorn-values.yaml b/longhorn/longhorn-values.yaml new file mode 100644 index 0000000..ebb4a12 --- /dev/null +++ b/longhorn/longhorn-values.yaml @@ -0,0 +1,4 @@ +defaultSettings: + defaultDataPath: "" # Disables the default SD card path + defaultReplicaCount: 3 + createDefaultDiskOnLabeledNodes: true diff --git a/longhorn/weekly-backups.yaml b/longhorn/weekly-backups.yaml new file mode 100644 index 0000000..7b6e098 --- /dev/null +++ b/longhorn/weekly-backups.yaml @@ -0,0 +1,12 @@ +apiVersion: longhorn.io/v1beta2 +kind: RecurringJob +metadata: + name: weekly-app-backup + namespace: longhorn-system +spec: + task: "backup" + cron: "0 4 * * 0" + retain: 4 + concurrency: 1 + groups: + - app-config-group diff --git a/services/abs-kosync-bridge/abs-kosync-deployment.yaml b/services/abs-kosync-bridge/abs-kosync-deployment.yaml index eed067b..bcff49e 100644 --- a/services/abs-kosync-bridge/abs-kosync-deployment.yaml +++ b/services/abs-kosync-bridge/abs-kosync-deployment.yaml @@ -44,9 +44,8 @@ spec: restartPolicy: Always volumes: - name: abs-kosync-data - nfs: - server: birdfeeder2.home.nest - path: /k3s/abs-kosync-bridge + persistentVolumeClaim: + claimName: abs-kosync-data-pvc - name: abs-kosync-books nfs: server: robin.home.nest @@ -55,3 +54,18 @@ spec: nfs: server: robin.home.nest path: /yarr/media/audiobooks +--- +apiVersion: v1 +kind: PersistentVolumeClaim +metadata: + name: abs-kosync-data-pvc + labels: + recurring-job.longhorn.io/source: "enabled" + recurring-job-group.longhorn.io/app-config-group: "enabled" +spec: + accessModes: + - ReadWriteOnce + storageClassName: longhorn + resources: + requests: + storage: 5Gi diff --git a/services/audiobookshelf/audiobookshelf-deployment.yaml b/services/audiobookshelf/audiobookshelf-deployment.yaml index ec01a31..0ab884e 100644 --- a/services/audiobookshelf/audiobookshelf-deployment.yaml +++ b/services/audiobookshelf/audiobookshelf-deployment.yaml @@ -52,10 +52,38 @@ spec: server: robin.home.nest path: /yarr/media/podcasts - name: audiobookshelf-config - nfs: - server: birdfeeder2.home.nest - path: /k3s/audiobookshelf/config + persistentVolumeClaim: + claimName: audiobookshelf-config-pvc - name: audiobookshelf-metadata - nfs: - server: birdfeeder2.home.nest - path: /k3s/audiobookshelf/metadata + persistentVolumeClaim: + claimName: audiobookshelf-metadata-pvc +--- +apiVersion: v1 +kind: PersistentVolumeClaim +metadata: + name: audiobookshelf-config-pvc + labels: + recurring-job.longhorn.io/source: "enabled" + recurring-job-group.longhorn.io/app-config-group: "enabled" +spec: + accessModes: + - ReadWriteOnce + storageClassName: longhorn + resources: + requests: + storage: 3Mi +--- +apiVersion: v1 +kind: PersistentVolumeClaim +metadata: + name: audiobookshelf-metadata-pvc + labels: + recurring-job.longhorn.io/source: "enabled" + recurring-job-group.longhorn.io/app-config-group: "enabled" +spec: + accessModes: + - ReadWriteOnce + storageClassName: longhorn + resources: + requests: + storage: 10Mi diff --git a/services/bazarr-anime/bazarr-anime-deployment.yaml b/services/bazarr-anime/bazarr-anime-deployment.yaml index 0396ff1..fd5ed67 100644 --- a/services/bazarr-anime/bazarr-anime-deployment.yaml +++ b/services/bazarr-anime/bazarr-anime-deployment.yaml @@ -44,10 +44,24 @@ spec: restartPolicy: Always volumes: - name: bazarr-anime-config - nfs: - server: birdfeeder2.home.nest - path: /k3s/bazarr-anime + persistentVolumeClaim: + claimName: bazarr-anime-config-pvc - name: bazarr-anime-media nfs: server: robin.home.nest path: /yarr/media +--- +apiVersion: v1 +kind: PersistentVolumeClaim +metadata: + name: bazarr-anime-config-pvc + labels: + recurring-job.longhorn.io/source: "enabled" + recurring-job-group.longhorn.io/app-config-group: "enabled" +spec: + accessModes: + - ReadWriteOnce + storageClassName: longhorn + resources: + requests: + storage: 10Mi diff --git a/services/bazarr/bazarr-deployment.yaml b/services/bazarr/bazarr-deployment.yaml index 97da3d6..98a01d4 100644 --- a/services/bazarr/bazarr-deployment.yaml +++ b/services/bazarr/bazarr-deployment.yaml @@ -44,10 +44,24 @@ spec: restartPolicy: Always volumes: - name: bazarr-config - nfs: - server: birdfeeder2.home.nest - path: /k3s/bazarr + persistentVolumeClaim: + claimName: bazarr-config-pvc - name: bazarr-media nfs: server: robin.home.nest path: /yarr/media +--- +apiVersion: v1 +kind: PersistentVolumeClaim +metadata: + name: bazarr-config-pvc + labels: + recurring-job.longhorn.io/source: "enabled" + recurring-job-group.longhorn.io/app-config-group: "enabled" +spec: + accessModes: + - ReadWriteOnce + storageClassName: longhorn + resources: + requests: + storage: 5Mi diff --git a/services/calibre-web/calibre-web-deployment.yaml b/services/calibre-web/calibre-web-deployment.yaml index 4faa242..47c3d5d 100644 --- a/services/calibre-web/calibre-web-deployment.yaml +++ b/services/calibre-web/calibre-web-deployment.yaml @@ -49,10 +49,24 @@ spec: restartPolicy: Always volumes: - name: calibre-web-config - nfs: - server: birdfeeder2.home.nest - path: /k3s/calibre-web + persistentVolumeClaim: + claimName: calibre-web-config-pvc - name: calibre-web-library nfs: server: robin.home.nest path: /yarr/media/books/calibre-library +--- +apiVersion: v1 +kind: PersistentVolumeClaim +metadata: + name: calibre-web-config-pvc + labels: + recurring-job.longhorn.io/source: "enabled" + recurring-job-group.longhorn.io/app-config-group: "enabled" +spec: + accessModes: + - ReadWriteOnce + storageClassName: longhorn + resources: + requests: + storage: 20Mi diff --git a/services/deluge/deluge-deployment.yaml b/services/deluge/deluge-deployment.yaml index 8ee594e..79ece03 100644 --- a/services/deluge/deluge-deployment.yaml +++ b/services/deluge/deluge-deployment.yaml @@ -55,10 +55,24 @@ spec: restartPolicy: Always volumes: - name: deluge-config - nfs: - server: birdfeeder2.home.nest - path: /k3s/deluge + persistentVolumeClaim: + claimName: deluge-config-pvc - name: deluge-media nfs: server: robin.home.nest path: /yarr/downloads +--- +apiVersion: v1 +kind: PersistentVolumeClaim +metadata: + name: deluge-config-pvc + labels: + recurring-job.longhorn.io/source: "enabled" + recurring-job-group.longhorn.io/app-config-group: "enabled" +spec: + accessModes: + - ReadWriteOnce + storageClassName: longhorn + resources: + requests: + storage: 20Mi diff --git a/services/foundryvtt/foundry-vtt-deployment.yaml b/services/foundryvtt/foundry-vtt-deployment.yaml index 6b12018..56744be 100644 --- a/services/foundryvtt/foundry-vtt-deployment.yaml +++ b/services/foundryvtt/foundry-vtt-deployment.yaml @@ -41,6 +41,20 @@ spec: restartPolicy: Always volumes: - name: foundry-vtt-volume - nfs: - server: birdfeeder2.home.nest - path: /k3s/foundryvtt + persistentVolumeClaim: + claimName: foundry-vtt-data-pvc +--- +apiVersion: v1 +kind: PersistentVolumeClaim +metadata: + name: foundry-vtt-data-pvc + labels: + recurring-job.longhorn.io/source: "enabled" + recurring-job-group.longhorn.io/app-config-group: "enabled" +spec: + accessModes: + - ReadWriteOnce + storageClassName: longhorn + resources: + requests: + storage: 10Gi diff --git a/services/jellyfin/jellyfin-deployment.yaml b/services/jellyfin/jellyfin-deployment.yaml index 8de5746..06a12d7 100644 --- a/services/jellyfin/jellyfin-deployment.yaml +++ b/services/jellyfin/jellyfin-deployment.yaml @@ -44,14 +44,42 @@ spec: restartPolicy: Always volumes: - name: jellyfin-config - nfs: - server: birdfeeder2.home.nest - path: /k3s/jellyfin/config + persistentVolumeClaim: + claimName: jellyfin-config-pvc - name: jellyfin-cache - nfs: - server: birdfeeder2.home.nest - path: /k3s/jellyfin/cache + persistentVolumeClaim: + claimName: jellyfin-cache-pvc - name: yarr nfs: server: robin.home.nest path: /yarr/media +--- +apiVersion: v1 +kind: PersistentVolumeClaim +metadata: + name: jellyfin-config-pvc + labels: + recurring-job.longhorn.io/source: "enabled" + recurring-job-group.longhorn.io/app-config-group: "enabled" +spec: + accessModes: + - ReadWriteOnce + storageClassName: longhorn + resources: + requests: + storage: 3Gi +--- +apiVersion: v1 +kind: PersistentVolumeClaim +metadata: + name: jellyfin-cache-pvc + labels: + recurring-job.longhorn.io/source: "enabled" + recurring-job-group.longhorn.io/app-config-group: "enabled" +spec: + accessModes: + - ReadWriteOnce + storageClassName: longhorn + resources: + requests: + storage: 3Gi diff --git a/services/jellyseerr/jellyseerr-deployment.yaml b/services/jellyseerr/jellyseerr-deployment.yaml index 543ccf3..b807b9b 100644 --- a/services/jellyseerr/jellyseerr-deployment.yaml +++ b/services/jellyseerr/jellyseerr-deployment.yaml @@ -44,6 +44,20 @@ spec: restartPolicy: Always volumes: - name: jellyseerr-volume - nfs: - server: birdfeeder2.home.nest - path: /k3s/jellyseerr + persistentVolumeClaim: + claimName: jellyseerr-data-pvc +--- +apiVersion: v1 +kind: PersistentVolumeClaim +metadata: + name: jellyseerr-data-pvc + labels: + recurring-job.longhorn.io/source: "enabled" + recurring-job-group.longhorn.io/app-config-group: "enabled" +spec: + accessModes: + - ReadWriteOnce + storageClassName: longhorn + resources: + requests: + storage: 20Mi diff --git a/services/lazy-librarian/lazylibrarian-deployment.yaml b/services/lazy-librarian/lazylibrarian-deployment.yaml index b8ac28e..b5a3fef 100644 --- a/services/lazy-librarian/lazylibrarian-deployment.yaml +++ b/services/lazy-librarian/lazylibrarian-deployment.yaml @@ -48,9 +48,8 @@ spec: restartPolicy: Always volumes: - name: lazylibrarian-config - nfs: - server: birdfeeder2.home.nest - path: /k3s/lazy-librarian + persistentVolumeClaim: + claimName: lazylibrarian-config-pvc - name: lazylibrarian-downloads nfs: server: robin.home.nest @@ -59,3 +58,18 @@ spec: nfs: server: robin.home.nest path: /yarr +--- +apiVersion: v1 +kind: PersistentVolumeClaim +metadata: + name: lazylibrarian-config-pvc + labels: + recurring-job.longhorn.io/source: "enabled" + recurring-job-group.longhorn.io/app-config-group: "enabled" +spec: + accessModes: + - ReadWriteOnce + storageClassName: longhorn + resources: + requests: + storage: 4Gi diff --git a/services/lidarr/lidarr-deployment.yaml b/services/lidarr/lidarr-deployment.yaml index 45766ca..b6cf3d3 100644 --- a/services/lidarr/lidarr-deployment.yaml +++ b/services/lidarr/lidarr-deployment.yaml @@ -48,9 +48,8 @@ spec: restartPolicy: Always volumes: - name: lidarr-config - nfs: - server: birdfeeder2.home.nest - path: /k3s/lidarr + persistentVolumeClaim: + claimName: lidarr-config-pvc - name: lidarr-data nfs: server: robin.home.nest @@ -59,3 +58,18 @@ spec: nfs: server: robin.home.nest path: /yarr/downloads +--- +apiVersion: v1 +kind: PersistentVolumeClaim +metadata: + name: lidarr-config-pvc + labels: + recurring-job.longhorn.io/source: "enabled" + recurring-job-group.longhorn.io/app-config-group: "enabled" +spec: + accessModes: + - ReadWriteOnce + storageClassName: longhorn + resources: + requests: + storage: 1Gi diff --git a/services/navidrome/navidrome-deployment.yaml b/services/navidrome/navidrome-deployment.yaml index 09baf56..a62037c 100644 --- a/services/navidrome/navidrome-deployment.yaml +++ b/services/navidrome/navidrome-deployment.yaml @@ -44,10 +44,24 @@ spec: restartPolicy: Always volumes: - name: navidrome-data - nfs: - server: birdfeeder2.home.nest - path: /k3s/navidrome + persistentVolumeClaim: + claimName: navidrome-config-pvc - name: navidrome-media nfs: server: robin.home.nest path: /yarr/media/music +--- +apiVersion: v1 +kind: PersistentVolumeClaim +metadata: + name: navidrome-config-pvc + labels: + recurring-job.longhorn.io/source: "enabled" + recurring-job-group.longhorn.io/app-config-group: "enabled" +spec: + accessModes: + - ReadWriteOnce + storageClassName: longhorn + resources: + requests: + storage: 1Gi diff --git a/services/omada-controller/omada-controller-deployment.yaml b/services/omada-controller/omada-controller-deployment.yaml index 0272c6e..5e84330 100644 --- a/services/omada-controller/omada-controller-deployment.yaml +++ b/services/omada-controller/omada-controller-deployment.yaml @@ -94,11 +94,39 @@ spec: mountPath: /opt/tplink/EAPController/logs volumes: - name: omada-data - nfs: - server: birdfeeder2.home.nest - path: /k3s/omada-controller/data + persistentVolumeClaim: + claimName: omada-data-pvc - name: omada-logs - nfs: - server: birdfeeder2.home.nest - path: /k3s/omada-controller/logs + persistentVolumeClaim: + claimName: omada-logs-pvc restartPolicy: Always +--- +apiVersion: v1 +kind: PersistentVolumeClaim +metadata: + name: omada-data-pvc + labels: + recurring-job.longhorn.io/source: "enabled" + recurring-job-group.longhorn.io/app-config-group: "enabled" +spec: + accessModes: + - ReadWriteOnce + storageClassName: longhorn + resources: + requests: + storage: 1Gi +--- +apiVersion: v1 +kind: PersistentVolumeClaim +metadata: + name: omada-logs-pvc + labels: + recurring-job.longhorn.io/source: "enabled" + recurring-job-group.longhorn.io/app-config-group: "enabled" +spec: + accessModes: + - ReadWriteOnce + storageClassName: longhorn + resources: + requests: + storage: 100Mi diff --git a/services/prowlarr/prowlarr-deployment.yaml b/services/prowlarr/prowlarr-deployment.yaml index b50e638..105c7ad 100644 --- a/services/prowlarr/prowlarr-deployment.yaml +++ b/services/prowlarr/prowlarr-deployment.yaml @@ -42,6 +42,20 @@ spec: restartPolicy: Always volumes: - name: prowlarr-config - nfs: - server: birdfeeder2.home.nest - path: /k3s/prowlarr + persistentVolumeClaim: + claimName: prowlarr-config-pvc +--- +apiVersion: v1 +kind: PersistentVolumeClaim +metadata: + name: prowlarr-config-pvc + labels: + recurring-job.longhorn.io/source: "enabled" + recurring-job-group.longhorn.io/app-config-group: "enabled" +spec: + accessModes: + - ReadWriteOnce + storageClassName: longhorn + resources: + requests: + storage: 200Mi diff --git a/services/radarr-anime/radarr-anime-deployment.yaml b/services/radarr-anime/radarr-anime-deployment.yaml index a9d6840..1410473 100644 --- a/services/radarr-anime/radarr-anime-deployment.yaml +++ b/services/radarr-anime/radarr-anime-deployment.yaml @@ -46,9 +46,8 @@ spec: restartPolicy: Always volumes: - name: radarr-anime-config - nfs: - server: birdfeeder2.home.nest - path: /k3s/radarr-anime + persistentVolumeClaim: + claimName: radarr-anime-config-pvc - name: radarr-anime-data nfs: server: robin.home.nest @@ -57,3 +56,18 @@ spec: nfs: server: robin.home.nest path: /yarr/downloads +--- +apiVersion: v1 +kind: PersistentVolumeClaim +metadata: + name: radarr-anime-config-pvc + labels: + recurring-job.longhorn.io/source: "enabled" + recurring-job-group.longhorn.io/app-config-group: "enabled" +spec: + accessModes: + - ReadWriteOnce + storageClassName: longhorn + resources: + requests: + storage: 150Mi diff --git a/services/radarr/radarr-deployment.yaml b/services/radarr/radarr-deployment.yaml index e13c502..66dc251 100644 --- a/services/radarr/radarr-deployment.yaml +++ b/services/radarr/radarr-deployment.yaml @@ -46,9 +46,8 @@ spec: restartPolicy: Always volumes: - name: radarr-config - nfs: - server: birdfeeder2.home.nest - path: /k3s/radarr + persistentVolumeClaim: + claimName: radarr-config-pvc - name: radarr-data nfs: server: robin.home.nest @@ -57,3 +56,18 @@ spec: nfs: server: robin.home.nest path: /yarr/downloads +--- +apiVersion: v1 +kind: PersistentVolumeClaim +metadata: + name: radarr-config-pvc + labels: + recurring-job.longhorn.io/source: "enabled" + recurring-job-group.longhorn.io/app-config-group: "enabled" +spec: + accessModes: + - ReadWriteOnce + storageClassName: longhorn + resources: + requests: + storage: 150Mi diff --git a/services/sabnzbd/sabnzbd-deployment.yaml b/services/sabnzbd/sabnzbd-deployment.yaml index 00dd10c..57331c3 100644 --- a/services/sabnzbd/sabnzbd-deployment.yaml +++ b/services/sabnzbd/sabnzbd-deployment.yaml @@ -44,10 +44,24 @@ spec: restartPolicy: Always volumes: - name: sabnzbd-config - nfs: - server: birdfeeder2.home.nest - path: /k3s/sabnzbd + persistentVolumeClaim: + claimName: sabnzbd-config-pvc - name: sabnzbd-downloads nfs: server: robin.home.nest path: /yarr/downloads +--- +apiVersion: v1 +kind: PersistentVolumeClaim +metadata: + name: sabnzbd-config-pvc + labels: + recurring-job.longhorn.io/source: "enabled" + recurring-job-group.longhorn.io/app-config-group: "enabled" +spec: + accessModes: + - ReadWriteOnce + storageClassName: longhorn + resources: + requests: + storage: 50Mi diff --git a/services/slskd/slskd-deployment.yaml b/services/slskd/slskd-deployment.yaml index 9fadf3e..e314dc8 100644 --- a/services/slskd/slskd-deployment.yaml +++ b/services/slskd/slskd-deployment.yaml @@ -55,10 +55,24 @@ spec: restartPolicy: Always volumes: - name: slskd-app - nfs: - server: birdfeeder2.home.nest - path: /k3s/slskd + persistentVolumeClaim: + claimName: slskd-app-pvc - name: slskd-downloads nfs: server: robin.home.nest path: /yarr/downloads +--- +apiVersion: v1 +kind: PersistentVolumeClaim +metadata: + name: slskd-app-pvc + labels: + recurring-job.longhorn.io/source: "enabled" + recurring-job-group.longhorn.io/app-config-group: "enabled" +spec: + accessModes: + - ReadWriteOnce + storageClassName: longhorn + resources: + requests: + storage: 50Mi diff --git a/services/sonarr-anime/sonarr-anime-deployment.yaml b/services/sonarr-anime/sonarr-anime-deployment.yaml index 3da895c..35ce516 100644 --- a/services/sonarr-anime/sonarr-anime-deployment.yaml +++ b/services/sonarr-anime/sonarr-anime-deployment.yaml @@ -46,9 +46,8 @@ spec: restartPolicy: Always volumes: - name: sonarr-anime-config - nfs: - server: birdfeeder2.home.nest - path: /k3s/sonarr-anime + persistentVolumeClaim: + claimName: sonarr-anime-config-pvc - name: sonarr-anime-data nfs: server: robin.home.nest @@ -57,3 +56,18 @@ spec: nfs: server: robin.home.nest path: /yarr/downloads +--- +apiVersion: v1 +kind: PersistentVolumeClaim +metadata: + name: sonarr-anime-config-pvc + labels: + recurring-job.longhorn.io/source: "enabled" + recurring-job-group.longhorn.io/app-config-group: "enabled" +spec: + accessModes: + - ReadWriteOnce + storageClassName: longhorn + resources: + requests: + storage: 200Mi diff --git a/services/sonarr/sonarr-deployment.yaml b/services/sonarr/sonarr-deployment.yaml index 525c87c..7ad296b 100644 --- a/services/sonarr/sonarr-deployment.yaml +++ b/services/sonarr/sonarr-deployment.yaml @@ -46,9 +46,8 @@ spec: restartPolicy: Always volumes: - name: sonarr-config - nfs: - server: birdfeeder2.home.nest - path: /k3s/sonarr + persistentVolumeClaim: + claimName: sonarr-config-pvc - name: sonarr-data nfs: server: robin.home.nest @@ -57,3 +56,18 @@ spec: nfs: server: robin.home.nest path: /yarr/downloads +--- +apiVersion: v1 +kind: PersistentVolumeClaim +metadata: + name: sonarr-config-pvc + labels: + recurring-job.longhorn.io/source: "enabled" + recurring-job-group.longhorn.io/app-config-group: "enabled" +spec: + accessModes: + - ReadWriteOnce + storageClassName: longhorn + resources: + requests: + storage: 150Mi diff --git a/services/vaultwarden/vaultwarden-deployment.yaml b/services/vaultwarden/vaultwarden-deployment.yaml index 398d8e6..96ca68a 100644 --- a/services/vaultwarden/vaultwarden-deployment.yaml +++ b/services/vaultwarden/vaultwarden-deployment.yaml @@ -42,6 +42,20 @@ spec: restartPolicy: Always volumes: - name: vaultwarden-volume - nfs: - server: birdfeeder2.home.nest - path: /k3s/vaultwarden + persistentVolumeClaim: + claimName: vaultwarden-data-pvc +--- +apiVersion: v1 +kind: PersistentVolumeClaim +metadata: + name: vaultwarden-data-pvc + labels: + recurring-job.longhorn.io/source: "enabled" + recurring-job-group.longhorn.io/app-config-group: "enabled" +spec: + accessModes: + - ReadWriteOnce + storageClassName: longhorn + resources: + requests: + storage: 40Mi