Immich installieren: Docker-Anleitung für Version 3
Immich mit Docker Compose installieren und einrichten: Admin-Konto, Reverse Proxy mit Caddy, App und Backup. Die Google-Photos-Alternative für VPS und NAS.

Inhalt
Immich 3.3.6Docker 29.9Ubuntu 24.04In einer Welt, in der Datenschutz immer wichtiger wird, ist Immich eine erfrischende Alternative zu den großen Cloud-Diensten wie Google Photos oder iCloud. Es handelt sich dabei um eine selbstgehostete, quelloffene Lösung, die dir volle Kontrolle über deine Fotos und Videos gibt. Immich ist kostenlos. Du zahlst nur für den Server, auf dem es läuft. In diesem Artikel zeige ich dir Schritt für Schritt, wie du Immich mit Docker auf deinem Homeserver, NAS oder einem anderen Linux-basierten System installierst und einrichtest. Getestet habe ich die Anleitung mit Immich 3.3.6 auf einem frischen Ubuntu-24.04-Server.
Open Source: Was macht Immich so besonders?
Immich ist mehr als nur eine weitere Fotoverwaltung. Der Entwickler Alex Tran hat die Software ursprünglich entwickelt, um die Fotos seines Neugeborenen sicher und privat zu speichern - eine Alternative zu Google Photos, die er selbst kontrollieren konnte. Heute ist Immich deutlich ausgereifter, mit beeindruckenden Funktionen:
- Moderne, Google Photos-ähnliche Benutzeroberfläche
- Automatische Foto-Uploads von Android und iOS
- Gesichtserkennung und KI-basierte Bildsuche
- Volle Kontrolle über deine Daten
Voraussetzungen für die Installation
Immich kann mittels Docker auf den meisten Linux-Systemen installiert werden. In diesem Video (YouTube) gehe ich die Installation auf einem VPS durch. Folgendes wird benötigt:
- Server mit Docker: Ein Server, auf dem Docker installiert ist.
- Hardware-Anforderungen: Empfohlen werden 6 GB RAM und 4 CPU-Kerne. In der Regel reichen jedoch auch 4 GB RAM und 2 CPU-Kerne aus. Im Test (4 vCPU, 8 GB RAM) belegten die vier Container im Leerlauf zusammen rund 1,7 GB RAM. Die Docker-Images sind zusammen etwa 4,4 GB groß.
- Speicherplatz: Ausreichend Speicherplatz für Fotos und Videos.*
- Optional:
- Reverse Proxy: Ein Reverse Proxy (z. B. Nginx Proxy Manager, Caddy, Traefik) für den externen Zugriff und die Nutzung einer Domain.
- DNS-Server: Ein DNS-Server (z. B. Adguard Home, Pi-Hole, Technitium) für die interne Weiterleitung.
- VPN-Server: Falls der Server nicht im eigenen Netzwerk steht, empfiehlt sich die Einrichtung eines VPN-Servers wie WireGuard oder OpenVPN.
- SMTP-E-Mail-Adresse: Für Benachrichtigungen kann eine SMTP-Adresse genutzt werden, z. B. ein Shared-Webhosting-Tarif von Netcup.
* In meiner Instanz von Immich habe ich knapp 2200 Fotos und knapp 400 Videos, die zusammen 25 GB Speicherplatz belegen.

