apiVersion: v1 kind: Namespace metadata: name: photoprism --- apiVersion: v1 kind: Secret metadata: name: photoprism-secrets namespace: photoprism stringData: PHOTOPRISM_ADMIN_PASSWORD: "Akzq#20!" PHOTOPRISM_DATABASE_DSN: root:Akzq#20!@tcp(mariadb:3306)/photoprism?charset=utf8mb4,utf8&parseTime=true --- apiVersion: apps/v1 kind: StatefulSet metadata: name: photoprism namespace: photoprism spec: selector: matchLabels: app: photoprism serviceName: photoprism replicas: 1 template: metadata: labels: app: photoprism spec: containers: - name: photoprism image: photoprism/photoprism:latest env: - name: PHOTOPRISM_UPLOAD_NSFW value: "true" - name: PHOTOPRISM_DETECT_NSFW value: "true" - name: PHOTOPRISM_DEBUG value: "true" - name: PHOTOPRISM_DATABASE_DRIVER value: mariadb - name: PHOTOPRISM_HTTP_HOST value: 0.0.0.0 - name: PHOTOPRISM_HTTP_PORT value: "2342" envFrom: - secretRef: name: photoprism-secrets optional: false ports: - containerPort: 2342 name: http volumeMounts: - mountPath: /photoprism/originals name: originals - mountPath: /photoprism/import name: import - mountPath: /photoprism/storage name: storage readinessProbe: httpGet: path: /api/v1/status port: 2342 volumes: - name: originals hostPath: path: /data/photoprism/originals type: Directory - name: import hostPath: path: /data/photoprism/import type: Directory - name: storage hostPath: path: /data/photoprism/storage type: Directory --- apiVersion: v1 kind: Service metadata: name: photoprism namespace: photoprism spec: ports: - name: http port: 80 protocol: TCP targetPort: 2342 selector: app: photoprism type: ClusterIP --- apiVersion: v1 kind: Service metadata: namespace: photoprism name: mariadb spec: ports: - port: 3306 selector: app: mariadb clusterIP: None --- apiVersion: apps/v1 kind: Deployment metadata: name: mariadb namespace: photoprism spec: selector: matchLabels: app: mariadb strategy: type: Recreate template: metadata: labels: app: mariadb spec: containers: - image: mariadb name: mariadb env: - name: MARIADB_ROOT_PASSWORD value: "Akzq#20!" - name: MARIADB_DATABASE value: "photoprism" ports: - containerPort: 3306 name: mariadb volumeMounts: - name: mariadb-persistent-storage mountPath: /var/lib/mariadb volumes: - name: mariadb-persistent-storage persistentVolumeClaim: claimName: mariadb-pv-claim --- apiVersion: v1 kind: PersistentVolumeClaim metadata: name: mariadb-pv-claim namespace: photoprism spec: storageClassName: data-hostpath volumeMode: Filesystem accessModes: - ReadWriteOnce resources: requests: storage: 100Gi --- apiVersion: networking.k8s.io/v1 kind: Ingress metadata: name: ingress-routes-photoprism namespace: photoprism annotations: cert-manager.io/cluster-issuer: "letsencrypt-prod" spec: tls: - hosts: - photo.jsnet.io secretName: tls-secret-photoprism rules: - host: photo.jsnet.io http: paths: - path: / pathType: Prefix backend: service: name: photoprism port: number: 80