Zum Inhalt

PhotoPrism per Docker installieren: KI-gestützte Foto-Bibliothek für das Heimnetz

Veröffentlicht am 7. Oktober 2026 · Geschätzte Lesezeit: 7 Minuten

PhotoPrism indexiert Fotos und Videos automatisch per Computer-Vision, erkennt Gesichter, Objekte, Orte und Farben und macht die gesamte Sammlung über eine moderne Browser-Oberfläche durchsuchbar – ohne Cloud-Zwang, komplett lokal im Heimnetz.[1][2] Die Einrichtung mit Docker und MariaDB dauert etwa 20 Minuten; der erste Index-Durchlauf benötigt je nach Sammlungsgröße Minuten bis Stunden.

Voraussetzungen

  • Ein Linux-Server mit Docker und Docker Compose
  • Mindestens 2 CPU-Kerne und 4 GB RAM (die KI-Klassifikation ist speicherintensiv)[2]
  • Mindestens 4 GB Swap-Speicher (für RAW-Dateien und Panoramen empfohlen)[4]
  • Ein freier Port 2342 im Heimnetz
  • Terminal-Zugriff mit sudo-Rechten

1. Projektordner anlegen und compose.yaml laden

Erstelle einen eigenen Ordner für PhotoPrism und wechsle hinein:

sudo mkdir -p /opt/photoprism
sudo chown -R $USER:$USER /opt/photoprism
cd /opt/photoprism

Lade die offizielle Docker-Compose-Vorlage herunter:[6]

wget https://dl.photoprism.app/docker/compose.yaml

Die Datei enthält bereits einen vollständigen Stack mit PhotoPrism, MariaDB und optional Watchtower. Öffne sie mit einem Editor:

nano compose.yaml

2. Speicherorte und Passwörter konfigurieren

In der compose.yaml müssen mindestens drei Dinge angepasst werden.

a) Admin-Passwort setzen

Ersetze den Platzhalter PHOTOPRISM_ADMIN_PASSWORD durch ein sicheres Passwort (mindestens 8 Zeichen):[1][2]

PHOTOPRISM_ADMIN_PASSWORD: "BEISPIEL-PASSWORT-MIND-8-ZEICHEN"

Passwort vor dem ersten Start ändern

Das Passwort wird nur beim ersten Start aus der Umgebungsvariable gelesen. Ist der Container einmal gestartet, änderst du es nur noch über docker compose exec photoprism photoprism passwd admin – die Umgebungsvariable wird dann ignoriert.

b) Pfad zu deinen Fotos eintragen

Suche die Zeile mit dem Volume-Eintrag für die Originalfotos und ersetze den Pfad:

volumes:
  - "/pfad/zu/deinen/fotos:/photoprism/originals"
  - "./storage:/photoprism/storage"
Platzhalter Bedeutung
/pfad/zu/deinen/fotos Absoluter Pfad zu deinen Original-Fotos (z. B. /mnt/nas/fotos)
./storage Verzeichnis für Thumbnails, Cache, Sidecar-Dateien und Datenbank-Backups

Du kannst mehrere Quellverzeichnisse als Unterordner von /photoprism/originals einbinden, falls deine Fotos an verschiedenen Orten liegen.

c) MariaDB-Datenbank-Passwörter festlegen

Ersetze auch die Datenbank-Passwörter. Am einfachsten erzeugst du zwei sichere Werte auf der Kommandozeile:

openssl rand -base64 24

Führe den Befehl zweimal aus und trage die Ergebnisse in der compose.yaml an den Stellen für MYSQL_ROOT_PASSWORD und MYSQL_PASSWORD (beziehungsweise PHOTOPRISM_DATABASE_PASSWORD) ein.

Passwörter nicht in Git committen

Die compose.yaml enthält nach der Bearbeitung Klartext-Passwörter. Füge das Verzeichnis in eine .gitignore ein oder nutze Docker Compose Secrets für die Produktion.

3. MariaDB und PhotoPrism starten

Starte den Stack im Hintergrund:[1][2]

docker compose pull
docker compose up -d

