Homarr
Helm chart for deploying Homarr modern application dashboard on Kubernetes using the official ghcr.io/homarr-labs/homarr container image.
Key Features
- Official Homarr image from
ghcr.io/homarr-labs/homarr - Database backends SQLite3 (default), PostgreSQL, or MySQL with auto-detection
- PostgreSQL and MySQL subcharts optional bundled database deployments
- Encryption key management auto-generated or existing secret for
SECRET_ENCRYPTION_KEY - Kubernetes integration optional workload discovery via
ENABLE_KUBERNETES - External Redis optional external Redis for multi-instance setups
- S3-compatible backup database-aware CronJob (SQLite tar, pg_dump, mysqldump)
- Ingress support configurable ingress with TLS
Installation
HTTPS Repository
helm repo add helmforge https://repo.helmforge.dev
helm repo update
helm install homarr helmforge/homarr
OCI Registry
helm install homarr oci://ghcr.io/helmforgedev/helm/homarr
Basic Example
homarr:
enableKubernetes: true
postgresql:
enabled: true
auth:
database: homarr
username: homarr
password: 'db-password'
ingress:
enabled: true
ingressClassName: traefik
hosts:
- host: dash.example.com
paths:
- path: /
pathType: Prefix
tls:
- secretName: homarr-tls
hosts:
- dash.example.com
backup:
enabled: true
schedule: '0 3 * * *'
s3:
endpoint: https://s3.amazonaws.com
bucket: my-backups
prefix: homarr
existingSecret: homarr-s3-credentials
Key Values
| Key | Default | Description |
|---|---|---|
homarr.logLevel | info | Log level |
homarr.authProviders | credentials | Auth providers (credentials, ldap, oidc) |
homarr.enableKubernetes | false | Enable K8s workload discovery |
encryption.key | "" | 32-byte hex encryption key (auto-generated) |
encryption.existingSecret | "" | Existing secret with encryption key |
database.mode | auto | Database mode: auto, sqlite, external, postgresql, mysql |
database.sqlite.path | /appdata/db/db.sqlite | SQLite file path |
postgresql.enabled | false | Deploy PostgreSQL subchart |
mysql.enabled | false | Deploy MySQL subchart |
redis.external | false | Use external Redis |
redis.host | "" | External Redis host |
persistence.enabled | true | Enable persistent storage |
persistence.size | 1Gi | Volume size |
service.type | ClusterIP | Service type |
service.port | 7575 | Service port |
ingress.enabled | false | Enable ingress |
ingress.ingressClassName | "" | Ingress class (traefik, nginx, etc.) |
backup.enabled | false | Enable S3 backup CronJob |
backup.schedule | "0 3 * * *" | Backup cron schedule |
backup.s3.endpoint | "" | S3-compatible endpoint URL |
backup.s3.bucket | "" | S3 bucket name |
backup.s3.existingSecret | "" | Existing secret with S3 credentials |
Database Auto-Detection
When database.mode is auto (default), the chart detects which database to use:
- If
database.external.hostis set → external database - If
postgresql.enabledistrue→ PostgreSQL subchart - If
mysql.enabledistrue→ MySQL subchart - Otherwise → SQLite3 (zero configuration)
Encryption Key
Homarr requires a SECRET_ENCRYPTION_KEY for encrypting integration secrets. The chart auto-generates a 64-character hex key on first install if not provided. To set your own:
openssl rand -hex 32
Then pass it via encryption.key or an existing secret.