Why this Configuration?
- True Data Sovereignty: 100% GDPR-compliant on-premises deployment. You own your configuration and data without vendor lock-in.
- Hardware Agnostic: Optimized and verified across low-power ARM64 SBCs (Raspberry Pi 5) and x86_64 hypervisors (Proxmox VE LXC & VM).
- Engine Freedom: Tested and supported under standard Docker Engine and unprivileged rootless Podman.
- Platform Verification: Tested on Proxmox LXC: docker (v3.2.0, 2026-09-14), podman (v3.2.0, 2026-09-14); Proxmox VM: docker (v3.2.0, 2026-09-14), podman (v3.2.0, 2026-09-14).
Quick Start (Standalone Docker Compose)
The snippet below is immediately ready to run in any standard Docker or Podman environment:
services:
immich-server:
container_name: njorddeploy-immich-server
image: ghcr.io/immich-app/immich-server:release
volumes:
- "./data/immich/library:/data"
- "/etc/localtime:/etc/localtime:ro"
environment:
- "DB_HOSTNAME=immich-postgres"
- "DB_USERNAME=postgres"
- "DB_PASSWORD=ImmichDbPassword123"
- "DB_DATABASE_NAME=immich"
- "DB_PORT=5432"
- "REDIS_HOSTNAME=immich-redis"
- "REDIS_PORT=6379"
- "TZ=Etc/UTC"
ports:
- "2283:2283"
networks:
- njorddeploy_net
restart: always
depends_on:
- immich-postgres
- immich-redis
immich-machine-learning:
container_name: njorddeploy-immich-machine-learning
image: ghcr.io/immich-app/immich-machine-learning:release
volumes:
- "./data/immich/model-cache:/cache"
environment:
- "TZ=Etc/UTC"
networks:
- njorddeploy_net
restart: always
immich-postgres:
container_name: njorddeploy-immich-postgres
image: ghcr.io/immich-app/postgres:14-vectorchord0.4.3-pgvectors0.2.0
environment:
- "POSTGRES_USER=postgres"
- "POSTGRES_PASSWORD=ImmichDbPassword123"
- "POSTGRES_DB=immich"
- "POSTGRES_INITDB_ARGS=--data-checksums"
- "PGDATA=/var/lib/postgresql/data"
volumes:
- "./data/immich/database:/var/lib/postgresql/data"
shm_size: 128mb
networks:
- njorddeploy_net
restart: always
immich-redis:
container_name: njorddeploy-immich-redis
image: redis:6.2-alpine
volumes:
- "./data/immich/redis:/data"
networks:
- njorddeploy_net
restart: always
networks:
njorddeploy_net:
Start the service directly via the command line: docker compose up -d
Configuration & Environment Variables
Key configuration parameters and defaults derived from the NjordDeploy component template:
| Variable | Default Value | Description |
|---|---|---|
IMMICH_WEB_PORT |
2283 |
The external port for accessing the Immich web interface. |
IMMICH_SECRET_KEY |
dG9wU2VjcmV0S2V5Rm9ySW1taWNoQXBwQWJjMTIzNDU2Nzg5MA== |
A strong secret key for Immich. Keep this secure and do not change it after initial setup. |
IMMICH_JWT_SECRET |
c2Vjb25kU2VjcmV0S2V5Rm9ySW1taWNoQXBwRGVmMTIzNDU2Nzg5MA== |
A strong JWT secret for Immich. Keep this secure and do not change it after initial setup. |
IMMICH_API_KEY |
dGhpcmRTZWNyZXRLZXlGb3JJbW1pY2hBcHBHaGk1Njc4OTA1NDMyMQ== |
A strong API key for Immich. Keep this secure and do not change it after initial setup. |
DB_HOSTNAME |
immich-postgres |
Hostname for the PostgreSQL database service. |
DB_USERNAME |
postgres |
Username for the PostgreSQL database. |
DB_PASSWORD |
ImmichDbPassword123 |
Password for the PostgreSQL database user. |
DB_DATABASE |
immich |
Name of the PostgreSQL database. |
DB_PORT |
5432 |
Port for the PostgreSQL database service. |
REDIS_HOSTNAME |
immich-redis |
Hostname for the Redis service. |
REDIS_PORT |
6379 |
Port for the Redis service. |
TZ |
Etc/UTC |
Specify the timezone for the Immich services (e.g., 'America/New_York', 'Europe/London'). |
IMMICH_LOG_LEVEL |
info |
Set the logging level for Immich services (e.g., 'debug', 'info', 'warn', 'error'). |
IMMICH_MACHINE_LEARNING_ENABLED |
true |
Set to 'true' to enable machine learning features (object detection, facial recognition). Set to 'false' to disable. |
IMMICH_MACHINE_LEARNING_URL |
http://immich-machine-learning:3003 |
Internal URL for the Immich machine learning service. |
TRAEFIK_HOST |
immich.henkenyvonne.com |
The hostname to use for Traefik routing to Immich's web UI. E.g., 'immich.yourdomain.com'. |
Ecosystem & Enterprise Integration
- Reverse Proxy Ingress Ready: Pre-configured for Caddy, Traefik, or Nginx Proxy Manager with automatic Let's Encrypt TLS certificates.
- Zero-Trust Mesh VPN: Seamless integration with WireGuard or Tailscale/Headscale mesh networks for secure remote administration.
- Transactional State Backups: Ready for point-in-time database dumps and container-safe persistent volume freezing.
Effortless Management with NjordDeploy
Deploy, monitor, and update this service with a single click on your own hardware via the NjordDeploy Configurator.