Immich
Photo ManagementHigh-performance self-hosted photo and video backup
Replaces Google Photos, iCloud Photos
Mobile backup and primary library
Replace Google Photos with automatic mobile backup and AI search.
Immich handles the Google Photos role — automatic mobile backup, timeline, face recognition, and shared albums — while PhotoPrism adds a second, independent view over the same originals with its own AI tagging and geodata browsing. Many self-hosters run both against one photo directory during migration, then keep the one that fits; Syncthing covers ingest from cameras and desktops that the mobile apps don't reach.
High-performance self-hosted photo and video backup
Replaces Google Photos, iCloud Photos
Mobile backup and primary library
AI-powered photo app for the decentralized web
Replaces Google Photos
Independent second library over the same files
Continuous peer-to-peer file synchronization
Replaces Dropbox, Resilio Sync
Ingest from desktops and cameras
Last reviewed Oct 11, 2026 · 617 words
The rule that makes this stack safe is simple: one app writes, the others only read. Let Immich own phone uploads, let Syncthing own the folders it brings in from desktops and cameras, and mount everything read-only into PhotoPrism. Budget about 4,224 MB of RAM by the directory's estimates, almost all of it the two libraries at 2,048 MB each; Syncthing adds 128 MB. Both Immich and PhotoPrism are rated Medium, Syncthing Easy.
Nothing here calls another app's API. The integration is the filesystem.
Phones run the Immich app, which uploads into Immich's own upload location and organises files there. Desktops and cameras feed a separate originals folder through Syncthing, which syncs peer to peer over port 22000 and never needs its GUI exposed. Immich can then index that Syncthing folder as an external library without moving anything, so the timeline, face recognition and shared albums cover both sources. PhotoPrism indexes the same originals (and, if you want, Immich's upload folder) read-only and gives you its own AI tagging, maps and RAW handling as an independent second view.
| App | Role | Writes to photos? | Directory RAM estimate |
|---|---|---|---|
| Immich | Phone backup, primary library | Its upload folder only | 2,048 MB |
| PhotoPrism | Second library, tagging, maps | No (read-only) | 2,048 MB |
| Syncthing | Desktop and camera ingest | Its synced folder only | 128 MB |
Start with storage. Decide where Immich's upload location and the Syncthing originals folder live, and make sure both sit on the disk you back up. Then deploy Immich using the docker-compose.yml and .env shipped with the release, because its server, machine-learning container, Postgres with the vector extension and Redis change between versions. Pin IMMICH_VERSION rather than tracking latest, and read release notes before upgrading. Get the phones backing up, then add Syncthing and the external library, then PhotoPrism last.
Stagger the initial indexing. Running both libraries' first scans and machine-learning passes at once on a large collection is how a modest box ends up swapping for hours.
Yes, as long as only one of them is allowed to change it. Both apps can index the same originals directory, but if either is configured to import, move or rename files, the other sees files vanish and reappear and rebuilds its index. Mount the shared folder read-only into PhotoPrism, keep Immich's writes confined to its own upload location, and the two coexist. The Immich vs PhotoPrism comparison covers which one to keep once the trial period ends.
Immich backs up your phone to your server. It does not back up your server. A dead disk, a bad upgrade or an accidental album deletion takes the only copy with it. Back up the originals folders and Immich's database dump to a second disk and an off-site target. Syncthing is not that second copy either: it propagates deletions by design, so a mistake on one device spreads to all of them.
On the proxy side, raise the client body size limit for Immich or large video uploads fail partway. Give each app its own subdomain. Keep Syncthing's port 8384 GUI on the LAN.
Run Immich and Syncthing from day one, add PhotoPrism read-only for a month if you are undecided, then remove whichever you stop opening. The Google Photos migration guide covers moving your existing archive in, and that is the moment to set up the off-site copy, not after.