I’ve been a Google Photos user for the better part of a decade, and for most of that time I made peace with the trade-off: Google gets to look at every photo I take, in exchange for all of my photos automatically backed up, searchable, and accessible from anywhere. That trade-off felt fine in 2016. It feels less fine now. The free tier got worse, the AI features got noisier, and every so often I’d notice another “just check that this is the right person” prompt and remember that Google has been quietly building a face graph of everyone I’ve ever photographed.
Immich is the open-source, self-hosted answer to that. It’s a photo and video backup platform that does almost everything Google Photos does - automatic mobile upload, machine-learning-based search, face recognition, albums, sharing, a map view of where things were taken - except it runs on a box you own, looking at files you own, with no third party in the loop. It’s developed in the open at immich-app/immich and the velocity is genuinely impressive; the project went from “interesting hobbyist thing” to “I trust this with twelve years of photos” in about eighteen months.
Installing it (Docker, of course)
Installation is the standard self-hosting story: a docker-compose.yml and an .env file, both of which the project ships with sensible defaults. You can be running in about ten minutes:
mkdir immich && cd 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
# edit .env: set UPLOAD_LOCATION to wherever your photos should live
docker compose up -d
That brings up the API server, the machine-learning service (face recognition, CLIP-based semantic search, etc.), Postgres with the pgvector extension, and Redis. The web UI is on port 2283 by default. Stick it behind nginx with a TLS cert and you’re done. The docs at immich.app/docs/install/docker-compose are excellent and worth reading once instead of just copy-pasting (the bit about UPLOAD_LOCATION versus the database volume in particular).
The mobile app
The mobile app is what makes or breaks a photo backup tool, and Immich’s is genuinely good. It’s on both iOS and Android, it backs up automatically in the background, and the timeline-style browse view will feel instantly familiar to anyone coming from Google Photos. You point it at your server, log in once, pick which albums on your phone get backed up, and from then on it just works - new photos show up on the server within a minute or two of being taken, with the original full-resolution file (not a re-encoded “good enough” version, which was always one of my Google Photos pet peeves).
What it actually does
The feature list is long and growing, but the bits I use most:
- Automatic mobile backup - original quality, in the background, with battery- and network-aware scheduling.
- Face recognition and people view - runs locally on the ML container, names are yours and never leave the box.
- Semantic search - “photos of a brown dog on a beach” works, powered by CLIP embeddings stored in
pgvector. - Albums and shared albums - including external-share links with optional passwords and expiry.
- Map view - plots photos on a world map by EXIF GPS data.
- Memories / “on this day” - yes, the slightly-emotional Google Photos feature, just without the analytics.
- Multi-user - give the rest of the household their own login and storage quota.
- External libraries - point it at an existing folder of photos (e.g. a long-running
rsyncarchive) and it’ll index without moving the files.
How it compares to Google Photos
Honestly? For day-to-day use, the experience is near-parity. Browsing the timeline, searching by content, finding a person, sharing an album — all of those feel functionally equivalent. Where Immich pulls ahead is the obvious bit: nothing leaves your network, you can back the underlying files up however you want (it’s just files on disk, organised by date), and there’s no chance of the product being killed or the free tier being silently squeezed.
Where Google Photos is still ahead is in the polish of the ML - its face recognition is more accurate at the long tail (rare-angle photos, kids growing up over years), and its memory clip generation is slicker. Both gaps are closing fast, though, and for me the privacy and ownership story comfortably outweighs the polish gap. Twelve years of photos sitting on my own ZFS pool, indexed by a service I can read the source of, with the same “open the app and scroll” experience I had before. That’s a pretty great place to be.