Der erste Start lädt die Container-Images herunter und initialisiert MariaDB. Prüfe den Fortschritt:

docker compose logs -f

Sobald Meldungen wie Starting PhotoPrism server oder Listening on port 2342 erscheinen, ist das System bereit. Das kann 30–60 Sekunden dauern.

Prüfe, ob beide Container laufen:

docker compose ps

Du solltest photoprism und mariadb im Status running sehen.

4. Admin-Konto einrichten

Öffne einen Browser und rufe die Adresse auf:

http://<deine-server-ip>:2342

Ersetze <deine-server-ip> durch die IP deines Docker-Servers, zum Beispiel 192.168.1.20.

Du siehst den Login-Bildschirm. Melde dich an mit:

  • Benutzername: admin
  • Passwort: das in Schritt 2a festgelegte Passwort

Nach der Anmeldung gelangst du ins Dashboard. Gehe zu Library und klicke auf Start, um den ersten Index-Durchlauf zu starten.[7]

Erster Index kann Stunden dauern

PhotoPrism hasht jedes Bild mit SHA-1, extrahiert Metadaten, erzeugt Thumbnails und führt die KI-Klassifikation durch. Bei mehreren tausend Fotos plane mehrere Stunden ein. Der Fortschritt ist im Dashboard sichtbar.

5. Die wichtigsten Einstellungen nach der Installation

Zeitzone und Standort

Damit Karten und Zeiten korrekt funktionieren, ergänze in der compose.yaml unter environment::

PHOTOPRISM_TIMEZONE: "Europe/Berlin"

TensorFlow für bessere KI-Erkennung

Seit 2025 kann PhotoPrism automatisch eine für deine CPU optimierte TensorFlow-Version installieren. Ergänze dazu in environment::

PHOTOPRISM_INIT: "tensorflow"

Beim nächsten Neustart lädt der Container das passende TensorFlow-Paket herunter und installiert es.[4]

Nur-Lesen-Modus für NAS-Fotos

Wenn die Originale auf einem schreibgeschützten NAS liegen, schalte den Schreibschutz ein:

PHOTOPRISM_READONLY: "true"

Das unterbindet WebDAV-Uploads und Löschvorgänge – die Fotos bleiben unverändert.

6. SQLite oder MariaDB – was ist besser?

Die offizielle compose.yaml verwendet MariaDB als Datenbank. Das ist für die meisten Installationen die richtige Wahl, weil:

  • MariaDB bei großen Sammlungen (über 10.000 Fotos) deutlich performanter arbeitet
  • Gleichzeitige Lesezugriffe und Index-Durchläufe nicht blockieren
  • Die Datenbank getrennt von den Fotos gesichert werden kann

Ein SQLite-Modus ist möglich (einfach PHOTOPRISM_DATABASE_DRIVER auf sqlite setzen und den MariaDB-Service entfernen), aber nur für kleine Bibliotheken unter etwa 5.000 Bildern geeignet. Bei großen Sammlungen führt SQLite zu spürbaren Verzögerungen.[1]

7. Backup und Wiederherstellung

PhotoPrism bringt ein eingebautes Backup-Kommando mit:

docker compose exec photoprism photoprism backup -i -f

Die Sicherung wird als .sql-Datei im Storage-Ordner abgelegt. Für ein vollständiges Backup sicherst du drei Bereiche:

  1. Datenbank-Backup (wie oben)
  2. Storage-Ordner (./storage/) – enthält Thumbnails, Cache und Sidecar-Dateien
  3. Compose-Datei und ggf. .env
tar -czf photoprism-backup-$(date +%F).tar.gz compose.yaml storage/

Die Original-Fotos sind davon unabhängig zu sichern, da sie außerhalb des PhotoPrism-Ordners liegen.

Zurücksetzen und Neuinstallation

echo "==> Nur den Index löschen (Fotos bleiben unberührt)"
docker compose exec photoprism photoprism reset --yes

echo "==> Komplette Neuinstallation (Datenverlust!)"
docker compose down -v
rm -rf storage/

down -v löscht alle Daten

