Immich ist eine selbst gehostete Fotoverwaltung, die sich wie die großen Cloud-Dienste anfühlt: automatischer Upload vom Telefon, Zeitleiste, Gesichtserkennung, Suche nach Bildinhalten. Anders als bei einem Wiki oder Git-Server ist hier nicht die Einrichtung das Schwierige, sondern der Betrieb: Fotos sind unersetzlich, das Projekt entwickelt sich schnell, und die Datenmengen wachsen jedes Jahr.
Was Immich braucht#
Immich besteht aus mehreren Containern: dem Server, einem Dienst für maschinelles Lernen (Gesichter, Suche nach Bildinhalten), einer PostgreSQL-Datenbank mit Vektor-Erweiterung und einem Redis- bzw. Valkey-Cache. Die Projekt-Dokumentation nennt Mindestanforderungen an Arbeitsspeicher und Prozessorkerne; lies sie vor dem Aufsetzen nach, denn gerade die Erkennungsdienste brauchen mehr, als ein kleiner VPS hergibt.
| Frage | Worauf es ankommt |
|---|---|
| Arbeitsspeicher | laut Doku mehrere GB; der ML-Dienst ist der größte Verbraucher |
| Prozessor | beim ersten Einlesen einer großen Bibliothek stundenlang ausgelastet |
| Speicherplatz | Originale plus Vorschaubilder plus Videos in mehreren Größen |
| Standort | Upload vom Telefon: kurze Wege und gute Anbindung helfen |
Wer wenig Arbeitsspeicher hat, kann das maschinelle Lernen abschalten. Dann fehlen Gesichtserkennung und inhaltliche Suche, der Rest funktioniert.
Aufbau nach der offiziellen Vorlage#
Immich veröffentlicht zu jeder Version eine docker-compose.yml und eine example.env. Nimm genau diese Dateien, nicht eine Vorlage aus einem alten Blogbeitrag: Die Zusammensetzung der Container hat sich mehrfach geändert, zuletzt bei der Datenbank-Erweiterung.
mkdir -p /srv/immich && cd /srv/immich
wget -O docker-compose.yml https://github.com/immich-app/immich/releases/latest/download/docker-compose.yml
wget -O .env https://github.com/immich-app/immich/releases/latest/download/example.env
In der .env setzt du mindestens:
UPLOAD_LOCATION=/srv/immich/library # hier liegen die Fotos
DB_DATA_LOCATION=/srv/immich/postgres # Datenbank, nicht auf einem Netzlaufwerk
DB_PASSWORD=<zufällig, nur Buchstaben und Ziffern>
IMMICH_VERSION=<feste Version statt release>
docker compose up -d
Eine feste Version statt release ist bei Immich besonders wichtig; mehr dazu unten. Die Weboberfläche lauscht auf Port 2283 und gehört hinter einen Reverse-Proxy mit TLS. Dort muss die zulässige Uploadgröße hoch genug sein, sonst scheitern Videos: bei nginx client_max_body_size 50000M;, dazu großzügige Zeitlimits.
Wo die Fotos liegen#
Unter UPLOAD_LOCATION legt Immich mehrere Ordner an. Die wichtigsten:
| Ordner | Inhalt | Ersetzbar? |
|---|---|---|
library bzw. upload | die Originale | nein |
profile | Profilbilder | kaum der Rede wert |
thumbs, encoded-video | Vorschaubilder, umgerechnete Videos | ja, Immich erzeugt sie neu |
backups | automatische Datenbanksicherungen | ja, aber nützlich |
Unersetzlich sind die Originale und die Datenbank. Die Datenbank enthält Alben, Gesichterzuordnungen, Freigaben und Metadaten, die nicht in den Bilddateien stehen.
Updates: nie blind#
Immich entwickelt sich schnell, und einzelne Versionen verlangen Handgriffe beim Update, etwa eine geänderte Compose-Datei oder eine neue Datenbank-Erweiterung. Ein Werkzeug wie Watchtower, das Container still auf die neueste Version zieht, kann dabei eine Installation beschädigen. Vor jedem Update: Release Notes lesen, besonders den Abschnitt zu „Breaking Changes“, Sicherung machen, dann die Version in der .env anheben.
cd /srv/immich
# Version in .env anheben, dann:
docker compose pull && docker compose up -d
docker compose logs -f immich-server # auf Fehler beim Start achten
Sichern: 3-2-1, ernst genommen#
Bei Fotos gibt es keinen „Neuaufbau“. Die 3-2-1-Regel gilt hier ohne Abstriche: drei Kopien, zwei Medien, eine außer Haus.
Die Datenbank. Immich legt automatisch tägliche Datenbanksicherungen im Ordner backups an. Das ist gut, liegt aber auf derselben Platte. Zusätzlich:
docker compose exec -T database pg_dumpall --clean --if-exists -U postgres | gzip > immich-db-$(date +%F).sql.gz
Die Originale. Mit Restic inkrementell und verschlüsselt auf ein zweites Ziel, am besten bei einem anderen Anbieter. Die Vorschaubilder und umgerechneten Videos kannst du auslassen, das spart viel Platz:
restic backup /srv/immich/library --exclude /srv/immich/library/thumbs --exclude /srv/immich/library/encoded-video
Zurückspielen. Die Immich-Dokumentation beschreibt unter „Backup and Restore“ den Weg für die Datenbank. Probier ihn einmal auf einer Testmaschine aus, bevor du ihn brauchst. Eine Sicherung, aus der nie zurückgespielt wurde, ist eine Annahme.
Häufige Fragen#
Kann ich eine bestehende Fotosammlung einbinden, ohne sie zu kopieren?#
Ja, als „External Library“. Immich liest dann einen vorhandenen Ordner ein, ohne die Dateien zu verschieben. Er sollte schreibgeschützt eingehängt werden, damit Immich dort nichts verändert.
Ist ein VPS der richtige Ort für Fotos?#
Für die Anwendung ja, für große Bibliotheken wird der Speicher schnell teuer. Viele betreiben Immich zu Hause auf eigener Hardware und nutzen einen VPS nur als Zugangspunkt, etwa per WireGuard. Beides funktioniert; wichtig ist, dass die Sicherung an einem anderen Ort liegt als die Fotos.
Sieht der Anbieter meine Fotos?#
Auf einem VPS liegen sie unverschlüsselt auf der Platte, soweit du nicht selbst verschlüsselst. Wer das nicht will, nutzt eigene Hardware. Die Sicherung verschlüsselt Restic ohnehin.
Kann ich Google Fotos oder iCloud importieren?#
Mit Hilfswerkzeugen aus dem Umfeld des Projekts, etwa für Google-Takeout-Exporte, die die Metadaten aus den Begleitdateien wieder an die Bilder hängen. Den aktuellen Stand nennt die Immich-Dokumentation.
Kurz gesagt#
- Immich braucht mehr Arbeitsspeicher als die meisten Dienste; Mindestwerte in der Doku prüfen.
- Die offizielle
docker-compose.ymlundexample.envzur jeweiligen Version nehmen. - Feste Version, kein Watchtower, vor jedem Update Release Notes lesen.
- Unersetzlich: Originale und Datenbank. Vorschaubilder lassen sich neu erzeugen.
- 3-2-1 ohne Abstriche, und das Zurückspielen einmal ausprobieren.
Geschrieben aus dem laufenden Betrieb: MRMedia betreibt eigene Proxmox- Hosts, einen Backup-Server und Kundendienste in der EU. Fehler in einer Anleitung sind Fehler im eigenen Betrieb. Korrekturen bitte über Discord.