Vorbereitung
Ordnerstruktur erstellen
Zunächst erstellen wir eine Ordnerstruktur für Immich auf dem Server. Diese Ordner werden für die Datenbank und die Speicherung der Fotos und Videos verwendet.
Benötigte Ordner:
datadb
Beispiele:
Ubuntu Server
cd ~
mkdir immich
cd immich
mkdir db dataErgebnis:
/home/user/immich
├── db
└── dataWir können hier auch gleich eine leere Datei docker-compose.yml erstellen, die wir später benötigen.
touch docker-compose.ymlAls Datenpfad benötigen wir in diesem Fall nur den relativen Bezug zur docker-compose.yml Datei. Das wäre in diesem Fall ./db und ./data.
Synology NAS
Bei einem Synology NAS können wir entweder einen neuen Freigabeordner für Immich erstellen oder einen Freigabeordner für alle Docker-Container nutzen. Bei meiner Konfiguration habe ich einen Freigabeordner docker auf meiner SSD erstellt und einen Freigabeordner dockerhdd auf meiner HDD. In beiden erstelle ich einen Ordner immich und auf der SSD zusätzlich den Unterordner db und auf der HDD den Unterordner data. Somit kann ich die Datenbank auf der SSD und die Fotos und Videos auf der HDD speichern.

Wo auch immer die Ordner erstellt werden, über die Eigenschaften lässt sich der komplette Pfad herausfinden. Dieser wird später für die Docker-Container benötigt.

Beispiel-Ergebnis:
/volume1/docker/
└── immich
└── db
/volume2/dockerhdd/
└── immich
└── dataUgreen NAS
Bei einem Ugreen NAS können wir einfach einen neuen immich Ordner im freigegebenen Ordner docker erstellen. In diesem Ordner erstellen wir dann die Unterordner data und db.

Natürlich kann man auch einen anderen Freigabeordner erstellen. Das ist insbesondere dann nützlich, wenn man die Datenbank (db) auf einer SSD und die Bilder und Videos (data) auf einer HDD speichern möchte.
Wir benötigen den vollständigen Pfad, den wir über die Eigenschaften des Ordners herausfinden können. Dieser wird später für die Docker-Container benötigt. Dazu muss man auf den Link kopieren Button klicken.

Beispiel-Ergebnis:
/volume1/docker/
└── immich
|── db
└── data
# oder
/volume1/docker/
└── immich
└── db
/volume2/dockerhdd/
└── immich
└── dataFirewall
Um sicherzustellen, dass die erstellten Container miteinander kommunizieren können, empfiehlt es sich bei einer restriktiven Firewall entweder gleich den kompletten internen IP-Bereich freizugeben oder nach der Installation die von den Containern verwendeten IP-Adressen zu überprüfen. Andernfalls kann es vorkommen, dass die Container nicht miteinander kommunizieren können.
Installation leicht gemacht
Immich benötigt folgende Docker-Container:
- Valkey für schnelle Zwischenspeicherung
- Eine PostgreSQL-Datenbank mit der VectorChord-Erweiterung für die Bildsuche
- Den Immich-Server als Herzstück
- Die Immich-Machine für KI-Funktionen wie Gesichtserkennung
Docker Compose Datei
Wir brauchen zunächst die Containerbefehle, die wir zur Installation durchführen.
Immich Docker Compose Generator
Generieren Sie eine produktionsreife Docker Compose Konfiguration für Ihr selbst gehostetes Fotomanagement
Bitte beheben Sie die folgenden Probleme:
Konfiguration
Speichereinstellungen
Netzwerkeinstellungen
Sicherheitseinstellungen
Bitte ändern Sie das Standard-Passwort
Versionseinstellungen
Generierte Konfiguration
Produktionsreife Docker Compose Datei für Immich
Konfiguration erforderlich
Füllen Sie das obige Formular aus, um Ihre Docker Compose Datei zu generieren
Die Images können angepasst werden. Ich rate davon ab, latest bzw. release zu nutzen, da es zu Problemen führen kann, wenn ein neues, nicht kompatibles Image veröffentlicht wird. Der Generator setzt deshalb den Tag v3: Du bekommst damit alle Updates der Version 3, aber nie automatisch eine neue Hauptversion. Auf der Container-Seite siehst du, welches Image momentan das neueste ist.
Deine Installationsoptionen
Je nachdem, welches System du verwendest, hast du verschiedene Möglichkeiten.
Installation über Docker-Compose (Ubuntu Server)
Der Docker-Compose Code kann in die Datei docker-compose.yml kopiert werden. Bei den Pfaden können relative Pfade (z. B. ./db) oder absolute Pfade (z. B. /home/user/immich/db) verwendet werden. Die Pfade sollten zu den zuvor erstellten Ordnern führen.
Anschließend können die Container mit dem Befehl docker compose up -d oder sudo docker compose up -d gestartet werden. Beim ersten Start lädt Docker die Images herunter, das dauert je nach Verbindung ein paar Minuten.
Mit docker compose ps prüfst du, ob alle vier Container laufen. Die Spalte STATUS muss bei jedem Container healthy anzeigen:
docker compose ps --format 'table {{.Name}}\t{{.Image}}\t{{.Status}}'NAME IMAGE STATUS
immich ghcr.io/immich-app/immich-server:v3 Up 13 minutes (healthy)
immich-machine-learning ghcr.io/immich-app/immich-machine-learning:v3 Up 13 minutes (healthy)
immich_db ghcr.io/immich-app/postgres:17-vectorchord0.5.3 Up 15 minutes (healthy)
immich_valkey valkey/valkey:8 Up 15 minutes (healthy)Direkt nach dem Start steht beim Immich-Server kurz health: starting. Das ist normal. Ob der Server antwortet und welche Version läuft, siehst du so:
curl http://localhost:2283/api/server/ping
curl http://localhost:2283/api/server/version{"res":"pong"}
{"major":3,"minor":3,"patch":6,"prerelease":null}Im Log des Servers steht die Version ebenfalls. Der Befehl filtert die beiden wichtigen Zeilen heraus:
docker compose logs immich | grep -E 'Initializing|listening'immich | Initializing Immich v3.3.6
immich | [Nest] 25 - 11/04/2026, 8:30:18 PM LOG [Api:Bootstrap] Immich Server is listening on http://[::1]:2283 [v3.3.6] [production]Beim allerersten Start meldet der Server außerdem zwei Warnungen, dass die Tabellen smart_search und face_search nicht existieren. Der Text sagt selbst, dass das bei einer neuen Instanz normal ist. Danach läuft Immich auf Port 2283, also unter http://SERVER-IP:2283.
Installation über Portainer
Unter Stacks kann nun ein neuer Stack hinzugefügt werden.

