apiVersion: v1 kind: Namespace metadata: name: audiobookshelf --- apiVersion: apps/v1 kind: Deployment metadata: name: audiobookshelf namespace: audiobookshelf spec: replicas: 1 strategy: type: Recreate selector: matchLabels: app: audiobookshelf template: metadata: labels: app: audiobookshelf spec: containers: - name: audiobookshelf image: ghcr.io/advplyr/audiobookshelf:latest imagePullPolicy: Always ports: - containerPort: 80 hostPort: 13378 volumeMounts: - name: audiobooks mountPath: /audiobooks - name: audiobooks-libation mountPath: /audiobooks-libation - name: config mountPath: /config - name: metadata mountPath: /metadata volumes: - name: audiobooks hostPath: path: /data/media/audiobooks type: DirectoryOrCreate - name: audiobooks-libation hostPath: path: /data/media/audiobooks-libation type: DirectoryOrCreate - name: config hostPath: path: /data/audiobookshelf/config type: DirectoryOrCreate - name: metadata hostPath: path: /data/audiobookshelf/metadata type: DirectoryOrCreate --- apiVersion: v1 kind: Service metadata: name: audiobookshelf namespace: audiobookshelf spec: selector: app: audiobookshelf ports: - name: http protocol: TCP port: 13378 targetPort: 80 --- apiVersion: networking.k8s.io/v1 kind: Ingress metadata: name: audiobookshelf-ingress namespace: audiobookshelf annotations: cert-manager.io/cluster-issuer: cloudflare-issuer spec: ingressClassName: nginx tls: - hosts: - audiobook.alexmickelson.guru secretName: audiobookshelf-tls-cert rules: - host: audiobook.alexmickelson.guru http: paths: - path: / pathType: Prefix backend: service: name: audiobookshelf port: number: 13378 ---