Moin,
der alte Stack stammt ursprünglich aus Anfang 2025 und ist für eine heutige Neuinstallation von Immich nicht mehr ideal, auch wenn er damals funktioniert hat. Wer damals damit installiert hat, hat in der Regel auch heute noch eine laufende Installation (meine rennt auch noch einwandfrei) und dürfte versionstechnisch auf dem aktuellen Stand sein. Trotzdem sollte man sich Gedanken machen, an einer älteren laufenden Installation bei Gelegenheit auch den Unterbau einmal anzupassen. Ein alter Stack wird durch reine Updates der Container nicht automatisch technisch modernisiert. Das hatte ich bei meinem Container demnächst auch vor.
Jedenfalls haben sich seitdem bei Immich einige Grundlagen geändert, unter anderem bei den empfohlenen Images, der Datenbank-Basis und einzelnen Diensten im offiziellen Compose-Setup.
Da gefragt wurde, habe ich den Stack jetzt einmal auf den aktuellen Stand für eine Neuinstallation angepasst. Der neue Aufbau orientiert sich an der heutigen Immich-Empfehlung, ist sauberer für Portainer / Synology vorbereitet und berücksichtigt aktuelle Komponenten sowie eine vorbereitete GPU-Unterstützung. Für eine frische Installation sollte daher bitte nur noch der neue Stack verwendet werden. Ich habe ihn selbst so noch nicht getestet, sollte aber so grundsätzlich funktionieren (korrigiert mich sonst gerne).
GPU macht im Übrigen nicht bei jedem Sinn — bei mir mit der
DS1522+ ist das zum Beispiel eher unsinnig. Ich habe es aber mit reingenommen, weil heute explizit danach gefragt wurde.
Was ich ansonsten geschrieben habe, passt beim Vorgehen weiterhin weitestgehend:
- Portainer als Weg für die Installation passt weiterhin. Immich hat dafür inzwischen sogar eine eigene Portainer-Anleitung.
- Der Ansatz, einen eigenen Upload-Ordner außerhalb des Docker-Verzeichnisses zu verwenden, passt ebenfalls weiterhin. Im offiziellen Setup wird das heute generell über UPLOAD_LOCATION gelöst.
- Das Einbinden der bestehenden Fotoordner als externe Bibliotheken passt nach wie vor sehr gut, gerade wenn Immich und Synology Photos parallel mit demselben Datenstand laufen sollen.
- Auch der Hinweis, dass man in Immich bei den externen Bibliotheken die Container-Pfade und nicht die /volume1/...-Pfade eintragen muss, ist weiterhin richtig.
- Der immich-folder-album-creator passt weiterhin als Ergänzung, wenn aus Ordnern automatisch Alben gebaut werden sollen; der API-Key kommt logischerweise auch heute erst nach dem ersten Start von Immich dazu.
Ihr könnt meinen Beitrag am Anfang des Threads also weiterhin im Grunde noch als Erklärung und Orientierung nutzen.
Jedenfalls - wer eine ältere Immich-Installation schon länger einfach nur per Updates mitgezogen hat, sollte sich den eigenen Stack ruhig auch einmal anschauen und bei Gelegenheit modernisieren. Das heißt nicht automatisch, dass die bestehende Installation falsch läuft, aber der Aufbau von Immich hat sich seit den älteren Ständen und spätestens seit der Stable-Variante doch an mehreren Stellen weiterentwickelt. Normale Container-Updates ziehen solche Änderungen am Stack selbst nicht automatisch nach.
Gerade wenn man sowieso einmal an die Installation ran muss, würde ich heute eher den Stack auf den aktuellen Stand bringen, statt alte Altlasten einfach immer weiter mitzuschleppen. Allein durch die Stable-Schiene, die Änderungen am empfohlenen Setup und die neueren Funktionen ergibt das aus meiner Sicht inzwischen einfach mehr Sinn.
Konkret würde ich bei so einer älteren Installation vor allem den Stack einmal auf den heutigen Stand ziehen. Also nicht einfach nur weiter die Container updaten, sondern den Aufbau selbst einmal sauber anpassen, alte Komponenten rauswerfen und die heute empfohlene Basis übernehmen. Damit läuft Immich nicht zwangsläufig plötzlich sichtbar besser, aber der Unterbau passt wieder sauber zum aktuellen Stand, spätere Updates werden nachvollziehbarer und man schleppt weniger alten Kram mit, der irgendwann doch wieder Arbeit macht.
Wenn man sowieso einmal dran ist, kann man in dem Zug auch gleich noch schauen, ob man Dinge wie Backups, externe Bibliotheken, Hardware-Transcoding oder ML sauberer und aktueller aufsetzen will. Muss man nicht alles sofort machen, aber wenn man die Installation einmal anfasst, würde ich persönlich eher einmal ordentlich aufräumen als den alten Stand einfach immer weiter mitzunehmen.
VG V.
Stack:
Code:
services:
immich-server:
container_name: immich_server
hostname: immich-server
image: ghcr.io/immich-app/immich-server:${IMMICH_VERSION}
user: "1026:101"
security_opt:
- no-new-privileges:true
cap_drop:
- NET_RAW
env_file:
- stack.env
ports:
- "8212:2283"
devices:
- /dev/dri:/dev/dri
volumes:
- ${UPLOAD_LOCATION}:/data
- /etc/localtime:/etc/localtime:ro
# Externe Libraries / bestehende Foto-Ordner
- /volume1/photo:/home/photo/archiv:rw
- /volume1/homes/user1/Photos:/home/user1:rw
- /volume1/homes/user2/Photos:/home/user2:rw
- /volume1/homes/user3/Photos:/home/user3:rw
- /volume1/homes/user4/Photos:/home/user4:rw
depends_on:
- redis
- database
restart: always
healthcheck:
disable: false
immich-machine-learning:
container_name: immich_machine_learning
hostname: immich-machine-learning
image: ghcr.io/immich-app/immich-machine-learning:${IMMICH_VERSION}-openvino
user: "1026:101"
security_opt:
- no-new-privileges:true
cap_drop:
- NET_RAW
# GPU-ready (Intel/OpenVINO-Stil, inline für Portainer)
devices:
- /dev/dri:/dev/dri
# Falls /dev/dri zwar gemountet ist, aber Berechtigungen fehlen,
# kannst du optional noch group_add ergänzen, z.B.:
# group_add:
# - "44" # video
# - "109" # render
# Die Zahlen bitte auf deinem NAS prüfen.
env_file:
- stack.env
volumes:
- /volume1/docker/immich/ml-cache:/.cache:rw
- /volume1/docker/immich/ml-config:/.config:rw
- /volume1/docker/immich/ml-tmp:/tmp:rw
restart: always
healthcheck:
disable: false
redis:
container_name: immich_redis
hostname: immich-redis
image: docker.io/valkey/valkey:9
user: "1026:101"
security_opt:
- no-new-privileges:true
cap_drop:
- NET_RAW
command: valkey-server --save 60 1 --loglevel warning
healthcheck:
test: redis-cli ping || exit 1
interval: 10s
timeout: 5s
retries: 5
volumes:
- /volume1/docker/immich/redis:/data:rw
restart: always
database:
container_name: immich_postgres
hostname: immich-db
image: ghcr.io/immich-app/postgres:14-vectorchord0.4.3-pgvectors0.2.0
security_opt:
- no-new-privileges:true
cap_drop:
- NET_RAW
environment:
POSTGRES_PASSWORD: ${DB_PASSWORD}
POSTGRES_USER: ${DB_USERNAME}
POSTGRES_DB: ${DB_DATABASE_NAME}
POSTGRES_INITDB_ARGS: "--data-checksums"
DB_STORAGE_TYPE: "HDD"
TZ: ${TZ}
volumes:
- ${DB_DATA_LOCATION}:/var/lib/postgresql/data:rw
shm_size: 128mb
restart: always
healthcheck:
disable: false
immich-folder-album-creator:
container_name: immich_folder_album_creator
image: salvoxia/immich-folder-album-creator:latest
user: "1026:101"
security_opt:
- no-new-privileges:true
cap_drop:
- NET_RAW
depends_on:
- immich-server
environment:
API_URL: http://immich-server:2283/api
API_KEY: ${IMMICH_API_KEY}
ROOT_PATH: /home/photo/archiv
ALBUM_LEVELS: "2,2"
CRON_EXPRESSION: "*/5 * * * *"
TZ: ${TZ}
volumes:
- /volume1/photo:/home/photo/archiv:rw
restart: unless-stopped
und die dazugehörige Stack.env
Code:
# Basis
TZ=Europe/Berlin
IMMICH_VERSION=v2
# Immich Storage
UPLOAD_LOCATION=/volume1/photo2
DB_DATA_LOCATION=/volume1/docker/immich/db
# Datenbank
DB_USERNAME=immichnutzer
DB_PASSWORD=BITTE_NEU_SETZEN
DB_DATABASE_NAME=immich
# Optional / hilfreich
IMMICH_LOG_LEVEL=log
# Machine Learning
MACHINE_LEARNING_MODEL_TTL=300
MACHINE_LEARNING_CACHE_FOLDER=/.cache
MACHINE_LEARNING_WORKERS=1
MACHINE_LEARNING_REQUEST_THREADS=1
MACHINE_LEARNING_MODEL_INTRA_OP_THREADS=2
MACHINE_LEARNING_MODEL_INTER_OP_THREADS=1
MACHINE_LEARNING_WORKER_TIMEOUT=300
# Folder Album Creator
IMMICH_API_KEY=BITTE_NEU_SETZEN