--- # HA Persistent Volumes — Dell NFS primary via keepalived VIP 192.168.2.252 # On Dell failure, VIP moves to HP which serves identical paths via rsync mirror # All PVs use reclaimPolicy: Retain to protect data # ==================== MEDIA (Jellyfin) — ZFS: media-pool/media ==================== apiVersion: v1 kind: PersistentVolume metadata: name: jellyfin-media-pv spec: capacity: storage: 650Gi accessModes: [ReadWriteOnce] persistentVolumeReclaimPolicy: Retain storageClassName: "" nfs: server: 192.168.2.252 path: /data/media/media claimRef: namespace: media name: jellyfin-media-v2-pvc --- apiVersion: v1 kind: PersistentVolume metadata: name: jellyfin-config-pv spec: capacity: storage: 10Gi accessModes: [ReadWriteOnce] persistentVolumeReclaimPolicy: Retain storageClassName: "" nfs: server: 192.168.2.252 path: /data/media/jellyfin-config claimRef: namespace: media name: jellyfin-config-v2-pvc --- apiVersion: v1 kind: PersistentVolume metadata: name: jellyfin-cache-pv spec: capacity: storage: 10Gi accessModes: [ReadWriteOnce] persistentVolumeReclaimPolicy: Retain storageClassName: "" nfs: server: 192.168.2.252 path: /data/media/jellyfin-cache claimRef: namespace: media name: jellyfin-cache-v2-pvc --- # ==================== PHOTOS (Immich) — ZFS: media-pool/photos ==================== apiVersion: v1 kind: PersistentVolume metadata: name: immich-library-pv spec: capacity: storage: 290Gi accessModes: [ReadWriteOnce] persistentVolumeReclaimPolicy: Retain storageClassName: "" nfs: server: 192.168.2.252 path: /data/photos/immich-library claimRef: namespace: media name: immich-library-v2-pvc --- apiVersion: v1 kind: PersistentVolume metadata: name: immich-db-pv spec: capacity: storage: 20Gi accessModes: [ReadWriteOnce] persistentVolumeReclaimPolicy: Retain storageClassName: "" nfs: server: 192.168.2.252 path: /data/photos/immich-db claimRef: namespace: media name: immich-db-v2-pvc --- apiVersion: v1 kind: PersistentVolume metadata: name: immich-ml-cache-pv spec: capacity: storage: 20Gi accessModes: [ReadWriteOnce] persistentVolumeReclaimPolicy: Retain storageClassName: "" nfs: server: 192.168.2.252 path: /data/photos/immich-ml-cache claimRef: namespace: media name: immich-ml-cache-v2-pvc --- apiVersion: v1 kind: PersistentVolume metadata: name: immich-valkey-pv spec: capacity: storage: 1Gi accessModes: [ReadWriteOnce] persistentVolumeReclaimPolicy: Retain storageClassName: "" nfs: server: 192.168.2.252 path: /data/photos/immich-valkey claimRef: namespace: media name: immich-valkey-v2-pvc --- # ==================== STORAGE (OwnCloud) ==================== apiVersion: v1 kind: PersistentVolume metadata: name: owncloud-files-pv spec: capacity: storage: 190Gi accessModes: [ReadWriteOnce] persistentVolumeReclaimPolicy: Retain storageClassName: "" nfs: server: 192.168.2.252 path: /data/owncloud/owncloud-files claimRef: namespace: storage name: owncloud-files-v2-pvc --- apiVersion: v1 kind: PersistentVolume metadata: name: owncloud-mariadb-pv spec: capacity: storage: 5Gi accessModes: [ReadWriteOnce] persistentVolumeReclaimPolicy: Retain storageClassName: "" nfs: server: 192.168.2.252 path: /data/owncloud/mariadb claimRef: namespace: storage name: owncloud-mariadb-v2-pvc --- apiVersion: v1 kind: PersistentVolume metadata: name: owncloud-redis-pv spec: capacity: storage: 1Gi accessModes: [ReadWriteOnce] persistentVolumeReclaimPolicy: Retain storageClassName: "" nfs: server: 192.168.2.252 path: /data/owncloud/redis claimRef: namespace: storage name: owncloud-redis-v2-pvc --- # ==================== GAMES (Minecraft) ==================== apiVersion: v1 kind: PersistentVolume metadata: name: minecraft-home-pv spec: capacity: storage: 10Gi accessModes: [ReadWriteOnce] persistentVolumeReclaimPolicy: Retain storageClassName: "" nfs: server: 192.168.2.252 path: /data/games/minecraft/home claimRef: namespace: games name: minecraft-home-v2-pvc --- apiVersion: v1 kind: PersistentVolume metadata: name: minecraft-cheats-pv spec: capacity: storage: 10Gi accessModes: [ReadWriteOnce] persistentVolumeReclaimPolicy: Retain storageClassName: "" nfs: server: 192.168.2.252 path: /data/games/minecraft/cheats claimRef: namespace: games name: minecraft-cheats-v2-pvc --- apiVersion: v1 kind: PersistentVolume metadata: name: minecraft-creative-pv spec: capacity: storage: 10Gi accessModes: [ReadWriteOnce] persistentVolumeReclaimPolicy: Retain storageClassName: "" nfs: server: 192.168.2.252 path: /data/games/minecraft/creative claimRef: namespace: games name: minecraft-creative-v2-pvc --- apiVersion: v1 kind: PersistentVolume metadata: name: minecraft-johannes-pv spec: capacity: storage: 10Gi accessModes: [ReadWriteOnce] persistentVolumeReclaimPolicy: Retain storageClassName: "" nfs: server: 192.168.2.252 path: /data/games/minecraft/johannes claimRef: namespace: games name: minecraft-johannes-v2-pvc --- apiVersion: v1 kind: PersistentVolume metadata: name: minecraft-noah-pv spec: capacity: storage: 10Gi accessModes: [ReadWriteOnce] persistentVolumeReclaimPolicy: Retain storageClassName: "" nfs: server: 192.168.2.252 path: /data/games/minecraft/noah claimRef: namespace: games name: minecraft-noah-v2-pvc --- # ==================== GAMES (Factorio / OpenTTD) ==================== apiVersion: v1 kind: PersistentVolume metadata: name: factorio-alone-pv spec: capacity: storage: 5Gi accessModes: [ReadWriteOnce] persistentVolumeReclaimPolicy: Retain storageClassName: "" nfs: server: 192.168.2.252 path: /data/games/factorio/alone claimRef: namespace: games name: factorio-alone-v2-pvc --- apiVersion: v1 kind: PersistentVolume metadata: name: openttd-pv spec: capacity: storage: 2Gi accessModes: [ReadWriteOnce] persistentVolumeReclaimPolicy: Retain storageClassName: "" nfs: server: 192.168.2.252 path: /data/games/openttd/main claimRef: namespace: games name: openttd-v2-pvc --- # ==================== INFRASTRUCTURE ==================== apiVersion: v1 kind: PersistentVolume metadata: name: general-db-pv spec: capacity: storage: 10Gi accessModes: [ReadWriteOnce] persistentVolumeReclaimPolicy: Retain storageClassName: "" nfs: server: 192.168.2.252 path: /data/infra/general-db claimRef: namespace: infrastructure name: general-db-v2-pvc --- apiVersion: v1 kind: PersistentVolume metadata: name: speedtest-tracker-pv spec: capacity: storage: 1Gi accessModes: [ReadWriteOnce] persistentVolumeReclaimPolicy: Retain storageClassName: "" nfs: server: 192.168.2.252 path: /data/infra/speedtest claimRef: namespace: infrastructure name: speedtest-tracker-v2-pvc --- # ==================== IOT ==================== apiVersion: v1 kind: PersistentVolume metadata: name: iot-db-pv spec: capacity: storage: 10Gi accessModes: [ReadWriteOnce] persistentVolumeReclaimPolicy: Retain storageClassName: "" nfs: server: 192.168.2.252 path: /data/infra/iot-db claimRef: namespace: iot name: iot-db-v2-pvc