Immich auf Synology DSM bereitstellen

Letzte Aktualisierung am 04.10.2025, 23:10:10 Uhr

Ich bin schon länger auf der Suche nach einer Lösung, um meine ganzen Fotos zu verwalten. Angefangen hat es vor 10 Jahren mit einem SMB-Share auf meinem NAS. Mit den Jahren kamen immer mehr Fotos von Events, Urlaube, etc. hinzu.

Das SMB-Share hat mich nie im Stich gelassen. Klare Strukturen und Sortierung erfolgt entsprechend des Namensschemas für Die Hauptverzeichnisse und deren Unterordnern. Gerade im Urlaub machen oftmals mehre Personen Fotos. Durch die Unterordner war immer nachvollziehbar, wer die Bilder gemacht hat.  Auch die Sicherung des SMB-Shares war simpel. Es gibt keine Abhängigkeiten zu Datenbanken, weitere Informationen wie Metadaten, Miniaturansichten, etc.

Seit ca. einem Jahr macht mich die aktuelle Lösung nicht mehr vollumfänglich glücklich. Keine Tagging, keine Schlagwörter, Geo Informationen, Teilen von Fotos ist umständlich bzw. nicht möglich.

Nach einigen Tests von verschiedenen Tools (z.B. Synology Photo) habe mir auch die Open Source Lösung Immich angeschaut. Nach vielen Recherchen/Lesen, habe das Tool ausprobiert und habe ich mich entschlossen dieses auch aufzusetzen.

Nachstehend beschreibe ich die notwendigen Schritte für den initialen Installation auf einem Synology NAS auf dem DSM 7.2.x installiert ist. Beim Test verwende ich Immich in der Version v1.134.0. Zudem die jeweiligen Standard Ports der Container bzw. Anwendungen.

Vorbereitungen

Docker

Falls noch nicht geschehen, ist zu erst das Paket „Docker“ über das Package Center zu installieren.

Es ist kein Neustart des DSM/NAS erforderlich. Der Container Manager kann nach erfolgreicher Installation sofort verwendet werden.

SMB-Shares

Ich habe ein SMB-Share mit dem Namen „docker“. Dort lege ich für jedes Projekt/Container ein gleichnamiges Verzeichnis an. In diesem Fall heißt der Ordner „immich-app“.

Umso später den Überblick behalten. Aber auch wenn das Docker Projekt wieder gelöscht werden sollte, alle Daten, Dateien, etc. auf einen Schwung löschen zu können.

Die Daten, welche durch die Container von Immich erzeugt werden, lagere ich gerne in ein dediziertes SMB-Share aus. Dieses heißt „immich“.

Benutzer und Gruppen

Ein neuer Benutzer mit dem Namen „immich“ anlegen. Das Passwort darf gerne lange und komplex sein. Das Passwort muss nicht notiert werden, da später keine Anmeldung vorgesehen ist.

Danach lege ich noch eine neue Gruppe mit dem Namen „immich“ an.

Bereitstellen der Container

Es gibt verschiedene Anleitungen im Internet, welche die Bereitstellung der Container mit Hilfe von Portainer auf einer Synology NAS realisieren. Ich beschränke mich auf 1st Party Lösungen, um so auch bei vermeidlichen Problemen den technischen Support von Synology an meiner Seite zu haben.

Network

Im Gegensatz zu allen mir bekannten Anleitungen im Internet, habe ich mich dazu entschieden das notwendige Netzwerk Objekt manuell im Vorfeld anzulegen. Das hat der Vorteil, dass das IPv4 Subnetz von mir vorgegeben werden kann. Des Weiteren wird das Objekt bei einem „Clean“ und „Build“ des Projects nicht gelöscht und neu angelegt. Was zur Folge hat, dass auch ein zufällig gewähltes IPv4 Subnetz genommen wird.

Falls im DSM die Firewall aktiv ist, muss nun auch für das neue Subnetz eine Regel angelegt werden. Somit ist sichergestellt, dass jegliche Kommunikation möglich ist.