Wenn dieser Menüpunkt fehlt, sollte man erneut sichergehen, dass man die lokale (“local”) Umgebung ausgewählt hat und Portainer mit dem Image portainer/portainer-ce und nicht portainer/portainer betrieben wird.
Hier fügen wir den Docker Compose Code ein.

Anschließend können die Container gestartet werden. Das kann einige Minuten dauern.

Installation über Dockge
In Dockge kann ein neuer Stack erstellt werden. Dazu wird der Docker-Compose Code in das Textfeld eingefügt und der Stack erstellt. Anschließend können die Container gestartet werden.

Die erstmalige Installation kann einige Minuten dauern.
Reverse Proxy
Um Immich über eine Domain wie immich.domain.de erreichbar zu machen, richten wir in der Zwischenzeit einen Reverse Proxy ein.
Nginx Proxy
Dabei gebe ich die Adresse meines Synology-NAS sowie die oben gewählte Portnummer ein. Außerdem kann ich mit einer Access Liste einstellen, ob nur ein lokaler Zugriff möglich ist.

Wenn sich der Nginx Proxy Manager auf dem NAS befindet und der Webserver im gleichen Docker Netzwerk ist, kann man hier den Containernamen immich eingeben sowie den Port 2283.
Nachdem ich das SSL Zertifikat für den Proxy Host besorgt habe, füge ich aber auch noch ein paar zusätzliche Einstellungen in die “Custom Nginx Configuration” ein.
client_max_body_size 50000M;
proxy_redirect off;Das sorgt dafür, dass auch größere Dateien (50.000 MB) zu Immich geladen werden können.
Caddy Proxy
Alternativ können auch andere Proxy Server genutzt werden. Insbesondere dann, wenn man ein anderes Gerät dafür verwendet, gibt es viele Optionen. Mit Caddy reicht für den Zugriff von überall dieser Eintrag in der Caddyfile. Die Adresse und der Port 2283 sind die von Immich:
immich.domain.de {
reverse_proxy 192.168.1.123:2283
}Der DNS-Eintrag für immich.domain.de muss auf den Server mit Caddy zeigen. Dann holt Caddy das Zertifikat bei Let’s Encrypt selbst. Ich habe das mit Caddy 2.11.7 auf dem Testserver ausprobiert: Das Zertifikat kam nach wenigen Sekunden (certificate obtained successfully), und https://immich.domain.de/api/server/ping lieferte {"res":"pong"}.
Ein Upload-Limit wie bei Nginx brauchst du nicht. Caddy begrenzt die Größe von Anfragen standardmäßig nicht.
Wenn Immich nur aus dem lokalen Netz erreichbar sein soll, kannst du alles von außen sperren:
immich.domain.de {
@blocked not remote_ip private_ranges
respond @blocked 403
reverse_proxy 192.168.1.123:2283
}Erster Login
Immich sollte nun unter der Domain oder der IP-Adresse des Servers (mit Port 2283) erreichbar sein, zum Beispiel unter http://192.168.1.123:2283. Beim ersten Aufruf begrüßt dich ein Willkommensbildschirm. Ein Klick auf „Erste Schritte“ startet die Einrichtung.

