Immich optimieren: Handy-Backup, deutsche KI-Suche & Familien-Betrieb (Teil 2)
Immich Teil 2: Handy-Backup zuverlässig machen, die KI-Suche auf Deutsch umstellen, Bestandsfotos als externe Bibliothek einbinden, Konten mit Kontingent.
Inhaltsverzeichnis
In Teil 1 hast du Immich hinter Traefik aufgesetzt – die Zeitleiste läuft. Jetzt kommt der Teil, der aus der Installation einen echten Google-Fotos-Ersatz macht: ein Handy-Backup, das wirklich zuverlässig läuft, eine KI-Suche, die Deutsch versteht, deine Bestandsfotos als externe Bibliothek und getrennte Konten für die Familie.
Was bauen wir?
Vier Ausbaustufen für dein laufendes Immich v3.1.0 aus Teil 1: Erst stellen wir das automatische Handy-Backup so ein, dass es auch im Hintergrund durchläuft. Dann tauschen wir das Standard-Suchmodell gegen ein mehrsprachiges CLIP-Modell – danach trifft auch eine ausformulierte deutsche Suche („verschneite Berggipfel über einem See") das richtige Bild: Im Test stieg die Trefferquote von 19 auf 24 von 24 deutschen Suchanfragen. Anschließend binden wir ein vorhandenes Foto-Archiv als externe Bibliothek ein, ohne die Dateien anzufassen, und richten für die Familie eigene Konten mit Speicher-Kontingent ein. Alle Schritte sind auf einem netcup-VPS gegen die echte Weboberfläche durchgespielt; die Screenshots stammen aus diesem Lauf.
Voraussetzungen
- Ein laufendes Immich v3.1.0 hinter Traefik – exakt der Stand aus Teil 1, inklusive gepinnter
IMMICH_VERSIONund Backup - Die Immich-App auf dem Handy, verbunden mit deinem Server (Teil 1, Schritt 6)
- Für die KI-Suche: 8 GB RAM aufwärts – die mehrsprachigen Modelle sind größer als das Standard-Modell (echte Messwerte in Schritt 3)
- Optional: ein Ordner mit Bestandsfotos auf dem Server (für die externe Bibliothek)
VPS 2000 G12
8 vCore · 16 GB RAM · 512 GB NVMe
ab 19,24 €/Monat
Mehrsprachige Suchmodelle und Familienbetrieb mögen RAM – mit 16 GB hast du Reserve.
💶 5 € Gutschein für netcup-Neukunden:36nc17844976032
(nur Neukunden, keine Domains)
Schritt für Schritt
Schritt 1: Das Handy-Backup zuverlässig machen
Das Sichern selbst hast du in Teil 1 aktiviert – aber mit den Standardeinstellungen lädt die App oft nur, solange sie offen ist. Die wichtigen Stellschrauben sitzen in der App unter Sicherung (Einstellungen der App, nicht des Servers). Die App entwickelt sich schnell, einzelne Menüpunkte können je nach Version leicht anders heißen – die Mechanik dahinter bleibt:
- Alben auswählen: Sichere gezielt – Kamera-Album rein, WhatsApp-Ordner raus. Alben lassen sich auch ausschließen (in der Auswahl doppelt antippen); praktisch auf iOS, wo ein Foto in mehreren Alben stecken kann.
- Hintergrund-Sicherung aktivieren: Erst damit lädt die App neue Fotos, ohne dass du sie öffnest.
- Nur über WLAN ist der Standard – neue Fotos erscheinen also erst auf dem Server, wenn das Handy wieder im WLAN ist. Wer unterwegs sichern will, erlaubt mobile Daten in den Sicherungs-Einstellungen (Achtung Datenvolumen bei Videos).
- Alben-Synchronisation: Optional spiegelt Immich deine Handy-Alben als Alben auf den Server – die Ordnung vom Gerät bleibt erhalten, statt dass alles nur in der Zeitleiste landet. Die Synchronisation läuft in eine Richtung (Handy → Server).
Zwei Plattform-Eigenheiten, die fast jeden treffen:
- Android: Aggressive Akku-Optimierung vieler Hersteller (Samsung, Xiaomi & Co.) beendet den Hintergrund-Dienst. Nimm die Immich-App von der Akku-Optimierung aus – die herstellerspezifischen Schritte listet dontkillmyapp.com. Zusätzlich kannst du in der App festlegen, dass nur beim Laden gesichert wird.
- iOS: Ohne Hintergrundaktualisierung (Einstellungen → Allgemein → Hintergrundaktualisierung) läuft gar nichts im Hintergrund. Und selbst dann entscheidet iOS, wann der Task läuft – je öfter du die App öffnest, desto häufiger räumt iOS ihr Hintergrundzeit ein. Das ist eine iOS-Eigenheit, kein Immich-Fehler.
Doppelte Uploads musst du nicht fürchten: Immich berechnet für jede Datei eine Prüfsumme und überspringt alles, was schon auf dem Server liegt – egal ob es per Web, CLI oder von einem anderen Gerät kam.
Ob alles ankommt, prüfst du am Server: Die Zeitleiste zeigt neue Aufnahmen, und unter Administration → Server-Statistiken siehst du Anzahl und Speicherverbrauch pro Nutzer wachsen.
Schritt 2: Warum die Suche auf Deutsch schwächelt
Immichs „intelligente Suche" arbeitet mit einem CLIP-Modell: Es rechnet jedes Foto und jede Suchanfrage in einen Zahlenvektor um; gesucht wird nach den Fotos, deren Vektor der Anfrage am nächsten liegt. Deshalb findet die Suche „Hund am Strand", ohne dass irgendjemand Schlagworte vergeben hat – und deshalb läuft sie komplett lokal auf deinem Server, nicht in einer Cloud.
Der Haken: Das Standard-Modell ViT-B-32__openai ist auf englischen Bildunterschriften trainiert. Einzelne deutsche Substantive kennt es trotzdem oft – sie kamen im Trainingsmaterial häufig genug vor. Unser Testlauf auf einer Bibliothek mit zwölf eindeutigen Motiven zeigt genau dieses Muster:
- Einzelne Suchwörter („Strand", „Leuchtturm", „Katze"): 11 von 12 landeten auf Platz 1 – nur „Sonnenuntergang in den Bergen" nicht.
- Ausformulierte deutsche Sätze („verschneite Berggipfel über einem See", „Burg hinter Bäumen am Ufer"): nur noch 8 von 12. Bei „zwei alte Fahrräder nebeneinander" stand ein Leuchtturm vorn.
Je näher deine Anfrage an einem ganzen Satz liegt, desto eher bricht das englische Modell also weg – und genau so sucht man in der Praxis. Das beheben wir jetzt.
Schritt 3: Die KI-Suche auf Deutsch umstellen
Immich kann jedes CLIP-Modell aus seinem Modellkatalog laden. Für deutsche (und gemischte) Suchen hat sich im Test das mehrsprachige XLM-Roberta-Base-ViT-B-32__laion5b_s13b_b90k bewährt – es versteht die Anfragesprache direkt, ohne Zusatzkonfiguration.
Öffne Administration → Einstellungen → Maschinelles Lernen und klappe Intelligente Suche auf. Trage im Feld CLIP-Modell den neuen Modellnamen ein und speichere:

Finger weg von den nllb-Modellen (Stand v3.1.0)
nllb-clip-…-Modelle. Die erwarten die Suchsprache als Parameter – und diese Sprachangabe lässt sich in Immich v3.1.0 nirgends setzen: Weder in den Systemeinstellungen noch in den Konto-Einstellungen gibt es dafür ein Feld. Ergebnis im Test mit nllb-clip-base-siglip__v1: 19 von 24 deutschen Suchen auf Platz 1 – also nicht besser als das englische Standard-Modell, obendrein bei „Leuchtturm" ein Schloss vorn. Nimm ein XLM-…- oder …SigLIP2…-Modell; die funktionieren laut Doku und Test unabhängig von einer Spracheinstellung.Das neue Modell gilt nur für neue Vektoren – deine vorhandenen Fotos sind noch mit dem alten Modell indexiert, und die beiden Vektorräume sind nicht kompatibel. Stoße deshalb unter Administration → Auftrags-Schlangen bei Intelligente Suche den Lauf über Alle an:

Beim ersten Lauf lädt der ML-Container das Modell herunter (rund 1,4 GB) – der erste Suchtreffer dauert also einen Moment. Danach suchst du auf Deutsch:

Zwei Dinge fürs Erwartungsmanagement: Die Suche filtert nicht, sie sortiert – unten in der Trefferliste stehen immer auch unpassende Bilder. Und sie ist erstaunlich gut bei beschreibenden Anfragen: Im Test traf das XLM-Modell alle 24 deutschen Anfragen auf Platz 1, von „Gondel in Venedig" bis „roter Mohn zwischen Gräsern".
Noch ein Detail aus den Auftrags-Schlangen: Die Duplikaterkennung beruht laut ihrer eigenen Beschreibung auf denselben CLIP-Vektoren wie die intelligente Suche. Nach einem Modellwechsel stößt du deshalb am besten auch sie einmal über Alle neu an – sonst vergleicht sie alte und neue Vektoren miteinander.
Zum RAM-Verbrauch, real gemessen auf dem Test-VPS (8 GB), jeweils nach frischem Container-Start mit geladenem Bild- und Textmodell: Der ML-Container lag mit dem Standard-Modell bei rund 1,0 GB, mit dem XLM-Modell bei rund 2,0 GB. Auf einem 8-GB-Server neben ein paar weiteren Diensten wird es damit eng – deshalb die ehrliche Empfehlung Richtung 16 GB, wenn die KI-Suche dauerhaft mitlaufen soll.
Schritt 4: Bestandsfotos als externe Bibliothek einbinden
Deine Handy-Fotos verwaltet Immich selbst in UPLOAD_LOCATION. Aber was ist mit den 20 Jahren Fotoarchiv, die schon auf dem Server liegen? Dafür gibt es externe Bibliotheken: Immich indexiert die Ordner, fasst die Dateien aber nicht an – nichts wird verschoben, umbenannt oder gelöscht.
Gib den Archiv-Ordner zuerst dem Server-Container mit – bewusst schreibgeschützt (:ro), damit selbst ein Fehlgriff in der Oberfläche deine Originale nicht ändern kann. Ergänze in der compose.yaml aus Teil 1 beim Service immich-server:
volumes:
- ${UPLOAD_LOCATION}:/data
- /pfad/zu/DEINEM_ARCHIV:/mnt/archiv:ro
- /etc/localtime:/etc/localtime:roÜbernimm die Änderung – Compose baut nur den Server-Container neu:
docker compose up -dLege dann unter Administration → Externe Bibliotheken → Bibliothek erstellen eine Bibliothek an (Besitzer wählen). Immich springt direkt in die neue, noch leere Bibliothek. Dort trägst du unter Ordner → Hinzufügen den Importpfad /mnt/archiv ein – also den Pfad im Container, nicht den auf dem Host. Über Bearbeiten gibst du ihr einen sprechenden Namen, mit Scannen startest du den ersten Durchlauf (in der Übersicht liegt derselbe Befehl im Kontextmenü ⋮). Danach taucht der Bestand in der Übersicht auf:

Die Archiv-Fotos erscheinen jetzt in Zeitleiste und Suche wie normale Uploads – einsortiert nach ihrem Aufnahmedatum aus den EXIF-Daten. Neue Dateien im Ordner holt ein erneuter Scan (manuell oder per geplantem Scan in den Bibliotheks-Einstellungen).
Externe Bibliotheken sichern sich nicht mit
UPLOAD_LOCATION und die Datenbank – dein Archiv-Ordner liegt außerhalb davon. Nimm ihn zusätzlich in deinen Restic-Job auf, sonst ist ausgerechnet der älteste Bestand ungesichert.Schritt 5: Familien-Konten mit Speicher-Kontingent
Jedes Familienmitglied bekommt ein eigenes Konto mit eigener, getrennter Bibliothek – niemand sieht die Fotos der anderen, geteilt wird bewusst über Alben. Damit ein einzelnes Konto nicht die Platte volllädt, gibst du ihm beim Anlegen ein Kontingent mit.
Unter Administration → Benutzer → Nutzer erstellen legst du E-Mail, Name, Startpasswort und das Kontingent in GiB fest:

Das Kontingent zählt die hochgeladenen Dateien des Kontos; ist es erschöpft, lehnt der Server weitere Uploads mit 400 Quota has been exceeded! ab – die App zeigt dann einen Speicherfehler, gelöschte Fotos geben Platz frei (endgültig erst nach dem Papierkorb). Eine Registrierung von außen gibt es weiterhin nicht: Konten entstehen nur über das Admin-Konto.
Fürs Teilen innerhalb der Familie legst du ein Album an und fügst die Konten als Mitglieder hinzu – oder du nutzt die Partner-Funktion (Konto-Einstellungen → Freigabe), mit der zwei Konten sich gegenseitig die komplette Zeitleiste zeigen, ohne Fotos zu kopieren. Für Oma ohne Konto gibt es geteilte Links: Ein Album lässt sich als öffentlicher Link freigeben, auf Wunsch mit Passwort und Ablaufdatum – bedenke nur, dass jeder mit dem Link die Bilder sieht, solange er gültig ist.
Wenn es nicht funktioniert
Die deutsche Suche liefert nach dem Modellwechsel wirre Treffer. Die Fotos sind noch (oder teilweise) mit dem alten Modell indexiert – alte und neue Vektoren vertragen sich nicht. Unter Auftrags-Schlangen → Intelligente Suche den Lauf Alle starten und abwarten, bis die Warteschlange leer ist. Genau dieser gemischte Zustand entsteht auch, wenn du nur speicherst und den Neu-Index vergisst.
Mit einem nllb-…-Modell ist die Suche nicht besser als vorher. Bekanntes Verhalten in v3.1.0: Die Sprachangabe, die diese Modelle erwarten, lässt sich in Immich nicht setzen (siehe Warn-Box in Schritt 3). Auf ein XLM-…- oder SigLIP2-Modell wechseln und neu indexieren.
Der ML-Container beendet sich nach dem Modellwechsel mit exit 137. Out of Memory: Das neue Modell passt nicht mehr neben Server, Datenbank und deine übrigen Dienste. Entweder ein kleineres Modell wählen oder mehr RAM – das XLM-Basis-Modell braucht im Betrieb real rund 2 GB nur für den ML-Container.
Die externe Bibliothek bleibt nach dem Scan leer. Fast immer stimmt der Pfad nicht: Als Importpfad gehört der Container-Pfad (/mnt/archiv) hinein, nicht der Host-Pfad. Prüfe mit docker compose exec immich-server ls /mnt/archiv, ob der Container die Dateien überhaupt sieht – kommt dort nichts, fehlt der Volume-Eintrag oder das docker compose up -d nach der Änderung.
Das Handy sichert nur, wenn die App offen ist. Auf Android killt die Akku-Optimierung den Hintergrund-Dienst (App ausnehmen, siehe Schritt 1); auf iOS fehlt die Hintergrundaktualisierung oder iOS priorisiert die App herunter – öfter öffnen hilft tatsächlich. Und: Standardmäßig wird nur im WLAN gesichert – unterwegs „fehlen" Fotos also nur scheinbar.
Wartung & Backups
Das Update-Ritual aus Teil 1 gilt unverändert: Backup → Release-Notes lesen →
IMMICH_VERSIONerhöhen →docker compose pull && docker compose up -d. Alle Container gemeinsam aktualisieren; Migrationen sind nicht umkehrbar.Der Modell-Cache wächst mit jedem Modellwechsel. Alte Modelle bleiben im Volume liegen – nach unseren Tests mit drei CLIP-Modellen lagen dort 3,9 GB (Standard-Modell 583 MB, XLM 1,4 GB, nllb 1,9 GB). Aufräumen: ML-Container stoppen, Volume leeren, Container starten (das aktive Modell lädt neu herunter):
Terminaldocker compose stop immich-machine-learning docker run --rm -v immich_model-cache:/cache alpine:3 sh -c "rm -rf /cache/clip/*" docker compose start immich-machine-learningBackup-Umfang prüfen:
UPLOAD_LOCATION+ DB-Dump (Teil 1) plus jeden externen Bibliotheks-Ordner. Ein kurzer Blick in die Restic-Snapshots nach dem Einbinden einer neuen Bibliothek erspart böse Überraschungen.Speicher und Kontingente im Blick: Server-Statistiken zeigt den Verbrauch pro Konto. Wächst ein Konto ans Limit, rechtzeitig erhöhen – abgelehnte Uploads bedeuten auf dem Handy: keine Sicherung.
Ehrlich zum Aufwand: Mit KI-Suche, externer Bibliothek und mehreren Nutzern ist Immich kein „einmal aufsetzen, nie wieder anfassen"-Dienst. Rechne mit einem Update-Termin pro Monat plus gelegentlichem Neu-Index nach Modell- oder Major-Wechseln – dafür gehört dir der komplette Foto-Stack.
Zuletzt aktualisiert: 22.08.2026
Feedback per E-Mail: feedback@serverkueche.de
Das könnte dir auch schmecken

Die eigene Website mit Hugo hosten – wie die Serverküche selbst
Statische Website mit Hugo bauen und im Docker-Container hinter Traefik ausliefern – schnell, sicher, ohne Datenbank. …

AdGuard Home: netzwerkweiter Werbe- und Tracking-Blocker
AdGuard Home mit Docker aufsetzen: ein eigener DNS-Server, der Werbung, Tracker und Schadseiten für alle Geräte blockt – …

Forgejo Actions: eigener CI/CD-Runner mit Docker
Einen Forgejo-Actions-Runner mit Docker-in-Docker aufsetzen und registrieren: eigene CI/CD-Pipelines auf dem …