YAML Konfiguration bereitstellen

Das Tool Immich besteht aus mehreren Containern. Hier bietet es sich an dieses als Project im Container Manager zu erstellen.

Deshalb habe ich Basis des Best Practice der Entwickler von Immich eine YAML Datei geschrieben. Ich habe, soweit es in meinen Augen sinnvoll ist, Parameter bzw. deren Werte in eine Environment Datei (env File) ausgelagert. Umso die größtmögliche Flexibilität zu haben.

Die aktuellen Fassungen der Dateien habe ich in einem Repository auf Github bereitgestellt.

Synology DSM 7.2.x Link

Gerne gehe ich nachstehend auf die wichtigsten Werte ein.

Datei .env

UID: Es handelt sich um die ID des Benutzer immich, welcher vorhin im Kapitel Vorbereitungen -> Benutzer und Gruppen erstellt worden ist. Die ID kann meines Wissens nach aktuell nur über die Shell (via SSH) mit dem Befehl id -u immich ausgelesen werden.
GID: Es handelt sich um die ID der Gruppe immich, welcher vorhin im Kapitel Vorbereitungen -> Benutzer und Gruppen erstellt worden ist. Die ID kann meines Wissens nach aktuell nur über die Shell (via SSH) mit dem Befehl id -G immich | awk ‚{ print $2 }‘ ausgelesen werden.
DSM_APP_SHARE: Absoluter Pfad des SMB -Share, auf welchen die Daten der Container später gespeichert werden sollen.

IMMICH_API_KEY: API Key meines Immich Benutzers in dessen Kontext später die Alben in Immich automatisch erzeugt werden sollen. Dieser kann natürlich erst nach der initialen Einrichtung von Immich hinterlegt werden.
DB_PASSWORD: Hier ein neues, langes, komplexes Passwort eingeben.

Sind alle Dateien für die Umgebung angepasst, sind diese in dem SMB Share docker/immich-app abzulegen bzw. überschreiben.

Verzeichnisse für Daten der Container erstellen

Ich habe bei den Vorbereitungen ein SMB-Share mit dem Namen „immich“ erstellt. In diesem Verzeichnis müssen nun Unterverzeichnisse erstellt werden.
Wenn du die Namen der Verzeichnisse in der YAML-Datei geändert hast, sind an dieser Stelle natürlich die neuen Namen zu verwenden.

Project in Container Manager anlegen

Das Tool Immich besteht aus mehreren Containern. Hat bietet es sich an dieses als Project im Container Manager zu erstellen.

Der erste Start aller Container kann einige Zeit in Anspruch nehmen. Daher nicht ungeduldig werden. Zeit für einen Tee.
Ist die Up Time der Container bei ca. 1 Minute ist die Anwendung in der Regel auch verfügbar.

Zugriff auf die App

Es gibt zwei Möglichkeiten den Zugriff auf Immich für die Anwender zu realisieren:

Dedizierten Port für die Anwendung

In diesem Fall ist dies aktuell „2283/tcp“. D.h. der Aufruf im Browser erfolgt über <IP:2283> oder <FQDN:2283> der NAS. In diesem Fall ist bei aktiver Firewall eine weitere Regel anzulegen.

Reverse Proxy

Diese Funktionalität wird oftmals verwendet, wenn viele/alle Anwendungen über verschiedene FQDN, aber immer über den gleichen Port (z.B. 443/tcp) erreichbar sein sollen. Die Konfiguration als Reverse Proxy findest du im DSM unter Control Panel -> Login Portal -> Advanced.

Nun kann die initiale Einrichtung und Konfiguration von Immich durchgeführt werden. Darauf gehe ich an dieser Stelle nicht mehr drauf ein.

Benutzermanagement über DSM

Immich bringt standardmäßig eine eigene Benutzerverwaltung mit. Sprich es gibt keine Verknüpfung mit dem Synology DSM. In diesem Kapitel gehe ich auf die Anbindung von Synology DSM mit Hilfe von SSO-Server ein.

