Am Ende dieser Anleitung liegen deine Fotos und Videos aus Google Fotos in deinem eigenen Immich: mit Aufnahmedatum, Ort, Alben und den Namen, die du in Google vergeben hast. Der Weg dorthin hat einen Haken, den fast jeder erst nach dem ersten Versuch entdeckt. Google gibt dir die Bilder zwar heraus, aber die Informationen dazu liegen in Hunderten kleiner Beidateien. Ein kleines Werkzeug namens immich-go fügt beides wieder zusammen. Genau darum geht es hier.

Warum du nicht einfach alles herunterlädst und hochlädst
Google Fotos hat keinen Knopf „alles herunterladen“. Den Export erledigt ein eigener Dienst namens Takeout, und der verpackt deine Bibliothek in ZIP-Dateien. Soweit gut. Nur speichert Google vieles, was du in der App gemacht hast, nicht im Bild selbst: das Datum einer eingescannten alten Aufnahme, der nachträglich gesetzte Ort, die Beschreibung, die Zugehörigkeit zu einem Album. All das landet in einer zweiten Datei neben jedem Bild.
Lädst du die Bilder nun einfach in Immich hoch, liest Immich nur, was im Bild selbst steht. Der Zettel bleibt im Karton. Alben sind weg, korrigierte Daten sind weg, und die alten Scans landen alle auf dem Tag des Uploads. Die Immich-Doku sagt es selbst: Wer einen Google-Fotos-Export importieren will, soll das von der Community gepflegte Werkzeug immich-go nehmen. Es liest jede JSON-Datei, sucht das passende Bild, setzt Datum, Ort und Album, und lädt dann erst hoch.
Das Werkzeug stammt von einem einzelnen Entwickler mit dem Namen simulot, und die Immich-Doku verweist offiziell darauf. Das finde ich bemerkenswert, denn üblicherweise verlinken Projekte ungern auf Fremdcode. Hier ist es die richtige Entscheidung: Die Eigenheiten von Takeout, um die sich immich-go kümmert, füllen in seiner Doku eine eigene Seite.
Was du brauchst
- Ein laufendes Immich, Version 2 oder 3, mit einem Benutzerkonto, in dem die Bilder landen sollen. immich-go unterstützt beide Generationen.
- Einen Rechner mit Linux, macOS oder Windows, auf dem der Export zwischengelagert wird. Freier Platz: mindestens so viel, wie deine Google-Fotos-Bibliothek groß ist. Das steht in Google Fotos unter Einstellungen bei „Speicher“.
- Docker- und Terminal-Grundlagen. Immich selbst muss schon laufen; das ist hier kein Thema.
- Geduld. Google braucht für einen großen Export Stunden bis Tage, und der Upload von Zehntausenden Dateien ist ein Abend, kein Kaffee.
Ob Immich antwortet und welche Version läuft, sagt dir der Server ohne Anmeldung:
curl -s http://192.168.178.50:2283/api/server/version
df -h ~Die erste Zeile antwortet mit etwas wie {"major":3,"minor":1,"patch":0}, das ist Immich 3.1.0. Die zweite zeigt, wie viel Platz auf deinem Rechner frei ist. Reicht er nicht für den ganzen Export, nimm eine externe Platte als Zwischenlager.
- Adresse deines Immich:
http://192.168.178.50:2283 - API-Schlüssel:
DEIN-API-SCHLUESSEL(kommt in Schritt 3) - Ordner für den Export auf deinem Rechner:
~/takeout - Die Export-Dateien von Google:
takeout-…-001.zip,…-002.zipund so weiter
Erreichst du Immich über einen Reverse Proxy mit eigener Domain, setzt du überall diese Adresse ein, samt https://. Das war es an Vorbereitung.
Schritt 1: Den Export bei Google Takeout bestellen
Öffne takeout.google.com und melde dich an. Unter „Daten zum Einschließen auswählen“ klickst du zuerst auf Alle abwählen, dann setzt du nur bei Google Fotos den Haken. Unten auf Nächster Schritt. Wähle als Übermittlung Downloadlink per E-Mail senden, als Häufigkeit den einmaligen Export, als Dateityp .zip und als Dateigröße 50 GB. Dann Export erstellen.
ZIP statt TGZ, weil jeder Rechner ZIP öffnen kann und immich-go die Archive so direkt liest. 50 GB statt der voreingestellten 2 GB, weil Google bei kleineren Teilen mehr Archive erzeugt und die Bilder eines Albums über mehrere davon verstreut. Die Best-Practices-Seite von immich-go rät ausdrücklich zur größten Stufe, damit es möglichst wenige Teile werden. Und: Nie ZIP und TGZ mischen, das verwirrt den Import.
Geklappt hat es, wenn Google dir eine Mail schickt, dass der Export in Arbeit ist. Die zweite Mail mit dem Downloadlink kommt laut Google meist am selben Tag, bei großen Bibliotheken auch erst nach Tagen. Der Link gilt etwa sieben Tage und lässt sich fünfmal nutzen. Wer den Export verschlafen lässt, bestellt neu.
Schritt 2: Herunterladen und nachzählen
Lade alle Teile in einen Ordner. Bei 200 GB Fotos sind das vier Dateien, bei 30 GB eine einzige. Danach zählst du nach, ob wirklich alle Teile da sind, denn ein fehlender Teil fällt beim Import nicht auf: immich-go importiert dann eben nur, was es findet.
mkdir -p ~/takeout
cd ~/takeout
ls -lh takeout-*.zipDie Liste zeigt deine Archive mit Größe. Die Nummern am Ende der Dateinamen laufen lückenlos von 001 bis zur letzten, und alle Teile bis auf den letzten sind ungefähr gleich groß. Fehlt eine Nummer oder ist eine Datei auffällig klein, lade sie erneut. Die immich-go-Doku warnt, dass Takeout-Exporte gelegentlich unvollständig sind; fehlen nach dem Import viele Bilder, soll man einen neuen Export anfordern, nicht am Werkzeug schrauben.
Schritt 3: Einen API-Schlüssel in Immich anlegen
immich-go redet mit Immich nicht über dein Passwort, sondern über einen API-Schlüssel.
Öffne Immich im Browser unter http://192.168.178.50:2283 und melde dich mit dem Konto an, dem die Bilder gehören sollen. Klick oben rechts auf dein Profilbild, dann auf Kontoeinstellungen. Scroll zum Abschnitt API-Schlüssel, klick dort auf den Knopf zum Anlegen eines neuen Schlüssels, gib ihm einen Namen wie „immich-go“ und bestätige. Immich zeigt den Schlüssel jetzt genau einmal. Kopiere ihn in eine Textdatei.
Geklappt hat es, wenn der neue Eintrag in der Liste unter „API-Schlüssel“ steht. Den Schlüssel selbst zeigt Immich nie wieder an; hast du ihn nicht kopiert, löschst du ihn und legst einen neuen an. Nach dem Umzug würde ich ihn ohnehin löschen: Ein Schlüssel, den niemand mehr braucht, gehört nicht an den Haken.
Schritt 4: immich-go installieren
immich-go ist eine einzelne Programmdatei, keine Installation im klassischen Sinn. Du lädst das Archiv für dein System von der Release-Seite auf GitHub, packst es aus und legst die Datei dahin, wo dein Terminal sie findet. Für Linux auf einem normalen PC sieht das so aus, für macOS heißt das Archiv immich-go_Darwin_x86_64.tar.gz beziehungsweise _arm64 auf Apple-Chips, für Windows lädst du immich-go_Windows_x86_64.zip, entpackst es und legst immich-go.exe in den Ordner, in dem auch die Takeout-Dateien liegen.
cd ~/takeout
curl -LO https://github.com/simulot/immich-go/releases/latest/download/immich-go_Linux_x86_64.tar.gz
tar -xzf immich-go_Linux_x86_64.tar.gz
chmod +x immich-go
sudo mv immich-go /usr/local/bin/
immich-go --versionDie letzte Zeile antwortet mit der Versionsnummer, beim Schreiben dieses Beitrags v0.32.0. Damit ist das Werkzeug einsatzbereit. Ein Raspberry Pi oder ein ARM-Server nimmt statt x86_64 das Archiv mit arm64 im Namen.
Schritt 5: Der Probelauf
immich-go hat einen Trockenlauf eingebaut: Es liest alle Archive, ordnet die JSON-Zettel den Bildern zu, meldet Probleme, und lädt kein einziges Byte hoch. Die Doku empfiehlt genau das vor jedem echten Import, und ich schließe mich an. Zehn Minuten Probelauf sind billiger als ein halb importierter Bestand, den man wieder auseinanderklamüsern muss.
cd ~/takeout
immich-go upload from-google-photos --server=http://192.168.178.50:2283 --api-key=DEIN-API-SCHLUESSEL --dry-run --log-file=probelauf.log takeout-*.zip
grep -c ERROR probelauf.logAm Ende des Laufs zeigt immich-go eine Zusammenfassung: wie viele Bilder und Videos es gefunden hat, wie viele es hochladen würde und wie viele es aussortiert. Der grep danach antwortet im besten Fall mit 0. Steht dort eine andere Zahl, öffne die Log-Datei und lies die Zeilen mit ERROR; meist ist es die falsche Server-Adresse oder ein vertippter Schlüssel. Beides ist in einer Minute behoben.
Jetzt ist der Moment für zwei Entscheidungen, die sich später kaum rückgängig machen lassen. Erstens: Google packt Bilder, die dir ein Partner freigegeben hat, mit in den Export, und immich-go importiert sie standardmäßig mit. Willst du nur deine eigenen, hängst du --include-partner=false an. In den Diskussionen von immich-go fragte jemand, wie er die Partnerbilder nachträglich wieder loswird; der Entwickler antwortete sinngemäß, dass immich-go zum Importieren gebaut ist und Immich kein Merkmal kennt, an dem man sie später erkennt. Also vorher entscheiden. Zweitens: Der Papierkorb bleibt draußen, archivierte Bilder kommen mit, beides lässt sich mit --include-trashed und --include-archived umdrehen. Die Voreinstellungen finde ich vernünftig, so würde ich es lassen.
Schritt 6: Der echte Import
Derselbe Befehl ohne --dry-run. Neu dazu kommt --session-tag: Jedes Bild bekommt in Immich ein Etikett mit dem Zeitstempel dieses Laufs. Das kostet nichts und erlaubt dir später, genau diesen Import zu finden, etwa wenn du ihn noch einmal machen willst.
cd ~/takeout
immich-go upload from-google-photos --server=http://192.168.178.50:2283 --api-key=DEIN-API-SCHLUESSEL --session-tag --log-file=import.log takeout-*.zipJetzt läuft es, und zwar lange. immich-go pausiert währenddessen die Hintergrundjobs von Immich, damit der Server nicht gleichzeitig Vorschaubilder rechnet und Uploads entgegennimmt; nach dem Lauf schaltet es sie wieder ein. Reißt die Verbindung ab oder machst du den Laptop zu, startest du denselben Befehl einfach noch einmal: immich-go erkennt Dateien, die schon auf dem Server liegen, und überspringt sie. Das ist die wichtigste Eigenschaft dieses Werkzeugs, und die Doku nennt es ausdrücklich als Regel für unterbrochene Läufe.
Geklappt hat es, wenn in Immich unter Fotos die Zeitleiste bis in die Jahre zurückreicht, aus denen deine ältesten Bilder stammen, und unter Alben deine Google-Alben mit ihren Namen auftauchen. Die Zusammenfassung am Ende des Laufs nennt die Zahl der hochgeladenen Dateien; die vergleichst du mit der Zahl aus dem Probelauf. Stimmen beide überein, ist der Umzug durch. Ein kurzes Durchatmen ist hier angebracht, das war der größte Brocken.
Wenn die Zahlen nicht stimmen
Der Fall, der in den GitHub-Issues von immich-go am meisten Aufmerksamkeit bekommen hat: Jemand importierte drei ZIP-Archive mit rund 30.000 Bildern, das Log meldete jede Datei als erfolgreich, aber in Immich fehlten 90 Prozent. Erst als er die Archive entpackte und immich-go auf den entpackten Ordner losließ, kamen die Bilder an. Bis die Ursache geklärt ist, ist das der Ausweg, wenn Probelauf und Import auseinanderliegen oder Immich deutlich weniger zeigt als erwartet:
cd ~/takeout
for z in takeout-*.zip; do unzip -q -o "$z" -d entpackt; done
immich-go upload from-google-photos --server=http://192.168.178.50:2283 --api-key=DEIN-API-SCHLUESSEL --session-tag --log-file=import2.log entpacktDie Schleife entpackt alle Archive in einen gemeinsamen Ordner; das braucht noch einmal so viel Platz wie die ZIPs selbst. Der zweite Lauf lädt nur nach, was fehlt, weil immich-go die bereits vorhandenen Dateien überspringt. Kontrolle wie oben: Zahl in der Zusammenfassung, Zeitleiste, Alben.
Zwei weitere Stellen, an denen es erfahrungsgemäß klemmt:
- Geteilte Alben anderer Leute fehlen. Takeout enthält nur, was dir gehört. Bilder, die Freunde in ein gemeinsames Album gelegt haben, sind nicht im Export, und der Speichern-Knopf in Google Fotos hilft laut einer langen Diskussion im Immich-Repository nur halb: Die Bilder landen zwar in deiner Bibliothek, aber nicht in einem exportierbaren Album. Der Weg, der dort am Ende funktioniert hat: Jeder Beteiligte exportiert selbst, importiert in sein eigenes Immich-Konto, und danach werden die Alben in Immich geteilt.
- Doppelte Bilder nach dem Import. Google legt ein Bild in jedem Album noch einmal ab, und die immich-go-Doku beschreibt, dass Takeout Bilder ohne erkennbare Logik auch über mehrere Archive verteilt doppelt liefert. immich-go fängt viel davon ab, aber nicht alles. Was übrig bleibt, findest du im nächsten Abschnitt.
Was du nach dem Import einstellst
Die Bilder sind da, fertig ist der Umzug trotzdem nicht. Vier Dinge würde ich noch am selben Abend erledigen.
Die Hintergrundjobs beobachten. Immich muss jetzt für jedes Bild Metadaten lesen, Vorschaubilder rechnen, Gesichter erkennen und Duplikate suchen. Bei Zehntausenden Dateien dauert das Stunden, auf einem kleinen Server auch einen Tag.
Klick oben rechts auf dein Profilbild, dann auf Verwaltung, dort links auf den Punkt für die Hintergrundaufgaben (Jobs). Jede Zeile zeigt eine Warteschlange mit der Zahl der wartenden Aufgaben. Solange dort Zahlen stehen, arbeitet Immich; auf null ist es fertig.
Warum das nötig ist: immich-go hatte die Jobs während des Uploads pausiert. Sie laufen zwar von selbst wieder an, aber erst wenn die Warteschlangen leer sind, zeigt die Zeitleiste alle Bilder mit Vorschau und die Duplikatsuche hat alles gesehen. Vorher zu urteilen, ob der Import vollständig ist, führt in die Irre.
Duplikate durchsehen. Die Erkennung ist in Immich eingeschaltet, aber sie löscht nichts von allein, sie schlägt nur vor.
Öffne http://192.168.178.50:2283/utilities/duplicates, das ist der Punkt Duplikate in der linken Leiste. Immich zeigt Gruppen ähnlicher Bilder und hat das größere vorausgewählt. Mit Behalten und Papierkorb entscheidest du je Gruppe, oder du gehst mit „Alle deduplizieren“ Immichs Vorschlag einmal komplett durch.
Behältst du genau ein Bild, übernimmt Immich laut Doku Alben, Favoriten, Beschreibung und Ort von den verworfenen auf das behaltene. Der Standard reicht hier nicht, weil sonst jedes Album-Doppel für immer als eigenes Bild in der Zeitleiste steht und Speicher frisst.
Das Handy-Backup einschalten. Ab jetzt sollen neue Bilder in Immich landen, nicht mehr bei Google. Das macht die Immich-App, und zwar erst, wenn du es ihr sagst.
Immich-App installieren, als Server http://192.168.178.50:2283 eintragen, anmelden. Oben rechts auf das Wolken-Symbol tippen, die Alben des Handys auswählen, die gesichert werden sollen (mindestens die Kamera), nach unten scrollen und Enable Backup (Sicherung aktivieren) antippen.
Geklappt hat es, wenn das nächste Foto, das du schießt, kurz darauf in der Immich-Zeitleiste auftaucht. Warum der Standard nicht reicht: Ohne diesen Schalter sichert die App gar nichts, und in Google Fotos läuft die alte Sicherung parallel weiter, bis du sie dort abschaltest.
Die Sicherung von Immich prüfen. Hier kommt mein Backup-Tick, und ich weiß, dass er nervt. Immich legt ab Werk jede Nacht um zwei Uhr einen Datenbank-Dump in UPLOAD_LOCATION/backups ab und behält die letzten vierzehn. Das ist gut, aber es sichert nur die Datenbank, nicht die Bilder, und es liegt auf derselben Platte wie alles andere. Die Doku nennt drei Ordner, die unbedingt woanders hin müssen: library, upload und profile unterhalb deines Immich-Datenordners. Bis du das eingerichtet hast, bleiben die Takeout-ZIPs auf der externen Platte liegen. Sie sind gerade dein einziges zweites Exemplar.
Und Google?
Erst mal nichts. Ich würde das Google-Konto vier Wochen so lassen, wie es ist: mit allen Bildern und ausgeschalteter Sicherung in der Google-Fotos-App. In der Zeit zeigt sich, ob die Immich-App zuverlässig sichert, ob dir beim Suchen alte Bilder fehlen, und ob die Sicherung von Immich außer Haus wirklich läuft. Danach kannst du bei Google aufräumen; vorher gibt es keinen Grund dafür, und der Speicherplatz kostet dich einen Monat länger dasselbe wie bisher.
Der Umzug selbst ist eine Abendbeschäftigung, und der Aufwand steckt nicht in den Befehlen, sondern im Warten auf Google und in der Entscheidung über Partnerbilder und Duplikate. Wer die zwei Entscheidungen vor dem Import trifft, kommt mit einem Lauf durch. Wer sie überspringt, macht den Import zweimal. Das ist der Grund, warum diese Anleitung einen Probelauf hat und die Google-Hilfeseite keinen.
Welche Alben oder Bilder haben bei dir gefehlt, und war es der Export oder der Import? Und hast du die Partnerbilder mitgenommen oder draußen gelassen? Beides würde mich interessieren, schreib es in die Kommentare.
Der nächste Umzug aus der Cloud kommt bestimmt. Wer sich die Reihe nicht zusammensuchen will, bekommt sie sonntags gebündelt im Newsletter, mit dem, was in der Woche sonst noch lief.
Quellen
- Immich-Doku: Command Line Interface (Empfehlung für immich-go, API-Schlüssel)
- immich-go auf GitHub
- immich-go: Installation
- immich-go: Upload-Befehl und Optionen für Google Photos
- immich-go: Best Practices für die Migration
- immich-go: Eigenheiten des Google-Takeout-Archivs
- immich-go v0.32.0 (Release Notes)
- Immich v3.1.0 (Release Notes)
- immich-go Issue #1296: Google Photos import skipping files but reporting success
- immich-go Diskussion #85: Partnerbilder nachträglich entfernen
- Immich Diskussion #14477: Geteilte Google-Fotos-Alben migrieren
- Immich-Doku: Duplicates Utility
- Immich-Doku: Jobs and Workers
- Immich-Doku: Mobile App (Backup)
- Immich-Doku: Backup and Restore
- Google-Hilfe: Daten herunterladen (Takeout)