Synology Photos Immich Foto Cloud – Vergleich, Eindruck, Installationsleitfaden

  • Ab sofort steht euch hier im Forum die neue Add-on Verwaltung zur Verfügung – eine zentrale Plattform für alles rund um Erweiterungen und Add-ons für den DSM.

    Damit haben wir einen Ort, an dem Lösungen von Nutzern mit der Community geteilt werden können. Über die Team Funktion können Projekte auch gemeinsam gepflegt werden.

    Was die Add-on Verwaltung kann und wie es funktioniert findet Ihr hier

    Hier geht es zu den Add-ons

Dann stell doch diese Frage direkt. Dann weiß man wenigstens was du meinst. Und dann wäre es auch nicht schlecht wenn du die Berichte verlinkst, damit man sich davon ein Bild machen könnte. In der Doku wird ja genau geschrieben was Immich supportet. Wenn das da nicht auftaucht, dann würde ich auch davon ausgehen, dass es offiziell nicht unterstützt wird.
 
@JohneDoe da dies schon etwas länger her ist, kann ich dir nicht sagen aus welchen Quellen. Ich kann dir aber sagen worum es ging OpenVINO.

Die DS224+ unterstützt OpenVINO, und man kann das irgendwie in Immich einbinden.
 
Ich kann nur zusammenfassen. Meine 218+ läuft nicht 24/7 und ich wollte die auch nicht ewig und 2 Tage rödeln lassen.
5000 Fotos dauern Tage wenn man u.a. auch rotierenden Rost in der Kiste hat. Ich hab dann den Machinelearningteil zum einen auf meinen Proxmox (Docker) gebracht und, als das auch zu langsam war, per VM auf meinen 12 Kerner-Hauptrechner.
Danach läuft das aber soweit gut. Neue Fotos kommen per Nextcloud-Sync (Proxmox, lokal) auf das NAS und wird dort neu indiziert.
 
  • Like
Reaktionen: Tuxnet
Bei mir läuft Immich Server und Immich ML auch inzwischen auf einer Proxmox Kiste sogar mit einer älteren GPU zur Beschleunigung (GTX1650). Die intelligente Suche läuft damit top
 
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
 
@visioneer_cgn

Vielen Dank für deine Erklärungen und die Bereitstellung der überarbeiteten Dateien.

Das Wochenende kann kommen.

Ich habe aber doch noch Fragen.
Wie finde ich die group_add heraus ?
Wie bekomme ich den IMMICH_API_KEY ?
 
@Tuxnet

du hast meine Beiträge am Anfang dieses Threads aber schon gelesen? Dort steht auch wie du deine API bekommst. Steht eigentlich schon im ursprünglichen Beitrag mit drin 😉 Den IMMICH_API_KEY holst du dir erst nach dem ersten Start von Immich direkt über die Weboberfläche. Deswegen kannst du den auch erst nachträglich einfügen.

group_add brauchst du in dem Stack nur für die GPU-//dev/dri-Geschichte, also dann, wenn du Hardwarebeschleunigung mit reinnehmen willst und der Container zwar auf /dev/dri zugreifen soll, dafür aber noch die passenden Gruppenrechte braucht. Wenn GPU bei dir kein Thema ist oder es auch so läuft, kannst du das einfach weglassen. So verstehe ich das zumindest, ABER: nicht mein Thema mit der GPU, weil GPU bei mir sowieso nix bringt, Habe mich daher damit auch bis auf vorhin mit dem Stack nicht weiter auseinandergesetzt, aber vielleicht kann das wer anders beantworten.
 
@visioneer_cgn stimmt da war was mit dem key, ist schon was länger her wo ich den stack installiert habe.
Das mit der GPU möchte ich auf jeden Fall mal Teste, da die Diskstation 24/7 an ist, spielt die zeit keine rolle.

Du schreibst das man die ,Die Zahlen bitte auf deinem NAS prüfen, muss ….. wie mache ich das ?
 
@Tuxnet
Herausfinden kannst du das auf der Synology per Shell mit: ls -ln /dev/dri

aber wie geschrieben, GPU ist nicht mein Thema
 
  • Like
Reaktionen: Tuxnet
@visioneer_cgn

Danke für Deine Mühen und ausführliche Antwort, unter anderem auch für den Fragesteller. Da kann sich mancher eine große Scheibe davon abschneiden. 👍
 