Admin-Konto anlegen
Der erste Benutzer ist automatisch der Administrator. Er kann weitere Benutzer hinzufügen und die Einstellungen ändern. Trage E-Mail-Adresse, Passwort und Namen ein und klicke auf „Registrieren“. Danach bist du direkt angemeldet und der Einrichtungsassistent startet.

Einrichtungsassistent
Danach führt dich ein Assistent durch die Grundeinstellungen. Alle Schritte kannst du später in den Einstellungen ändern:
- Theme: Hell oder dunkel.
- Sprache: Die Sprache der Oberfläche.
- Privatsphäre auf dem Server: Hier kannst du die Kartenfunktion (lädt Kartenkacheln von
tiles.immich.cloud) und die Versionsprüfung (fragtversion.immich.cloudab) ausschalten. Beide sind standardmäßig an und optional. - Datenschutzeinstellungen Nutzer: Google Cast ist standardmäßig aus.
- Speichervorlage: Legt fest, in welche Ordner Immich die Dateien sortiert. Vorgewählt ist
YYYY/MM/DD, also Jahr, Monat und Tag. Du kannst auch „Keine Vorlage“ wählen oder eine eigene Struktur bauen. - Sicherungen: Ein Hinweis auf die 3-2-1-Regel: drei Kopien, auf zwei Geräten, eine davon an einem anderen Ort.
- Mobile App: Links zu den App Stores und zum Obtainium-Konfigurator.
Mit „Fertig“ landest du in der Fotoübersicht. Solange du noch nichts hochgeladen hast, ist sie leer.
Fotos hochladen
Über „Hochladen“ oben rechts oder per Drag-and-drop lädst du Fotos und Videos im Browser hoch. Ich habe drei Testbilder hochgeladen. Sie erscheinen sofort in der Zeitleiste, sortiert nach Aufnahmedatum.

Benutzer und Speicherkontingent
In der Verwaltung kannst du unter „Benutzer“ → „Nutzer erstellen“ weitere Benutzer anlegen. Du vergibst E-Mail-Adresse, Passwort und Namen und kannst ein Kontingent in GiB setzen. Ohne Eintrag ist es unlimitiert. Vorgewählt ist, dass der Benutzer das Passwort beim ersten Login ändern muss. Mit dem Schalter „Administrator“ bekommt er zusätzliche Rechte.