In der aktuellen Version bietet Immich für die Authentifizierung der Benutzer das Protokoll OAuth an. Genau dieses mache ich mir zu nutzen. Denn Synology bietet als 1st Party Package das Paket „SSO-Server“ an. Somit können sich später alle Benutzer aus dem Synology DSM an Immich anmelden.

Voraussetzung dafür ist, dass

  • es für den SSO-Server einen dedizierten FQDN (z.B. login.nas01.lab03.daniel.wydler.eu) gibt.
  • es für Immich einen dedizierten FQDN (z.B. immich.nas01.lab03.daniel.wydler.eu) gibt und auch erreichbar darüber ist.
  • ein gültiges SSL-Zertifikat (z.B. von Let’s Encrypt) vorhanden ist, welches die FQDN sowohl login.nas01.lab03.daniel.wydler.eu und immich.nas01.lab03.daniel.wydler.eu abgedeckt.
  • die Benutzer im DSM eine E-Mail-Adresse im Profil eingetragen haben müssen.

SSO Server in Betrieb nehmen

Falls noch nicht geschehen bzw. in Verwendung über das Package Center das Paket „SSO-Server“ suchen und anschließend installieren.
Nach erfolgreicher Installation die App „SSO-Server“ starten.
Bitte bei beim Parameter die Dokumentation (Link) von Immich beachten.
Das Paket erzeugt selbstständig die Application ID und Application Secret. Diese Informationen sind immer einsehbar. Dazu den Eintrag aus der Liste (siehe letzter Screenshot) markieren und auf die Schaltfläche „Edit“ klicken. Es öffnet sich ein weiterer Dialog.

Konfiguration von OAuth in Immich

Der Parameter „ISSUER_URL“ muss dem Wert aus dem Synology SSO-Server entsprechen. Die URL ist im SSO-Server unter Services -> OIDC -> Well-known URL zu finden.

Der Parameter „Client_ID“ entspricht der Application ID. Dieser Wert findet man ebenfalls im Synology SSO Server, unter Application. Dort den entsprechenden Eintrag auswählen und editieren.

Der Parameter „Client_SECRET“ entspricht dem Application secret. Dieser Wert findet man ebenfalls im Synology SSO Server, unter Application. Dort den entsprechenden Eintrag auswählen und editieren.

Im unteren Bereich können noch optionale Einstellungen vorgenommen werden, wie z.B. der Test für die Anmeldung via OAuth.

Standardmäßig können sich nun alle Benutzer, welche im Synology DSM vorhanden sind, auch an immich anmelden. Wenn dies nicht gewünscht ist, ist der Parameter „Auto Register“ zu deaktivieren (was im Screenshot bereits der Fall ist). D.h. soll sich ein Benutzer aus dem Synology DSM anmelden können, gibt es zwei Optionen:

  • Temporär den Parameter aktivieren bis eine initiale Anmeldung durchgeführt worden ist.
  • Den neuen Benutzer manuell mit demselben Benutzernamen in Immich anlegen.
Sind alle Konfigurationen durchgeführt müssen diese über die Schaltfläche „Save“ noch gespeichert werden.
Danach gibt es in der Web UI am Seiten Ende die Option für die Anmeldung über OAuth.
Benutzer, welche über die Funktion „AUTO REGISTER“ an Immich angemeldet haben, müssen aktuell leider den (Benutzer)namen noch manuell hinzufügen.

Danach erscheint überall der Nutzernamen.

Aktualisierung der Docker Images

Natürlich müssen mit der Zeit auch die Container Images aktualisiert werden. Nachstehend beschreibe ich die verschiedenen Schritte.

Aktualisierung eines einzelnen Container

Wie in dem Screenshot oben zu sehen ist, gibt es „nur“ für redis ein neues Image. Es können natürlich problemlos auch mehrere Images aktualisiert werden.
Sind alle Images aktualisiert, kann das Project wieder gestartet werden.

Aktualisierung von Immich

Immich Stack wieder starten

Das kann natürlich beim ersten Start wieder länger dauern. Daher nicht ungeduldig werden.

