Fotos sicher selbst hosten mit Docker, PostgreSQL und Redis
Nachdem wir im ersten Teil dieser Serie die Grundlagen von Immich kennengelernt haben, geht es nun an die praktische Umsetzung. In diesem Beitrag installieren wir Immich auf einem Debian-13-Server und richten die Anwendung für den produktiven Betrieb ein.
Immich setzt vollständig auf Docker und Docker Compose. Dadurch ist die Installation vergleichsweise einfach, Updates lassen sich komfortabel durchführen und alle Komponenten bleiben sauber voneinander getrennt.
Am Ende dieses Tutorials verfügen Sie über eine lauffähige Immich-Installation inklusive Datenbank, Redis, Reverse Proxy und HTTPS-Verschlüsselung.
Voraussetzungen
Für einen reibungslosen Betrieb empfiehlt sich folgende Hardware:
Mindestanforderungen
- Debian 13 (64 Bit)
- 2 CPU-Kerne
- 4 GB RAM
- 50 GB freier Speicher
- Internetzugang
Empfohlen
- 4–8 CPU-Kerne
- 8–16 GB RAM
- SSD-Speicher
- Docker
- Eigene Domain oder Subdomain
- Reverse Proxy
- HTTPS-Zertifikat
Für größere Fotosammlungen oder den Einsatz der KI-Funktionen empfiehlt sich deutlich mehr Arbeitsspeicher sowie ausreichend SSD-Speicherplatz.
System aktualisieren
Vor der Installation sollte das System vollständig aktualisiert werden.
sudo apt update sudo apt full-upgrade -y sudo reboot
Nach dem Neustart erneut anmelden.
Docker installieren
Falls Docker noch nicht installiert ist, kann dies direkt über das offizielle Docker-Repository erfolgen.
Benötigte Pakete installieren
sudo apt install -y \ ca-certificates \ curl \ gnupg
Docker-Schlüssel hinzufügen
sudo install -m 0755 -d /etc/apt/keyrings curl -fsSL https://download.docker.com/linux/debian/gpg | \ sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg sudo chmod a+r /etc/apt/keyrings/docker.gpg
Repository hinzufügen
echo \ "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] \ https://download.docker.com/linux/debian \ $(. /etc/os-release && echo "$VERSION_CODENAME") stable" | \ sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
Docker installieren
sudo apt update sudo apt install -y \ docker-ce \ docker-ce-cli \ containerd.io \ docker-buildx-plugin \ docker-compose-plugin
Docker testen
sudo docker run hello-world
Erscheint die Testmeldung, funktioniert Docker korrekt.
Docker automatisch starten
sudo systemctl enable docker sudo systemctl start docker
Status prüfen:
sudo systemctl status docker
Verzeichnisstruktur anlegen
Ein übersichtlicher Aufbau erleichtert spätere Wartungsarbeiten.
Beispielsweise:
sudo mkdir -p /opt/immich cd /opt/immich
Unterhalb dieses Verzeichnisses werden später die Compose-Datei, Konfigurationsdateien und persistente Daten abgelegt.
Docker-Compose-Datei erstellen
Erstellen Sie eine neue Datei:
nano docker-compose.yml
Der einfachste und zugleich empfohlene Weg ist, die aktuelle docker-compose.yml direkt aus dem offiziellen Immich-Projekt zu übernehmen. Da sich Container, Versionen und Konfigurationsoptionen regelmäßig ändern, sollte die Compose-Datei nicht manuell aus älteren Anleitungen kopiert werden.
Speichern Sie die Datei anschließend im Verzeichnis /opt/immich.
Umgebungsvariablen (.env)
Ebenso wichtig ist die Datei .env.
nano .env
Typische Einträge sind:
UPLOAD_LOCATION=/opt/immich/library DB_PASSWORD=EinSehrSicheresPasswort DB_USERNAME=postgres DB_DATABASE_NAME=immich
Wählen Sie unbedingt ein langes und sicheres Passwort für die Datenbank.
Auch die aktuelle .env-Vorlage sollte stets aus dem offiziellen Immich-Projekt übernommen werden, da neue Versionen regelmäßig zusätzliche Optionen enthalten.
PostgreSQL und Redis
Immich verwendet zwei zentrale Dienste:
PostgreSQL
Die PostgreSQL-Datenbank speichert unter anderem:
- Benutzer
- Alben
- Einstellungen
- Gesichtsinformationen
- Metadaten
- Suchindex
Redis
Redis dient als schneller Zwischenspeicher.
Hierüber werden beispielsweise verarbeitet:
- Hintergrundjobs
- Uploads
- Warteschlangen
- Cache
- KI-Aufgaben
Beide Dienste werden automatisch zusammen mit Immich über Docker gestartet.
Immich starten
Nun können sämtliche Container gestartet werden.
sudo docker compose up -d
Anschließend prüfen:
sudo docker compose ps
Alle Container sollten nun den Status
Up
anzeigen.
Die Protokolle können jederzeit eingesehen werden.
sudo docker compose logs -f
Mit Strg + C wird die Ausgabe beendet.
Erster Administrator
Nach erfolgreichem Start wird die Weboberfläche aufgerufen.
Beispielsweise:
http://SERVER-IP:2283
oder später
https://immich.meinedomain.de
Beim ersten Aufruf existiert noch kein Benutzer.
Der erste angelegte Benutzer wird automatisch Administrator.
Hier werden unter anderem festgelegt:
- Benutzername
- E-Mail-Adresse
- Passwort
Nach der Anmeldung kann direkt mit dem Upload erster Bilder begonnen werden.
Firewall konfigurieren
Wird Immich direkt erreichbar gemacht, muss mindestens Port 2283/TCP freigegeben werden.
Bei Verwendung von UFW:
sudo ufw allow 2283/tcp
Wird stattdessen ein Reverse Proxy eingesetzt, genügt es häufig, lediglich die Ports 80 und 443 freizugeben. Der Port 2283 kann dann ausschließlich intern erreichbar bleiben, was die Sicherheit erhöht.
Firewall-Regeln prüfen:
sudo ufw status
Reverse Proxy mit Apache
Für produktive Installationen empfiehlt sich ein Reverse Proxy.
Apache bietet hierfür eine einfache Möglichkeit.
Erforderliche Module aktivieren:
sudo a2enmod proxy sudo a2enmod proxy_http sudo a2enmod headers sudo a2enmod rewrite sudo systemctl restart apache2
Ein VirtualHost leitet anschließend alle Anfragen an den Immich-Dienst auf Port 2283 weiter.
Dadurch erhält Immich eine eigene URL wie beispielsweise:
https://immich.meinedomain.de
Alternativ: Reverse Proxy mit Nginx
Auch Nginx eignet sich hervorragend für Immich.
Dabei werden die Anfragen ebenfalls an den internen Port 2283 weitergeleitet.
Nginx überzeugt insbesondere durch seine hohe Performance und den geringen Ressourcenverbrauch.
HTTPS mit Let's Encrypt
Sobald der Reverse Proxy eingerichtet wurde, sollte die Verbindung verschlüsselt werden.
Mit Apache genügt beispielsweise:
sudo certbot --apache
Bei Nginx:
sudo certbot --nginx
Anschließend erfolgt die automatische Einrichtung des SSL-Zertifikats sowie der HTTPS-Weiterleitung.
Updates durchführen
Immich entwickelt sich sehr schnell weiter. Regelmäßige Updates sind daher empfehlenswert.
Zunächst in das Installationsverzeichnis wechseln:
cd /opt/immich
Die aktuellen Container beziehen:
sudo docker compose pull
Container neu erstellen:
sudo docker compose up -d
Nicht mehr benötigte Images entfernen:
sudo docker image prune -f
Status kontrollieren:
sudo docker compose ps
Häufige Probleme
Container starten nicht
Prüfen Sie die Logs:
sudo docker compose logs
Port 2283 bereits belegt
Prüfen:
sudo ss -tulpn | grep 2283
Datenbankfehler
Kontrollieren Sie insbesondere:
- Passwort in der
.env - Volume-Mounts
- Container-Status
- PostgreSQL-Logs
Reverse Proxy funktioniert nicht
Kontrollieren Sie:
- DNS-Eintrag
- Apache- oder Nginx-Konfiguration
- Firewall
- SSL-Zertifikat
- Docker-Container
Best Practices
Für einen sicheren und stabilen Betrieb empfiehlt sich:
- Docker und Debian regelmäßig aktualisieren.
- Die aktuelle
docker-compose.ymlund.envstets aus dem offiziellen Immich-Projekt übernehmen. - Reverse Proxy mit HTTPS verwenden.
- Den internen Port 2283 nicht direkt aus dem Internet erreichbar machen.
- Regelmäßige Backups der Bildbibliothek und PostgreSQL-Datenbank erstellen.
- Ausreichend SSD-Speicher für Vorschaubilder und KI-Funktionen einplanen.
- Vor größeren Updates die offiziellen Release Notes lesen.
Die Installation von Immich unter Debian 13 ist dank Docker überschaubar und eignet sich sowohl für Homelabs als auch für produktive Umgebungen. Mit PostgreSQL, Redis und einem Reverse Proxy entsteht eine moderne, leistungsfähige Plattform zur Verwaltung von Fotos und Videos – vollständig unter eigener Kontrolle.
Im nächsten Teil der Serie werfen wir einen Blick hinter die Kulissen und erklären die Architektur von Immich. Sie erfahren, wie Webserver, Machine-Learning-Service, PostgreSQL, Redis und die einzelnen Container zusammenarbeiten und warum dieses Konzept so leistungsfähig ist.