Benachrichtigungen per E-Mail
Hat man eine SMTP-Adresse, kann man auch Benachrichtigungen einrichten. Das ist insbesondere dann nützlich, wenn mehrere Benutzer auf Immich zugreifen und Bilder teilen. Die Einstellung findest du unter „Verwaltung“ → „Einstellungen“ → „Benachrichtigungseinstellungen“ → „E-Mail“. Hier kann beispielsweise ein Webhosting Tarif von Netcup mit E-Mail Postfach genutzt werden. Die Kosten beginnen bei 2,17 € im Monat.

Apps
Immich bietet auch Apps für Android und iOS an. Diese können im jeweiligen App Store heruntergeladen werden. Die Apps sind kostenlos und ermöglichen es, Fotos und Videos direkt von den Geräten hochzuladen.
Beim ersten Start fragt die App nach der Adresse deines Servers. Trage dort die Domain (https://immich.domain.de) oder die IP-Adresse mit Port (http://192.168.1.123:2283) ein und melde dich mit deinem Konto an.
Features:
- Automatischer Upload: Neue Fotos und Videos werden automatisch hochgeladen.
- Teilen und Zusammenarbeiten: Alben können mit Familie und Freunden geteilt werden.
Update auf eine neue Version
Bei einem Update innerhalb von Version 3 reichen zwei Befehle im Ordner mit der docker-compose.yml:
docker compose pull
docker compose up -dVon Version 2 auf Version 3 wechselst du, indem du den Tag der beiden Immich-Images änderst:
image: ghcr.io/immich-app/immich-server:v2
image: ghcr.io/immich-app/immich-server:v3image: ghcr.io/immich-app/immich-machine-learning:v2
image: ghcr.io/immich-app/immich-machine-learning:v3Danach holst du die Images mit docker compose pull und startest mit docker compose up -d neu. Sichere vorher die Daten (siehe nächster Abschnitt) und lies die Hinweise zur Version 3. Mit Version 3 hat Immich die Unterstützung für die alte Datenbank-Erweiterung pgvecto.rs entfernt. Hast du Immich schon vor Version 1.133.0 installiert und noch nicht auf VectorChord umgestellt, folge zuerst der Anleitung zur Migration.
Ich habe den Wechsel von 2.7.5 auf 3.3.6 mit einer frischen Installation ohne Fotos getestet. Die Container starteten ohne Fehler, die Datenbank blieb gleich. Mit einer gewachsenen Bibliothek habe ich das Update nicht durchgespielt.
Backup erstellen
Für ein vollständiges Backup sollten die Ordner data/upload und data/library (Bilder und Videos), data/profile (Profilbilder) sowie data/backups (Datenbank-Dumps) gesichert werden. data/thumbs und data/encoded-video erzeugt Immich bei Bedarf neu. Nach dem Upload der Testbilder sah der Ordner data im Test so aus: backups, encoded-video, library, profile, thumbs und upload. Das Sichern lässt sich manuell machen. Alternativ auch automatisiert mit einem Skript oder einem Backup-Tool wie rsync oder Duplicati.
Ein Vorteil (und gleichzeitig Nachteil) von Immich liegt darin, dass die Bilder in einem normalen Dateisystem gespeichert werden. Das bedeutet falls irgendwas schief laufen sollte und Immich nicht mehr funktioniert, kann man die Bilder auch einfach so kopieren und auf einem anderen System wiederherstellen (vorausgesetzt die Bilder sind nicht gelöschte worden).
Fazit
Immich ist eine fantastische Alternative zu Google Photos und Synology Photos. Mit seiner Open-Source-DNA, den starken Funktionen und der aktiven Community bist du bestens für die private Fotoverwaltung gerüstet.
Änderungsprotokoll
Auf Immich 3 umgestellt (Image :v3), Einrichtungsassistent mit Screenshots ergänzt, Ordnernamen im Backup-Abschnitt korrigiert, Terminal-Ausgaben und Abschnitt zum Update von Version 2 ergänzt.