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/helm/app-template
helm install immich-server app-template/app-template -f values.yaml
See examples from other people.
Name | Repo | Stars | Version | Timestamp |
---|---|---|---|---|
immich-server | budimanjojo/home-cluster | 214 | 4.2.0 | 4 hours ago |
immich-server | drag0n141/home-ops | 43 | 4.2.0 | 19 hours ago |
immich-server | cbirkenbeul/homelab | 37 | 4.2.0 | 20 hours ago |
See the most popular values for this chart:
Key | Types |
---|---|
persistence.library.globalMounts[].path (8) /usr/src/app/upload | string |
persistence.library.existingClaim (5) immich-nfs | string |
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 |
boolean | |
persistence.geocoding-dump.globalMounts[].path (1) /usr/src/app/.reverse-geocoding-dump | string |
string | |
string | |
persistence.media.path (1) /mnt/data/media | string |
persistence.media.server (1) 192.168.10.42 | string |
string | |
boolean | |
persistence.transformers-cache.globalMounts[].path (1) /usr/src/app/.transformers_cache | string |
string | |
number, string | |
string | |
number, string | |
number, string | |
number | |
boolean | |
boolean | |
string | |
number | |
defaultPodOptions.topologySpreadConstraints[].topologyKey (2) kubernetes.io/hostname | string |
string | |
defaultPodOptions.affinity.podAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.labelSelector.matchExpressions[].key (1) google.feature.node.kubernetes.io/coral | string |
string | |
string | |
string | |
number | |
number | |
boolean | |
number | |
service.app.controller (4) immich-server | string |
service.main.controller (4) immich-server | string |
number | |
string | |
string | |
number | |
service.immich-server.type (1) LoadBalancer | string |
string | |
string | |
string | |
string | |
string | |
controllers.immich-server.containers.app.image.repository (4) ghcr.io/immich-app/immich-server | string |
controllers.immich-server.containers.app.image.tag (4) v1.139.3@sha256:9cea00524e723d8aa28b2a807b449aee1ebcb6f0052b7cd7e43b905a1c9f87df | 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 |
boolean | |
string | |
number | |
controllers.immich-server.pod.topologySpreadConstraints[].topologyKey (4) kubernetes.io/hostname | string |
string | |
string | |
string | |
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) 17.6@sha256:86a1992d46273c58fd4ad95b626081dfaabfe16bd56944675169e406d1a660dd | string |
controllers.immich-server.strategy (2) RollingUpdate | string |
number | |
controllers.immich-server.type (1) statefulset | string |
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) v1.139.4@sha256:c3c5eeafa5549e446b5fd71394399178d9c87da1dec5fd9e9a80a5a0f13e9fad | 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 | |
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) external | string |
route.main.parentRefs[].namespace (3) kube-system | string |
string | |
number | |
number | |
string | |
route.main.rules[].backendRefs[].name (1) immich-server | string |
route.app.hostnames[] (2) - {{ .Release.Name }}.kokoro.wtf | string |
route.app.parentRefs[].name (2) internal | string |
route.app.parentRefs[].namespace (2) kube-system | string |
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.rules[].backendRefs[].name (1) immich-server | string |
number | |
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.5 | string |
initContainers.01-init-db.imagePullPolicy (1) IfNotPresent | string |
string | |
string | |
string | |
string | |
string | |
serviceMonitor.app.serviceName (1) immich-server | string |