ja, von mir auch, Danke an @visioneer_cgn , dadurch habe ich den Album creator entdeckt und zwei Stunden die DB umgezogen auf die neue:
ghcr.io/immich-app/postgres:16-vectorchord0.3.0-pgvectors0.3.0, vorher war ich: tensorchord/pgvecto-rs:pg16-v0.2.0 vs und redis auf valkey
Mega und ein paar DB Settings geändert fürs Tuning.
Immich läuft jetzt wie die Hölle
 
Habt ihr etwas besonders herausgefunden? Was genau bedeutet das mit DB umgezogen? Hab die letzten Sete überflogen, verstehe es aber nicht ganz.

Darf ich mit euch, meine aktuell optimierte Installation teilen?

Code:
services:
  immich-redis:
    image: redis
    container_name: Immich-REDIS
    hostname: immich-redis
    security_opt:
      - no-new-privileges:true
    healthcheck:
      test: ["CMD-SHELL", "redis-cli ping || exit 1"]
    user: 1026:100
    environment:
      - TZ=Europe/Berlin
    volumes:
      - /volume2/docker/immich/redis:/data:rw
    restart: on-failure:5

  immich-db:
    image: ghcr.io/immich-app/postgres:16-vectorchord0.3.0-pgvectors0.2.0
    container_name: Immich-DB
    hostname: immich-db
    security_opt:
      - no-new-privileges:true
    volumes:
      - /volume2/docker/immich/db:/var/lib/postgresql/data:rw
    environment:
      - TZ=Europe/Berlin
      - POSTGRES_DB=immich
      - POSTGRES_USER=immichuser
      - POSTGRES_PASSWORD=immichpwpwpw88!
      # - DB_STORAGE_TYPE=HDD       # Optional: nur für HDD, ich hab ssd und da bleibt das weg.
    restart: on-failure:5

  immich-server:
    image: ghcr.io/immich-app/immich-server:release
    container_name: Immich-SERVER
    hostname: immich-server
    user: 1026:100
    security_opt:
      - no-new-privileges:true
    env_file:
      - stack.env
    ports:
      - 8212:2283
    volumes:
      - /volume2/docker/immich/upload:/usr/src/app/upload:rw
    restart: on-failure:5
    devices: # selber hinzugefügt wegen iGPu.
      - /dev/dri:/dev/dri # selber hinzugefügt wegen iGPu , sonst loeschen
    group_add: # das auch neu, soll mit dazu zu dem darüberliegenden.
      - 937  # das gehört auch dazu.
    depends_on:
      immich-redis:
        condition: service_healthy
      immich-db:
        condition: service_started

  immich-machine-learning:
    image: ghcr.io/immich-app/immich-machine-learning:release
    container_name: Immich-LEARNING
    hostname: immich-machine-learning
    user: 1026:100
    security_opt:
      - no-new-privileges:true
    env_file:
      - stack.env
    volumes:
      - /volume2/docker/immich/upload:/usr/src/app/upload:rw
      - /volume2/docker/immich/cache:/cache:rw
      - /volume2/docker/immich/matplotlib:/matplotlib:rw
    environment:
      - MPLCONFIGDIR=/matplotlib
      - MACHINE_LEARNING_MODEL_TTL=0 # damit es im speicher bleibt.
      - MACHINE_LEARNING_PRELOAD__CLIP__TEXTUAL=ViT-SO400M-14-SigLIP2-378__webli # genau dieses modell bleibt im speicher.
    restart: on-failure:5
    depends_on:
      immich-db:
        condition: service_started
Selbstverständlich nur im LAN. Habe ich dieses tuning schon drin, wovon ihr redet? Ich meine, dass ich das auch so eingesteltl habe, dass die KI immer im RAM ist, damit es noch schneller Pflutscht. Dann auf SSD und ReverSProxy, macht es nochmal schneller. Alles in Allem,bin ich bislang sehr zufriden. =)
 

Additional post fields

 

Kaffeautomat

Wenn du das Forum hilfreich findest oder uns unterstützen möchtest, dann gib uns doch einfach einen Kaffee aus.

Als Dankeschön schalten wir deinen Account werbefrei.

:coffee:

Hier gehts zum Kaffeeautomat