photoprism/setup/charts/plus
2026-06-01 23:52:11 +02:00
..
templates Helm: Add chart for PhotoPrism on Kubernetes #3460 #5603 2026-05-22 06:48:37 +00:00
Chart.yaml Helm: Bump Plus chart to 1.1.1 (appVersion 260601) 2026-06-01 23:52:11 +02:00
questions.yaml Helm: Add chart for PhotoPrism on Kubernetes #3460 #5603 2026-05-22 06:48:37 +00:00
README.md Helm: Add chart for PhotoPrism on Kubernetes #3460 #5603 2026-05-22 06:48:37 +00:00
values.yaml Helm: Add chart for PhotoPrism on Kubernetes #3460 #5603 2026-05-22 06:48:37 +00:00

Introduction

This chart provides an easy way to run PhotoPrism® on a home lab or small business Kubernetes cluster while maintaining an approachable configuration.

Highlights

  • Runs the official photoprism/photoprism image with non-root defaults (UID/GID 1000).
  • Ships with SQLite out of the box; switch to MariaDB/MySQL by filling in the database section.
  • Creates lightweight PVCs for /photoprism/storage (5GiB) and, optionally, /photoprism/originals (10GiB) the clusters default storage class is used unless you override it.
  • Surfaces the most relevant customization settings (locale, themes, login footer, CORS/CDN, backup schedule) directly in Ranchers UI or via values.yaml.

Quick Start

helm repo add photoprism https://charts.photoprism.app/photoprism
helm repo update photoprism
helm upgrade --install photos photoprism/photoprism-plus \
  --namespace photos --create-namespace

This deploys PhotoPrism with SQLite storage. To use MariaDB (recommended for larger libraries):

helm upgrade --install photos photoprism/photoprism-plus \
  --namespace photos \
  --set database.driver=mysql \
  --set database.server=mariadb.default.svc.cluster.local:3306 \
  --set database.name=photoprism \
  --set database.user=photoprism \
  --set database.password=changeme

Storage & Backups

  • persistence.storage is always created and holds the application state.
  • persistence.originals can be disabled or redirected to an NFS export when you manage originals elsewhere.
  • Backup options (PHOTOPRISM_BACKUP_*) are exposed so you can point scheduled backups to another path or tweak retention.

Customization

Key values you might want to adjust:

  • config.PHOTOPRISM_SITE_TITLE, config.PHOTOPRISM_APP_NAME, config.PHOTOPRISM_DEFAULT_THEME
  • config.PHOTOPRISM_AUTH_MODE, config.PHOTOPRISM_LOGIN_INFO, config.PHOTOPRISM_PASSWORD_LENGTH
  • config.PHOTOPRISM_CDN_URL, config.PHOTOPRISM_CORS_ORIGIN
  • config.PHOTOPRISM_FILES_QUOTA, config.PHOTOPRISM_UPLOAD_LIMIT

See values.yaml for the full list.

Networking & TLS

The chart exposes PhotoPrism on TCP 2342 through a ClusterIP service. You can override the service type or enable an Ingress resource when you terminate TLS in the cluster edge:

service:
  type: ClusterIP
  port: 2342

ingress:
  enabled: true
  className: traefik
  hosts:
    - host: photos.example.com
      paths:
        - path: /
          pathType: Prefix
  tls:
    - hosts:
        - photos.example.com
      secretName: photos-tls

Because TLS typically terminates at the ingress or proxy layer, the chart keeps PHOTOPRISM_DISABLE_TLS set to true. Only enable PhotoPrisms internal TLS if your cluster design requires end-to-end encryption and you manage the certificates yourself.

Security Tips

  • When adminPassword is left blank, a random password is generated and stored in secret/<release>-photoprism-secrets.
  • Prefer MariaDB/MySQL for multi-user setups or large libraries, and back up both the database and storage PVCs regularly.
  • If you expose PhotoPrism on the public internet, pair it with HTTPS termination (Ingress/TLS or an external proxy) and keep the container image up to date.

Getting Support

Commercial support is available with our Starter, Business, and Enterprise team plans:

PhotoPrism® Documentation

For more information on specific features, services and related resources, please refer to the other documentation available in our Knowledge Base and User Guide: