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:
immich-server from bjw-s/helm/ is more popular with 10 repositories.
Install with:
helm repo add app-template oci://ghcr.io/bjw-s-labs/helm/app-template
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 | 47 | 4.4.0 | 2 days ago |
| immich-server | cbirkenbeul/homelab | 39 | 4.3.0 | a month ago |
| immich-server | budimanjojo/home-cluster | 228 | 4.4.0 | a month ago |
See the most popular values for this chart:
| Key | Types |
|---|---|
persistence.library.globalMounts[].path (7) /usr/src/app/upload | string |
| string | |
persistence.library.existingClaim (4) immich-nfs | string |
persistence.library.path (3) /mnt/user/immich | string |
persistence.library.server (3) nas.${SECRET_DOMAIN} | string |
| boolean | |
| string | |
persistence.config.name (2) immich-server-config | string |
persistence.config.type (2) configMap | string |
| boolean | |
| boolean | |
persistence.data.existingClaim (1) immich-data | string |
persistence.data.globalMounts[].path (1) /usr/src/app/upload | string |
| string | |
persistence.media.path (1) /mnt/data/media | string |
persistence.media.server (1) 192.168.10.42 | string |
| string | |
| number, string | |
| string | |
| number, string | |
| number, string | |
| number | |
| boolean | |
| boolean | |
defaultPodOptions.affinity.podAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.labelSelector.matchExpressions[].key (1) google.feature.node.kubernetes.io/coral | string |
| string | |
| string | |
| string | |
| number | |
| string | |
| number | |
defaultPodOptions.topologySpreadConstraints[].topologyKey (1) kubernetes.io/hostname | string |
| string | |
| number | |
| boolean | |
| number | |
service.app.controller (4) immich-server | string |
service.main.controller (3) immich-server | string |
| number | |
| string | |
| string | |
| number | |
service.immich-server.type (1) LoadBalancer | string |
| string | |
| string | |
| string | |
| boolean | |
| string | |
| number | |
controllers.immich-server.pod.topologySpreadConstraints[].topologyKey (4) kubernetes.io/hostname | string |
| string | |
| string | |
| string | |
| string | |
| string | |
| string | |
controllers.immich-server.containers.app.image.repository (3) ghcr.io/immich-app/immich-server | string |
controllers.immich-server.containers.app.image.tag (3) v2.2.1@sha256:2c951a4063b55ec2de197fdf6a85e32b05872d3a18a18eaf851b827ff2622814 | string |
| string | |
| string | |
| number | |
| string | |
| number | |
controllers.immich-server.containers.app.env.IMMICH_MEDIA_LOCATION (2) /usr/src/app/upload | string |
| string | |
controllers.immich-server.containers.app.env.TZ (1) America/Chicago | 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 | |
| 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 | |
controllers.immich-server.containers.main.env.DB_URL.valueFrom.secretKeyRef.name (1) immich-database-pguser-immich | string |
| string | |
| string | |
controllers.immich-server.initContainers.init-db.image.repository (2) ghcr.io/home-operations/postgres-init | string |
controllers.immich-server.initContainers.init-db.image.tag (2) 17.6.0@sha256:86a1992d46273c58fd4ad95b626081dfaabfe16bd56944675169e406d1a660dd | string |
| string | |
| string | |
controllers.immich-server.initContainers.01-init-db.image.repository (1) ghcr.io/home-operations/postgres-init | string |
controllers.immich-server.initContainers.01-init-db.image.tag (1) 17.6@sha256:86a1992d46273c58fd4ad95b626081dfaabfe16bd56944675169e406d1a660dd | string |
controllers.immich-server.strategy (2) RollingUpdate | string |
| number | |
| string | |
| string | |
| string | |
| string | |
| string | |
controllers.immich.containers.app.image.repository (2) ghcr.io/immich-app/immich-server | string |
controllers.immich.containers.app.image.tag (2) v2.2.3@sha256:4504d794123c3f5410cc45bbc61e4d7dbcacec1e1b0cd2e599691430c94e5849 | 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 | |
| string | |
| string | |
| string | |
controllers.immich.containers.app.env.IMMICH_MEDIA_LOCATION (1) /usr/src/app/upload | string |
| string | |
| string | |
| string | |
| string | |
controllers.immich.containers.app.env.REDIS_HOSTNAME (1) dragonfly.database.svc.cluster.local | string |
controllers.immich.containers.app.env.TZ (1) ${TIMEZONE} | string |
| boolean | |
| string | |
| boolean | |
| string | |
| string | |
controllers.immich.initContainers.init-db.image.repository (2) ghcr.io/home-operations/postgres-init | string |
| number, string | |
controllers.immich.strategy (2) RollingUpdate | string |
| string | |
| string | |
| string | |
| string | |
| string | |
| string | |
controllers.main.containers.immich-server.image.repository (1) ghcr.io/immich-app/immich-server | string |
| string | |
controllers.main.initContainers.01-init-db.envFrom[].secretRef.name (1) immich-dbinit-secret | string |
| string | |
controllers.main.initContainers.01-init-db.image.repository (1) ghcr.io/home-operations/postgres-init | string |
| number | |
| number | |
controllers.main.strategy (1) RollingUpdate | string |
| string | |
ingress.app.hosts[].host (4) photos.${SECRET_DOMAIN} | string |
| string | |
| string | |
| string | |
| string | |
ingress.app.tls[].hosts[] (3) - photos.mcgrath.nz | string |
ingress.app.tls[].secretName (1) ${SECRET_DOMAIN/./-}-production-tls | string |
| string | |
| string | |
| string | |
| string | |
ingress.app.annotations."external-dns.alpha.kubernetes.io/target" (1) ipv4.${SECRET_DOMAIN} | string |
ingress.app.annotations."gethomepage.dev/description" (1) Photo management | string |
| string | |
| string | |
| string | |
| string | |
ingress.app.annotations."gethomepage.dev/widget.fields" (1) ["photos", "videos", "storage"] | string |
ingress.app.annotations."gethomepage.dev/widget.key" (1) {{ `{{HOMEPAGE_VAR_IMMICH_TOKEN}}` }} | string |
| string | |
ingress.app.annotations."gethomepage.dev/widget.url" (1) http://immich-server.media.svc.cluster.local:3001 | string |
| string | |
| string | |
ingress.app.annotations."hajimari.io/icon" (1) arcticons:immich | string |
ingress.app.annotations."hajimari.io/info" (1) Manage Photos | string |
ingress.app.annotations."nginx.ingress.kubernetes.io/whitelist-source-range" (1) 192.168.0.0/16,172.16.0.0/12,10.0.0.0/8
| string |
| string | |
| string | |
ingress.app.annotations."traefik.ingress.kubernetes.io/router.middlewares" (1) networking-traefik-middleware-chain-no-auth@kubernetescrd | string |
| boolean | |
ingress.immich-server.annotations."external-dns.alpha.kubernetes.io/target" (1) external.${SECRET_DOMAIN} | string |
| string | |
| string | |
| string | |
| string | |
| string | |
| string | |
ingress.immich-server.hosts[].host (1) photos.${SECRET_DOMAIN} | string |
| string | |
| string | |
| string | |
ingress.immich-server.tls[].hosts[] (1) - photos.${SECRET_DOMAIN} | string |
ingress.public.annotations."external-dns.alpha.kubernetes.io/target" (1) ingress.${PUBLIC_DOMAIN} | string |
| string | |
ingress.public.annotations."nginx.ingress.kubernetes.io/configuration-snippet" (1) sub_filter </head>
'</head><script defer src="https://analytics.thiagoalmeida.xyz/script.js" data-website-id="086445c0-1f67-46c4-9246-bd1f74278421"></script>';
sub_filter_once on;
| string |
| string | |
| string | |
| string | |
| boolean | |
ingress.public.hosts[].host (1) photos.${PUBLIC_DOMAIN} | string |
| string | |
| string | |
| string | |
route.main.hostnames[] (3) - img.${SECRET_DOMAIN} | string |
route.main.parentRefs[].name (3) envoy-external | string |
| string | |
| string | |
| number | |
| number | |
| string | |
route.main.rules[].backendRefs[].name (1) immich-server | string |
route.app.annotations."cert-manager.io/cluster-issuer" (1) letsencrypt-production | string |
| string | |
| string | |
| string | |
| string | |
| string | |
route.app.annotations."gethomepage.dev/widget.key" (1) ${HOMEPAGE_IMMICH_KEY} | string |
| string | |
route.app.annotations."gethomepage.dev/widget.url" (1) http://immich-server.media:3001 | string |
| string | |
route.app.annotations."hajimari.io/icon" (1) heroicons:photo | string |
route.app.hostnames[] (1) - immich.${SECRET_DOMAIN} | string |
route.app.parentRefs[].name (1) internal | string |
route.app.parentRefs[].namespace (1) kube-system | string |
| 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:17.6 | string |
initContainers.01-init-db.imagePullPolicy (1) IfNotPresent | string |
| string | |
| string | |
| string | |
| string | |
| string | |
serviceMonitor.app.serviceName (1) immich-server | string |