How to Self-Host Plausible Analytics With Docker Compose
Plausible Community Edition (CE) is the self-hosted version of Plausible, a web analytics service. Docker Compose uses a configuration file to run…
If you want to move your photo library from Google Photos to a server you manage, export it with Google Takeout and import it into Immich with immich-go. Immich is a self-hosted photo and video library: your files live on storage you control, and you manage the server and its backups. Immich’s own command-line documentation points Google Photos users to immich-go, a community-maintained tool built to read Takeout exports.
Takeout downloads an archive of your Google Photos data; it does not transfer the library directly to your server. The archive contains media files and, for some items, JSON sidecar files: small data files that can hold details such as titles, dates, and locations. immich-go matches those files during import and can preserve useful metadata and album organization. Check the imported library carefully. The documentation does not promise that immich-go will copy every Google Photos feature perfectly.
Before exporting, set up Immich and choose where it will store the imported originals. Immich’s quick-start instructions call for a new upload directory, the folder where Immich stores imported originals, with enough free space. Leave room for the full library and keep a separate backup of the media files.
Immich’s database stores information such as metadata and user data, but it does not back up the original photos and videos. Back up both the database and the media directory. A successful import does not protect the files if a disk fails.
Open Google Takeout and select Google Photos. Then create an export. Choose ZIP for easier handling. Google splits an export into multiple archives when it exceeds the selected archive size, so download every part and keep them together. The immich-go project recommends a 50 GB archive limit to reduce the number of parts; that is the project’s suggestion, not a Google requirement.
Google does not offer a Takeout option to export only a chosen date range. If you want to move only part of your library, plan to filter during or after import rather than expecting Takeout to make a time-limited export.
Keep every archive as part of one export and import all the parts together. The immich-go documentation includes ZIP-based examples, but its upload instructions also describe using extracted Takeout folders or a merged folder tree. It says to extract TGZ archives before importing. Because the documented input instructions vary, check the help for the version you install before choosing the input form.
Install immich-go using the instructions for its current release, then create an Immich API key. An API key is a credential that lets a command-line tool access your Immich server. Keep it private: do not put it in a public script repository or share it in logs. Use HTTPS when connecting over a network you do not control.
For ZIP archives, the project documentation shows this command pattern:
immich-go upload from-google-photos \
--server="https://immich.example.com" \
--api-key="$IMMICH_API_KEY" \
/path/to/takeout-*.zip
Replace the sample server address and file path with your own. The from-google-photos command is the Takeout-specific importer. Before running it, use immich-go upload from-google-photos --help and follow the input instructions for your installed version. If that version expects extracted folders, extract the archives and pass the Takeout folders it specifies. In either case, supply all parts of the export in one import invocation. The project’s documentation hub includes the ZIP command pattern, while its upload instructions describe folder-based inputs.
The importer matches media with companion JSON where it can, then uses matched information for details such as descriptions, capture dates, GPS coordinates, and album membership. The Takeout format notes explain that some media has no matching JSON, and that filenames and relationships in an export can be irregular.
Check the importer’s default settings before you start, especially if you want it to import items it normally leaves out. In the documented command reference, archived and partner items are included, while trashed items, unmatched media, and untitled albums are excluded. The importer provides options such as --include-trashed, --include-unmatched, and --include-untitled-albums; confirm the names and behavior in your installed version. Its command reference also describes album creation. It covers Takeout timestamp and people-name tags as well.
Check partner-shared content separately. Google says saved partner photos appear in the recipient’s library, and immich-go includes partner items by default in its documented settings. That does not establish that every shared item or album relationship will be exported and recreated. Verify the partner-shared photos you care about in both the Takeout export and Immich.
Compare the source and destination counts. Account for duplicates and for items your import settings exclude. Then inspect samples from different years and albums. Check that dates, locations, descriptions, and album membership look right, and review the import logs for unmatched or skipped files.
If you need to retry an import, first check how your installed immich-go version handles duplicates and existing files. The project’s migration recommendations discuss count checks, sample reviews, and restarting interrupted imports. Keep the Takeout archives until you have finished checking the result and have a separate backup of the Immich media and database.
Give Vroni a GitHub issue, bug report, spec, or rough idea. It reads the repo, plans the change, writes code, runs checks, and works toward a review-ready pull request.
Take a look at vroni.com