Immich is a self-hosted photo and video backup solution.
For immich, there are multiple helm deployments:
For redis and postgres, there are multiple helm charts:
Install with:
helm repo add app-template oci://ghcr.io/bjw-s-labs/charts/
helm install immich-server app-template/app-template -f values.yamlSee examples from other people.
| Name | Repo | Stars | Version | Timestamp |
|---|---|---|---|---|
| immich-server | drag0n141/home-ops | 58 | 5.0.1 | 16 hours ago |
See the most popular values for this chart:
| Key | Types |
|---|---|
persistence.library.globalMounts[].path (12) /usr/src/app/upload | string |
| boolean | |
persistence.library.globalMounts[].subPath (1) Photo/immich | string |
| string | |
persistence.library.path (7) /volume1/dev/photos | string |
persistence.library.server (7) ${LOCAL_LAN_NAS} | string |
persistence.library.existingClaim (6) immich-nfs | string |
| boolean | |
persistence.library.mountPath (1) /usr/src/app/upload | string |
| boolean | |
| string | |
persistence.config.name (3) immich-configmap | string |
persistence.config.type (3) configMap | string |
persistence.media.globalMounts[].path (2) /usr/src/app/upload | string |
persistence.media.path (2) /mnt/tank/Kubernetes/Apps/immich | string |
| string | |
| string | |
persistence.config-file.globalMounts[].path (1) /config/immich.yaml | string |
| boolean | |
| string | |
persistence.config-file.items[].key (1) immich.yaml | string |
persistence.config-file.items[].path (1) immich.yaml | string |
persistence.config-file.name (1) immich-secret | string |
| string | |
| string | |
| boolean | |
| boolean | |
persistence.immich-config.items[].key (1) config.json | string |
persistence.immich-config.items[].path (1) config.json | string |
persistence.immich-config.name (1) immich-secret | string |
| string | |
persistence.memories.globalMounts[].path (1) /mnt/memories | string |
persistence.memories.path (1) /mnt/user/Photos | string |
persistence.memories.server (1) ${CORE_NFS_SERVER:=nas0} | string |
| string | |
persistence.oauth-config.advancedMounts.immich-server.app[].path (1) /config/immich-config.json | string |
| boolean | |
| string | |
persistence.oauth-config.name (1) immich-secret | string |
| string | |
| string | |
| boolean | |
| string | |
persistence.photos.path (1) /hdd-nfs-repl | string |
persistence.photos.server (1) gasha01.haynesnetwork | string |
| string | |
persistence.upload.advancedMounts.immich-server.app[].path (1) /usr/src/app/upload | string |
| boolean | |
persistence.upload.advancedMounts.immich-server.app[].subPath (1) data/photos/immich | string |
| boolean | |
persistence.upload.existingClaim (1) immich-upload | string |
persistence.upload.globalMounts[].path (1) /usr/src/app/upload | string |
persistence.upload.path (1) /hdd-nfs-repl | string |
persistence.upload.server (1) gasha01.haynesnetwork | string |
| string | |
| number, string | |
| number, string | |
| number, string | |
| string | |
| boolean | |
| number | |
| boolean | |
| string | |
| string | |
| string | |
| string | |
| string | |
| number | |
defaultPodOptions.topologySpreadConstraints[].topologyKey (1) kubernetes.io/hostname | string |
| string | |
| number | |
| boolean | |
| number | |
service.app.controller (6) immich-server | string |
| number | |
service.main.controller (4) immich-server | string |
| string | |
| number | |
| string | |
service.immich-server.type (1) LoadBalancer | string |
| string | |
| string | |
| string | |
| string | |
| string | |
controllers.immich-server.containers.app.image.repository (6) ghcr.io/immich-app/immich-server | string |
| string | |
| string | |
| string | |
| number, string | |
| string | |
| number, string | |
| string | |
| boolean | |
| boolean | |
| number | |
| string | |
| number | |
| number | |
| number | |
| number | |
| boolean | |
| boolean | |
| number | |
| string | |
| number | |
| number | |
| number | |
| number | |
| boolean | |
| boolean | |
| number | |
| string | |
| number | |
| number | |
| number | |
| number | |
| number | |
controllers.immich-server.containers.app.env.TZ (3) ${CLUSTER_TIMEZONE} | string |
controllers.immich-server.containers.app.env.IMMICH_CONFIG_FILE (2) /config/immich-config.json | string |
controllers.immich-server.containers.app.env.IMMICH_MEDIA_LOCATION (2) /usr/src/app/upload | string |
| string | |
| string | |
| string | |
| boolean | |
| string | |
| boolean | |
| string | |
| string | |
controllers.immich-server.containers.main.image.repository (3) ghcr.io/immich-app/immich-server | string |
| string | |
| boolean | |
| boolean | |
| number | |
| string | |
| number | |
| number | |
| number | |
| number | |
| boolean | |
| boolean | |
| number | |
| string | |
| number | |
| number | |
| number | |
| number | |
| boolean | |
| number | |
| number | |
| string | |
| number | |
| number | |
| number | |
| boolean | |
| string | |
| string | |
| number | |
| string | |
| string | |
controllers.immich-server.containers.main.env.IMMICH_MEDIA_LOCATION (2) /usr/src/app/upload | string |
| number | |
| string | |
| string | |
| string | |
| boolean | |
| string | |
| number | |
controllers.immich-server.pod.topologySpreadConstraints[].topologyKey (4) kubernetes.io/hostname | string |
| string | |
| string | |
| string | |
| string | |
| number | |
| string | |
| number | |
| number | |
| number | |
controllers.immich-server.strategy (4) RollingUpdate | string |
| string | |
| string | |
controllers.immich-server.initContainers.init-db.image.repository (3) ghcr.io/home-operations/postgres-init | string |
controllers.immich-server.initContainers.init-db.image.tag (3) 17.6.0@sha256:86a1992d46273c58fd4ad95b626081dfaabfe16bd56944675169e406d1a660dd | number, string |
| string | |
| string | |
controllers.immich-server.initContainers.01-init-db.image.repository (2) ghcr.io/home-operations/postgres-init | string |
controllers.immich-server.initContainers.01-init-db.image.tag (2) 18.4@sha256:ebd9d30add17acdf935d73eb004758c7dfd9388aaa605fda70ad74378ab92aec | string |
controllers.immich-server.initContainers.02-init-extensions.command[] (1) - /bin/bash | string |
controllers.immich-server.initContainers.02-init-extensions.env[].name (1) PGDATABASE | string |
| string | |
controllers.immich-server.initContainers.02-init-extensions.env[].valueFrom.secretKeyRef.key (1) DB_DATABASE_NAME | string |
controllers.immich-server.initContainers.02-init-extensions.env[].valueFrom.secretKeyRef.name (1) immich-secret | string |
| string | |
controllers.immich-server.initContainers.02-init-extensions.image.repository (1) ghcr.io/home-operations/postgres-init | string |
controllers.immich-server.initContainers.02-init-extensions.image.tag (1) 18.4@sha256:ebd9d30add17acdf935d73eb004758c7dfd9388aaa605fda70ad74378ab92aec | string |
| string | |
| string | |
controllers.immich.containers.app.env.TZ (3) Europe/Berlin | string |
controllers.immich.containers.app.env.IMMICH_CONFIG_FILE (2) /etc/immich/config.json | string |
| boolean | |
| string | |
| number | |
| string | |
| string | |
| string | |
controllers.immich.containers.app.image.repository (3) ghcr.io/immich-app/immich-server | string |
controllers.immich.containers.app.image.tag (3) v2.7.5@sha256:c15bff75068effb03f4355997d03dc7e0fc58720c2b54ad6f7f10d1bc57efaa5 | string |
| boolean | |
| boolean | |
| number | |
| string | |
| number | |
| number | |
| number | |
| number | |
| boolean | |
| boolean | |
| number | |
| string | |
| number | |
| number | |
| number | |
| number | |
| boolean | |
| boolean | |
| number | |
| string | |
| number | |
| number | |
| number | |
| number | |
| number | |
| string | |
| string | |
| string | |
| boolean | |
| string | |
| boolean | |
| string | |
controllers.immich.initContainers.init-db.image.repository (3) ghcr.io/home-operations/postgres-init | string |
controllers.immich.initContainers.init-db.image.tag (3) 18.4.0@sha256:ebd9d30add17acdf935d73eb004758c7dfd9388aaa605fda70ad74378ab92aec | string |
controllers.immich.initContainers.init-extensions.args[] (1) - psql -c "CREATE EXTENSION IF NOT EXISTS vchord CASCADE;"
psql -c "CREATE EXTENSION IF NOT EXISTS cube CASCADE;"
psql -c "CREATE EXTENSION IF NOT EXISTS earthdistance CASCADE;"
| string |
| string | |
| string | |
| string | |
controllers.immich.initContainers.init-extensions.env.PGHOST (1) postgres18-vector-rw.dbms.svc.cluster.local | string |
controllers.immich.initContainers.init-extensions.env.PGPASSWORD.valueFrom.secretKeyRef.key (1) INIT_POSTGRES_SUPER_PASS | string |
| string | |
| string | |
controllers.immich.initContainers.init-extensions.image.repository (1) ghcr.io/home-operations/postgres-init | string |
controllers.immich.initContainers.init-extensions.image.tag (1) 18.4.0@sha256:ebd9d30add17acdf935d73eb004758c7dfd9388aaa605fda70ad74378ab92aec | string |
controllers.immich.strategy (2) RollingUpdate | string |
| string | |
| string | |
| string | |
| string | |
| string | |
controllers.main.initContainers.01-init-db.image.repository (3) ghcr.io/home-operations/postgres-init | string |
| number | |
| string | |
| number | |
controllers.main.strategy (3) RollingUpdate | string |
| string | |
| string | |
| string | |
controllers.main.containers.immich-server.image.repository (2) ghcr.io/immich-app/immich-server | string |
| string | |
| number | |
| number | |
| string | |
controllers.main.containers.main.env.NODE_OPTIONS (1) --max-old-space-size=8192 | string |
controllers.main.containers.main.envFrom[].configMapRef.name (1) immich-configmap | string |
controllers.main.containers.main.envFrom[].secretRef.name (1) immich-secret | string |
controllers.main.containers.main.image.repository (1) ghcr.io/immich-app/immich-server | string |
| string | |
| boolean | |
| boolean | |
| number | |
| string | |
| number | |
| number | |
| number | |
| number | |
| boolean | |
| boolean | |
| number | |
| string | |
| number | |
| number | |
| number | |
| number | |
| boolean | |
| number | |
| string | |
| number | |
| number | |
| string | |
| string | |
| string | |
| string | |
| number | |
controllers.main.pod.topologySpreadConstraints[].topologyKey (1) kubernetes.io/hostname | string |
| string | |
route.app.hostnames[] (6) - photos.${SECRET_DOMAIN} | string |
route.app.parentRefs[].name (6) internal | string |
| string | |
| string | |
route.app.annotations."gethomepage.dev/description" (4) Photo management | string |
| string | |
| string | |
| string | |
| string | |
route.app.annotations."gethomepage.dev/widget.key" (3) {{ `{{HOMEPAGE_VAR_IMMICH_TOKEN}}` }} | string |
| string | |
route.app.annotations."gethomepage.dev/widget.url" (3) http://immich-server.media.svc.cluster.local:3001 | string |
route.app.annotations."cert-manager.io/cluster-issuer" (1) letsencrypt-production | string |
route.app.annotations."gethomepage.dev/pod-selector" (1) app.kubernetes.io/instance in (
immich-server,
immich-microservices,
immich-machine-learning
) | string |
route.app.annotations."gethomepage.dev/widget.fields" (1) ["photos", "videos", "storage"] | string |
| string | |
| string | |
route.app.annotations."hajimari.io/icon" (1) heroicons:photo | string |
| string | |
| string, number | |
route.main.hostnames[] (4) - img.${SECRET_DOMAIN} | string |
route.main.parentRefs[].name (4) envoy-external | string |
| string | |
| string | |
| number | |
| number, string | |
| string | |
route.main.rules[].backendRefs[].name (1) immich-server | string |
| string | |
| string | |
route.main.rules[].filters[].extensionRef.name (1) traefik-middleware-chain-direct | string |
route.main.rules[].filters[].type (1) ExtensionRef | string |
| string | |
| string | |
| boolean | |
| string | |
| string | |
| string | |
| string | |
| string | |
| string | |
ingress.immich-server.annotations."external-dns.alpha.kubernetes.io/target" (2) external.${SECRET_DOMAIN} | string |
| string | |
| string | |
| string | |
| string | |
| string | |
| string | |
ingress.immich-server.annotations."hajimari.io/icon" (1) simple-icons:immich | string |
| string | |
| string | |
| string | |
ingress.immich-server.hosts[].host (2) photos.${SECRET_DOMAIN} | string |
| string | |
| string | |
| string | |
ingress.immich-server.tls[].hosts[] (2) - photos.${SECRET_DOMAIN} | string |
| string | |
| string | |
| string | |
| string | |
| string | |
ingress.immich-server-internal.hosts[].host (1) photos-int.${SECRET_DOMAIN} | string |
| string | |
| string | |
| string | |
ingress.immich-server-internal.tls[].hosts[] (1) - photos-int.${SECRET_DOMAIN} | string |
args[] (1) - ./start-server.sh | string |
command (1) /bin/sh | string |
| string | |
| string | |
| number | |
controller.strategy (1) RollingUpdate | string |
env.DB_DATABASE_NAME.valueFrom.secretKeyRef.key (1) DATABASE_NAME | string |
env.DB_DATABASE_NAME.valueFrom.secretKeyRef.name (1) database-immich-user | string |
| string | |
env.DB_HOSTNAME.valueFrom.secretKeyRef.name (1) database-immich-user | string |
| string | |
env.DB_PASSWORD.valueFrom.secretKeyRef.name (1) database-immich-user | string |
| string | |
env.DB_USERNAME.valueFrom.secretKeyRef.name (1) database-immich-user | string |
envFrom[].configMapRef.name (1) immich-configmap | string |
envFrom[].secretRef.name (1) immich-secret | string |
image.repository (1) ghcr.io/immich-app/immich-server | string |
image.tag (1) v1.79.1@sha256:38c3c0a8fd67aa04ee580b3a20d4a6dd7cd84df3f5387eadebc0a61ba0751518 | string |
initContainers.01-init-db.envFrom[].configMapRef.name (1) immich-configmap | string |
| string | |
initContainers.01-init-db.image (1) ghcr.io/home-operations/postgres-init:18.4 | string |
initContainers.01-init-db.imagePullPolicy (1) IfNotPresent | string |
| string | |
| string | |
| string | |
| number | |
topologySpreadConstraints[].topologyKey (1) kubernetes.io/hostname | string |
topologySpreadConstraints[].whenUnsatisfiable (1) DoNotSchedule | string |