--- apiVersion: v1 kind: PersistentVolumeClaim metadata: name: audiobookshelf-config namespace: media spec: accessModes: - ReadWriteOnce resources: requests: storage: 5Gi storageClassName: local-path --- apiVersion: apps/v1 kind: Deployment metadata: name: audiobookshelf namespace: media spec: replicas: 1 selector: matchLabels: app: audiobookshelf template: metadata: labels: app: audiobookshelf spec: nodeSelector: kubernetes.io/hostname: qfox-1 containers: - name: audiobookshelf image: ghcr.io/advplyr/audiobookshelf:latest ports: - containerPort: 13378 env: - name: PUID value: "1000" - name: PGID value: "100" volumeMounts: - name: config mountPath: /config - name: media mountPath: /audiobooks subPath: audiobooks - name: media mountPath: /podcasts subPath: podcasts volumes: - name: config persistentVolumeClaim: claimName: audiobookshelf-config - name: media persistentVolumeClaim: claimName: media-store --- apiVersion: v1 kind: Service metadata: name: audiobookshelf namespace: media spec: type: NodePort ports: - port: 13378 targetPort: 13378 nodePort: 30090 selector: app: audiobookshelf --- apiVersion: v1 kind: PersistentVolumeClaim metadata: name: jellyfin-config namespace: media spec: accessModes: - ReadWriteOnce resources: requests: storage: 5Gi storageClassName: local-path --- apiVersion: apps/v1 kind: Deployment metadata: name: jellyfin namespace: media spec: replicas: 1 selector: matchLabels: app: jellyfin template: metadata: labels: app: jellyfin spec: nodeSelector: kubernetes.io/hostname: qfox-1 containers: - name: jellyfin image: lscr.io/linuxserver/jellyfin:latest ports: - containerPort: 8096 - containerPort: 8920 env: - name: PUID value: "1000" - name: PGID value: "100" volumeMounts: - name: config mountPath: /config - name: media mountPath: /media/movies subPath: movies - name: media mountPath: /media/tv subPath: tv - name: media mountPath: /media/music subPath: music - name: media mountPath: /media/audiobooks subPath: audiobooks volumes: - name: config persistentVolumeClaim: claimName: jellyfin-config - name: media persistentVolumeClaim: claimName: media-store --- apiVersion: v1 kind: Service metadata: name: jellyfin namespace: media spec: type: NodePort ports: - name: web port: 8096 targetPort: 8096 nodePort: 30091 - name: https port: 8920 targetPort: 8920 nodePort: 30092 selector: app: jellyfin