Einbinden vorhandener Bildersammlung

Nachdem die Instanz up and running ist, geht es natürlich noch darum die Bilder zu importieren. Auf Grund diverser Kommentare im Forum und Erfahrungsberichte, sowie die Warnungen auf der GitHub Startseite des Projekts, habe ich mich für folgende Lösung entschieden:

  • Ich lege die Bilder nach wie vor auf meinem bestehenden SMB-Share „photo“ ab.
  • Reiche dieses Share als Volume (read only) in der Docker Compose File an Immich durch.
  • Verwende in Immich die Funktion „External Library Management“. Alle Miniaturansichten, Metadaten, KI, Datenbank, etc. werden auf das SMB-Share „immich“ geschrieben.
  • Die Sicherung der Bilder kann wie bisher erfolgen – keep it simple. Sollte einmal bei einem Update von Immich es zu einem Defekt/Ausfall kommen, ist das zwar unschön. Aber meine Bilder sind nach wie verfügbar und einsehbar.
Zuerst muss das Volume auf dem das SMB Share „photo“ liegt, herausgefunden werden. Dies geht über das Control Panel in DSM.
Damit Immich von dem SMB Share bzw. Volume lesen kann, muss dieses in den Container durchgeschleift werden. Dazu muss die YAML Konfiguration des Projects erweitert werden. Dies ist allerdings ausschließlich möglich, wenn alle Container gestoppt sind.

Anschließend in den Browser wechseln und Immich aufrufen. Für die Konfiguration muss sich das Benutzerkonto mit den Administrationsrechte anmelden.

Diese Schritte können für beliebig viele SMB-Shares wiederholt werden. Wichtig dabei ist, dass jeder Pfad/Name eindeutig sein muss!

Nun können die Bilder einem oder mehreren Alben zugewiesen und verwaltet werden.

Automatisch Alben erzeugen

Wer aber so faul ist wie ich und gerne die Ordnerstruktur auf dem SMB-Share, auf dem die Bilder liegen als Album haben möchte, sucht natürlich nach Automatismen. Und ich bin fündig geworden. 🙂

Zuerst muss wieder das Project bzw. dessen Container gestoppt werden. Anschließend müssen folgende Zeilen in der YAML Configuration des Projects (ganz am Ende) ein kommentiert werden:

immich-folder-album-creator:
  container_name: immich_folder_album_creator
  image: salvoxia/immich-folder-album-creator:latest
  security_opt:
    # Prevent escalation of privileges after the container is started
    # https://immich.app/docs/FAQ/#how-can-i-run-immich-as-a-non-root-user
    - no-new-privileges:true
  cap_drop:
    # Prevent access to raw network traffic
    # https://immich.app/docs/FAQ/#how-can-i-run-immich-as-a-non-root-user
    - NET_RAW
  restart: unless-stopped
  environment:
    API_URL: http://${IMMICH_SERVER_HOSTNAME}:${IMMICH_SERVER_PORT}/api
    API_KEY: ${IMMICH_API_KEY}
    ROOT_PATH: /volume1/photo
    ALBUM_LEVELS: "1,3"
    CRON_EXPRESSION: "*/5 * * * *"
    RUN_IMMEDIATELY: true
    TZ: ${TZ}
  depends_on:
    immich-server:
      condition: service_healthy

Sehr wichtig dabei ist, dass die Einrückungen der Zeilen in der YAML-Datei passen. Anderenfalls wird sich das Project später nicht mehr starten lassen.

Abgesehen davon muss der Variablen IMMICH_API_KEY ein API Key von Immich zugewiesen werden. Dies kann in der Datei mit dem Namen .env getan werden.

Der API Key von dem Benutzer ausgestellt werden, auf den die externe Bibliothek auch läuft. In dessen Kontext werden schlussendlich auch die Alben erstellt.

Über den Parameter „ALBUM_LEVELS“ lässt sich granular steuern, für welche Verzeichnisse ein Album erzeugt werden sollen. Wie, was, wo kann in der Dokumentation nachgelesen werden.