Der Parameter -v entfernt alle Docker-Volumes, also auch die MariaDB-Datenbank. Führe vorher zwingend ein Backup aus.

8. Risiken und Sicherheitshinweise

  1. Port 2342 nicht direkt ins Internet freigeben – PhotoPrism liefert standardmäßig HTTP aus. Setze stattdessen einen Reverse Proxy (Caddy, Traefik, Nginx Proxy Manager) davor, der HTTPS mit Let's Encrypt bereitstellt. Eine Anleitung für Caddy findest du im Artikel Docker-Dienst mit Caddy und HTTPS absichern.

  2. Kein festes RAM-Limit setzen – Der Indexer benötigt temporär mehr Speicher. Die offizielle Doku empfiehlt, stattdessen ausreichend Swap zu konfigurieren (mindestens 4 GB).[2]

  3. Keine USB-Sticks oder SD-Karten als Datenbank-Storage – MariaDB-Daten gehören auf zuverlässigen lokalen SSD-Speicher. Der Storage-Ordner darf auf dem NAS liegen, die Datenbank nicht.

  4. Passwort-Änderung nach Erststart – Wurde das Admin-Passwort einmal gesetzt, funktioniert die Umgebungsvariable nicht mehr. Ändere es dann über docker compose exec photoprism photoprism passwd admin.

9. Typische Fehler und ihre Lösung

Problem Ursache Lösung
Connection refused auf Port 2342 Container lädt noch (erster Start) docker compose logs -f photoprism abwarten
MariaDB startet nicht Port 3306 ist belegt sudo ss -tlnp \| grep 3306 prüfen, anderen MySQL-Dienst stoppen
Fotos werden nicht angezeigt Falscher Volume-Pfad oder fehlende Berechtigungen docker compose exec photoprism ls /photoprism/originals prüfen
PHOTOPRISM_ADMIN_PASSWORD wird ignoriert Passwort wurde nach erstem Start geändert Passwort über docker compose exec photoprism photoprism passwd admin zurücksetzen
Import-Ordner verursacht Loop Import-Pfad liegt innerhalb der Originale Import-Ordner außerhalb von originals anlegen
Fehler seccomp:unconfined fehlt Kernel-Sicherheitsmodul blockiert security_opt: - seccomp:unconfined in der compose.yaml ergänzen

10. Nächste Schritte

  • PhotoPrism erkunden: Die offizielle [First Steps-Anleitung][7] führt durch das Dashboard, Alben, Filter und die Gesichtserkennung.
  • Smartphone-App einrichten: PhotoPrism bietet eine Progressive Web App (PWA) für Smartphones, die automatisch über den Browser installiert wird.
  • Automatische Sicherung: Richte einen täglichen Cron-Job für das Datenbank-Backup ein.
  • Reverse Proxy: Setze Caddy oder Traefik vor PhotoPrism, um HTTPS für den Zugriff von unterwegs zu aktivieren.

Sources

[1] https://docs.photoprism.app/getting-started/docker-compose/ — PhotoPrism Official Docker Compose Setup [2] https://www.photoprism.app/plus/kb/quickstart/ — PhotoPrism Quickstart Guide [3] https://docs.photoprism.app/getting-started/config-options/ — PhotoPrism Config Options [4] https://selfhosting.sh/apps/photoprism — Self-Host PhotoPrism Guide (March 2026) [5] https://www.youtube.com/watch?v=2YMWu1WKJ38 — Self-Host PhotoPrism with Docker Compose (Techdox) [6] https://dl.photoprism.app/docker/compose.yaml — PhotoPrism Official compose.yaml Template [7] https://docs.photoprism.app/user-guide/first-steps/ — PhotoPrism First Steps Guide

Fertig

Nach dem Start unter http://<deine-server-ip>:2342/ siehst du den Login-Bildschirm. Melde dich mit admin und deinem Passwort an, starte unter Library den ersten Index-Durchlauf und warte, bis PhotoPrism deine Fotos erfasst hat. Öffne dann die Zeitleiste, suche nach einem Ort oder einer Person und prüfe, ob die KI-Erkennung funktioniert – deine private, KI-gestützte Foto-Bibliothek läuft.