Immich is a high performance self-hosted photo and video backup solution.
| Tag | Description | Platforms |
|---|---|---|
latest |
Ubuntu + ML (CPU) | amd64, arm64 |
noml |
Ubuntu, ML disabled (smaller image) | amd64, arm64 |
cuda |
Ubuntu + ML with NVIDIA CUDA | amd64 |
openvino |
Ubuntu + ML with Intel OpenVINO | amd64 |
Pin a specific upstream Immich release with the semver tag, optionally with the variant suffix:
ghcr.io/imagegenius/immich:2.7.5
ghcr.io/imagegenius/immich:2.7.5-cuda
- PostgreSQL: Version 14-17 with VectorChord — use
ghcr.io/immich-app/postgresto skip extension setup. - Valkey/Redis: External or via docker mod (see below). SSL Postgres via
DB_URL.
- Set
DOCKER_MODS=imagegenius/mods:universal-redis - Set
REDIS_HOSTNAME=localhost
---
services:
immich:
image: ghcr.io/imagegenius/immich:latest
container_name: immich
environment:
- PUID=1000
- PGID=1000
- TZ=Etc/UTC
- DB_HOSTNAME=192.168.1.x
- DB_USERNAME=postgres
- DB_PASSWORD=postgres
- DB_DATABASE_NAME=immich
- REDIS_HOSTNAME=192.168.1.x
- DB_PORT=5432 #optional
- REDIS_PORT=6379 #optional
- REDIS_PASSWORD= #optional
- SERVER_HOST=0.0.0.0 #optional
- SERVER_PORT=8080 #optional
- MACHINE_LEARNING_HOST=0.0.0.0 #optional
- MACHINE_LEARNING_PORT=3003 #optional
- MACHINE_LEARNING_WORKERS=1 #optional
- MACHINE_LEARNING_WORKER_TIMEOUT=120 #optional
volumes:
- path_to_appdata:/config
- path_to_photos:/photos
- path_to_libraries:/libraries #optional
ports:
- 8080:8080
restart: unless-stopped
valkey:
image: valkey/valkey:8-bookworm
container_name: valkey
ports:
- 6379:6379
postgres14:
image: ghcr.io/immich-app/postgres:14-vectorchord0.4.3-pgvectors0.2.0
container_name: postgres14
environment:
POSTGRES_USER: postgres
POSTGRES_PASSWORD: postgres
POSTGRES_DB: immich
# Uncomment if not on SSDs:
# DB_STORAGE_TYPE: 'HDD'
volumes:
- path_to_postgres:/var/lib/postgresql/data
ports:
- 5432:5432| Parameter | Function |
|---|---|
-p 8080 |
WebUI Port |
-e PUID=1000 |
UID for permissions — see below |
-e PGID=1000 |
GID for permissions — see below |
-e TZ=Etc/UTC |
Timezone, see this list |
-e DB_HOSTNAME=192.168.1.x |
PostgreSQL host |
-e DB_USERNAME=postgres |
PostgreSQL username |
-e DB_PASSWORD=postgres |
PostgreSQL password |
-e DB_DATABASE_NAME=immich |
PostgreSQL database |
-e REDIS_HOSTNAME=192.168.1.x |
Redis/Valkey host |
-e DB_PORT=5432 |
PostgreSQL port |
-e REDIS_PORT=6379 |
Redis port |
-e REDIS_PASSWORD= |
Redis password |
-e SERVER_HOST=0.0.0.0 |
Immich server bind host |
-e SERVER_PORT=8080 |
Immich server port |
-e MACHINE_LEARNING_HOST=0.0.0.0 |
ML server bind host |
-e MACHINE_LEARNING_PORT=3003 |
ML server port |
-e MACHINE_LEARNING_WORKERS=1 |
ML worker count |
-e MACHINE_LEARNING_WORKER_TIMEOUT=120 |
ML worker timeout |
-v /config |
App config; ML model cache (~1.5GB with defaults) |
-v /photos |
Immich photo library |
-v /libraries |
External libraries to track |
- Mount
/dev/driinto the container (--device=/dev/dri:/dev/dri). - For OpenVINO, verify CPU support; also add
--device-cgroup-rule='c 189:* rmw' -v /dev/bus/usb:/dev/bus/usb.
- Install the NVIDIA container toolkit.
- Run with
--runtime=nvidia -e NVIDIA_VISIBLE_DEVICES=allor--gpus=all.
- Mount the library folder at
/libraries(or/libraries/<user>for multi-user). - In Immich admin settings, register
/libraries(or per-user) as an external path. - In account settings, add a library pointing to
/librariesor/libraries/<user>.
Set PUID=1000 PGID=1000 to match volume ownership on the host (id user to find yours). Optionally UMASK=022 (works subtractively, not additively).
docker pull ghcr.io/imagegenius/immich:latest
docker stop immich && docker rm immich
# recreate with the same docker run parameters
docker image prune # optional: remove dangling imagesOr with compose: docker compose pull && docker compose up -d.
CI/CD runs on GitHub Actions, following the container workflow used by home-operations/containers. Variants are Dockerfile stages selected at build time by docker-bake.hcl; the s6-overlay supervision tree lives under root/. Upstream Immich versions are tracked by Renovate via annotations on the bake file.