Die Variable „ROOT_PATH“ beinhaltet den absoluten Pfad des Verzeichnisses innerhalb des Containers „Immich_Server“. In diesem Fall ist es der Wert „/volume1/photo“.

Anschließend kann das Project über den Container Manager im Synology DSM wieder gestartet werden. Sobald alle Container laufen und „healthy“ sind, werden die Alben erstellt.

Fehlersuche

Beendet sich ein Container unerwartet, so ist mein erster Anlaufpunkt das Logfile des Containers. Dieses findet man im Container Manager -> Container.

Den betroffenen Container auswählen und danach den Reiter „Log“ anklicken.

Viel Spaß beim Ausprobieren. 🙂

Abonnieren
Benachrichtige mich bei
11 Comments
neueste
älteste
Inline Feedbacks
View all comments
Stefan
03.10.2025 16:05

Sehr schöne Anleitung. Jedoch gibt es ein paar Abweichungen in den Images zur nun aktuellen offiziellen Releaseversion 2.0.

Wird das in dieser Anleitung nochmal angeglichen? 🙂

Stefan
Reply to  Daniel
04.10.2025 10:48

Klasse! Das ging ja fix 😉 Danke! Folgendes ist mir noch aufgefallen (Kleinigkeiten): – Der Screenshot s40 und s41 sind von der Reihenfolge zu tauschen. – Es sollte klarer beschrieben werden, dass die Compose.YAML schon Pfade enthält, die etwaig anzupassen sind: Der Pfad /volume3/photo:/volume3/photo:ro ist in der Regel ja eher /volume1/photo als Default. – Beim Anlegen des Projekts im Container-Manager:  1. Pfad: Hier wird der Pfad /docker/immich-test ausgewählt.  Der wird in den vorherigen Schritten jedoch nicht angelegt. Gemeint ist hier /docker/immich-app oder?  2. Es wird empfohlen eine benutzerdefinierte YAML-Datei unter Punkt 4 beim Anlegen des Projekts im Container Manager einzufügen.… Weiterlesen »

Jörg
11.09.2025 13:09

Super Anleitung, vielen Dank dafür

Jean-Marc
28.08.2025 00:29

Hallo Daniel
Super Anleitung. Es scheint sich aber noch ein Fehler zu geben im Bereich dieses Textes:
Wer so wie ich ein SMB-Share mit Bildern an Immich als Externe Bibliothek durchreichen möchte, kann dies mit Zeile 24 zu tun. Wichtig in diesem Fall ist zu wissen, auf welchen Volume das SMB-Share im DSM aktuell liegt.“
Die Zeile 24 enthält „volumes:“. Du hast wohl Zeile 25 gemeint, jedoch wird hier nun eine Variable aus env verwendet. Die Lösung ist gut, aber die Beschreibung noch falsch.

Kevin
13.08.2025 22:32

Vielen Dank, dass ist die beste Anleitung die ich bislang gefunden habe! Richtig tolle Bilderstrecke! Wenn ich es richtig verstehe kann bei euch jeder auf das smb share zugreifen und jeder kann alle Bilder sehen? Vielleicht hast du eine Idee für folgende Situation? Bislang haben wir als Familie unsere Fotos in /volume1/homes/Familienmitglied/Photos gespeichert (hochgeladen über Photosync, das ist eine super App). Jedes Familienmitglied hat logischerweise Fotos, die die anderen nicht sehen sollen, deswegen nutzen wir kein gemeinsames smb share. Wie kann Immich auf die Ordner jedes Familienmitglieds zugreifen ohne zu viel Rechte (=kein Admin, keine weiteren Dateien außer die Fotos)… Weiterlesen »

Kevin
Reply to  Kevin
13.08.2025 22:35

Noch 2 weitere Fragen

  • kennst du ein Script, mit dem man Album automatisch nach Tags (subject in den Metadaten) erstellen lassen kann?
  • Welches Clip Model nutzt du – kennst du eines, dass OCR in Fotos erkennt?