Self-Hosted Bildverwaltung

Immich unter Debian 13 installieren – Schritt für Schritt zum eigenen Foto-Server

In diesem Beitrag installieren Sie Immich Schritt für Schritt auf Debian 13 – inklusive Docker, PostgreSQL, Redis, Reverse Proxy und HTTPS für einen sicheren Produktivbetrieb.

5 min Lesezeit
Grafik: Immich unter Debian 13 erfolgreich installieren

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.yml und .env stets 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.