--- # StorageClass for NFS (optional, for dynamic provisioning reference) apiVersion: storage.k8s.io/v1 kind: StorageClass metadata: name: nfs-media provisioner: kubernetes.io/no-provisioner volumeBindingMode: WaitForFirstConsumer reclaimPolicy: Retain --- # PV for app configs - each app gets its own subdirectory apiVersion: v1 kind: PersistentVolume metadata: name: media-config-pv labels: type: nfs usage: config spec: capacity: storage: 5Gi accessModes: - ReadWriteMany persistentVolumeReclaimPolicy: Retain storageClassName: nfs-media nfs: server: 10.0.0.230 path: /srv/nfs/media/config --- # PV for downloads (shared between qbittorrent and *arr apps) apiVersion: v1 kind: PersistentVolume metadata: name: media-downloads-pv labels: type: nfs usage: downloads spec: capacity: storage: 20Gi accessModes: - ReadWriteMany persistentVolumeReclaimPolicy: Retain storageClassName: nfs-media nfs: server: 10.0.0.230 path: /srv/nfs/media/downloads --- # PV for media library (shared between jellyfin and *arr apps) apiVersion: v1 kind: PersistentVolume metadata: name: media-library-pv labels: type: nfs usage: media spec: capacity: storage: 20Gi accessModes: - ReadWriteMany persistentVolumeReclaimPolicy: Retain storageClassName: nfs-media nfs: server: 10.0.0.230 path: /srv/nfs/media/media --- # PV for Jellyfin transcode cache apiVersion: v1 kind: PersistentVolume metadata: name: media-transcode-pv labels: type: nfs usage: transcode spec: capacity: storage: 10Gi accessModes: - ReadWriteMany persistentVolumeReclaimPolicy: Retain storageClassName: nfs-media nfs: server: 10.0.0.230 path: /srv/nfs/media/transcode