feedc0de fc0981b4ac
Validate, publish and promote Helm chart / Publish and promote chart (push) Successful in 20s
Validate, publish and promote Helm chart / Validate chart (push) Successful in 22s
Version chart releases from Git tags
2026-10-18 17:27:23 +02:00
2026-10-18 13:41:43 +02:00
2026-10-18 13:47:51 +02:00

ImmichFrame Helm chart

This repository packages the upstream ImmichFrame container for Kubernetes. It is an independent community chart and is not maintained by the ImmichFrame project.

The chart creates a Deployment, ConfigMap, Service, optional Ingress, optional PVC, optional PodDisruptionBudget, and optional PrometheusRule. ImmichFrame does not currently expose a Prometheus metrics endpoint, so the chart deliberately does not create a ServiceMonitor. Its alerts use metrics supplied by kube-state-metrics.

Install

Add brunner.ninja's public chart repository and choose an immutable chart version:

helm repo add brunner.ninja https://brunner.ninja/charts
helm repo update brunner.ninja
helm upgrade --install immichframe brunner.ninja/immichframe \
  --version CHART_VERSION \
  --namespace immichframe --create-namespace \
  --values values.yaml

The chart version has no latest alias. Every successful main-branch workflow publishes a unique SemVer version, 0.<run-number>.<attempt>, so GitOps can pin and roll back an exact package. The default upstream image is the chart's appVersion; image.registry, image.repository, and image.tag can all be overridden independently.

Each configured Immich account references an existing Kubernetes Secret. The chart mounts its key as a file and writes only ApiKeyFile into Settings.yml; API keys never enter Helm values or rendered ConfigMaps.

config:
  accounts:
    - immichServerUrl: https://immich.example.com
      apiKeySecret:
        name: immichframe-api
        key: api-key
      options:
        Albums:
          - 00000000-0000-0000-0000-000000000000

Deployment and persistence model

ImmichFrame v1.0.38.0 and newer imports Settings.yml once into a SQLite database under /app/Config; afterward the database is its source of truth. With persistence.enabled: false (the default), each Deployment replica has an ephemeral database and reimports the declarative settings whenever its Pod is recreated. This is suitable when Git remains the configuration owner and admin UI edits are intentionally disposable.

Enable persistence and normally use one replica if admin UI changes must survive. With a persistent database, later Settings.yml changes are ignored by ImmichFrame and must instead be applied through its admin UI. Multiple replicas require storage that supports the chosen access mode and careful application-level consideration; they must not share one SQLite database.

CI publication

Gitea Actions lints, renders, schema-validates, and publishes the chart to https://brunner.ninja/charts. The repository needs these Actions secrets:

  • PACKAGE_USERNAME and PACKAGE_TOKEN for the Gitea Helm package registry.
  • GITOPS_TOKEN with write access to feedc0de/homelab-gitops so CI can promote the exact published chart version.

The live homelab values are intentionally kept in the public homelab-gitops application, where the API key is stored only as Sealed Secrets ciphertext.

S
Description
Community Helm chart for ImmichFrame
Readme
57 KiB
Languages
Shell 69.7%
Go Template 30.3%