apiVersion: v1 kind: PersistentVolumeClaim metadata: name: audiobookshelf-config namespace: media spec: accessModes: - ReadWriteOnce resources: requests: storage: 1Gi --- apiVersion: apps/v1 kind: Deployment metadata: name: audiobookshelf namespace: media labels: app: audiobookshelf spec: replicas: 1 selector: matchLabels: app: audiobookshelf template: metadata: labels: app: audiobookshelf spec: nodeSelector: topology.researchstack.io/role: foxtop containers: - name: audiobookshelf image: ghcr.io/advplyr/audiobookshelf:latest ports: - containerPort: 80 env: - name: TZ value: "America/Chicago" - name: HOST value: "0.0.0.0" - name: ROUTER_BASE_PATH value: "/audiobookshelf" - name: OPENID_ENABLED value: "true" - name: OPENID_ISSUER_URL value: "https://auth.researchstack.info" - name: OPENID_CLIENT_ID value: "sso-audiobookshelf" - name: OPENID_CLIENT_SECRET valueFrom: secretKeyRef: name: audiobookshelf-oidc key: OPENID_CLIENT_SECRET - name: OPENID_REDIRECT_URI value: "https://audiobooks.researchstack.info/audiobookshelf/auth/openid/callback" volumeMounts: - name: config mountPath: /config - name: metadata mountPath: /metadata - name: media mountPath: /audiobooks subPath: audiobooks - name: media mountPath: /podcasts subPath: podcasts volumes: - name: config persistentVolumeClaim: claimName: audiobookshelf-config - name: metadata emptyDir: {} - name: media hostPath: path: /mnt/media type: DirectoryOrCreate --- apiVersion: v1 kind: Service metadata: name: audiobookshelf namespace: media spec: type: NodePort selector: app: audiobookshelf ports: - port: 80 targetPort: 80 nodePort: 30807