Immich Review: Self-Hosted Google Photos Alternative for Developers
A measured look at Immich, the open-source self-hosted photo platform with mobile apps and on-device ML, covering deployment, AI features, and the tradeoffs of running it yourself.
What Immich Is
Immich is an open-source, self-hosted photo and video backup platform. The project ships a server, a web client, and native iOS and Android apps under AGPL-3.0. The mobile apps mirror the Google Photos flow: grant photo library access, and the app uploads new captures to a server you run. The web UI organizes the resulting library with albums, places, faces, and natural-language search.
The repo on GitHub ships a docker-compose.yml and a small set of services. Standing the stack up takes one command on any host with Docker installed. The team has been shipping the project publicly since 2022 and has crossed 60,000 GitHub stars, with a monthly release cadence.
Three audiences care about this project:
- Households leaving Google Photos because of the 15 GB shared quota or the unease about cloud-side ML running on private photos.
- Homelabbers who already run a NAS or a small server and want a “photos app” tier on top of their existing storage.
- Developers who want an HTTP API and event hooks for their own automation — bulk imports, custom albums, family-facing share endpoints.
What makes Immich worth a review now rather than a year ago: stability landed, the mobile apps stopped requiring background-task workarounds on iOS for normal use, and the ML stack got faster CPU inference paths via ONNX runtime updates. If you bounced off Immich in 2023 because every other release broke your database schema, the picture is different today.
Architecture and Deployment
The reference deployment is six containers, all defined in the example compose file:
immich-server— the NestJS API plus microservices for jobs, ingest, and notifications.immich-machine-learning— a Python service that runs ML models (face detection, face embeddings, CLIP image and text embeddings).redis— job queue and short-term cache.postgres— metadata, with thepgvecto.rsorpgvectorextension for vector search.- A web client served from the server container.
- An optional reverse proxy of your choice.
You point UPLOAD_LOCATION at a directory on the host, set a Postgres password, and run docker compose up -d. The web UI is reachable in under a minute on a small server. First-run setup creates an admin user and lets you invite additional users from the settings page.
Originals are stored on the filesystem and never re-encoded. JPEG, HEIC, most RAW formats via libraw, and the common video containers (MP4, MOV, ProRes) all import as-is. The server generates a thumbnail and a larger preview alongside each original, so a 50 GB phone roll lands closer to 65 GB on disk after processing.
Postgres holds metadata and the vector index. The machine learning container drives the first-run cost: bulk-importing an existing library puts every image through face detection, face embedding, and CLIP embedding. On a 4-core x86 box, an import of around 100,000 photos can take the better part of a day. After that, incremental ingest from phones is near-instant because the queue depth is just the new captures.
You can run the ML container on GPU via CUDA, OpenVINO, or Apple’s CoreML on macOS hosts. The repo documents the configurations. On a homelab box with a discrete GPU, initial import drops from hours to minutes.
AI Features and What They Actually Do
Three AI features ship in the box.
Face clustering. Every photo goes through RetinaFace for detection and an ArcFace-style model for embeddings. Embeddings get clustered into “people” you can name. You name a cluster once and the label propagates to every other photo in that cluster. Accuracy on adults is good. Embeddings for young children drift as their features change, so expect to merge clusters by hand every few months until they grow up.
Smart search. CLIP-derived embeddings let you type red bicycle at night or kitchen with morning light and get a ranked result list. The search runs over precomputed embeddings stored in Postgres. Latency on libraries under 50,000 photos is sub-second on commodity hardware, and quality on natural-language queries holds up against the equivalent Google Photos search in our spot checks.
Duplicate detection. Perceptual hashing flags near-duplicates — rotation, compression, and edit variants — for manual review. You confirm or reject each batch from the UI rather than the server deleting anything on its own. Conservative defaults, which is the right call for an irreplaceable archive.
What the AI does not do today:
- Text OCR on signs or handwritten notes lags Apple’s on-device OCR.
- Auto-generated “memories” reels exist but are skeletal next to Google Photos.
- No voice tagging, AI captions, or generative editing.
For developers, the ML container is just an HTTP service. You can call it directly if you want to bolt your own pipelines onto it — for example, generating CLIP embeddings for photos already stored elsewhere and feeding them into the database.
The Tradeoffs of Self-Hosting
Mobile uploads carry platform constraints. iOS aggressively suspends background uploads, so a roll of 500 new photos may upload across several app opens rather than in one push. The Immich app uses every background API iOS exposes; the ceiling is Apple’s, not Immich’s. Android is more cooperative but still subject to manufacturer-specific power management.
The web UI is functional and clearly improving. Album sharing, public links, and collaborative albums all work. Comments and reactions exist but feel plain compared to Google Photos. If you share with non-technical family members, expect a short adjustment period — and consider keeping Google Photos on a free tier as the “share with grandma” path for the first six months.
Resource footprint is modest at rest and spiky during ML work. A household-scale instance (3–5 users, ~300,000 photos) runs steady-state on 4 GB RAM and 2 vCPUs. Initial import will saturate any CPU you give it; plan for a one-time spike or schedule it overnight.
Cost arithmetic versus Google One 2 TB ($9.99/month, $99.99/year on annual prepay): a capable Mini PC plus a 4 TB SSD is $300–500 one-time. Add Backblaze B2 offsite at $6/TB/month for proper backup and you spend roughly $144/year for 2 TB of cold copies. Plain hardware payback lands around year three. After that, you own the rails.
The right question is not whether Immich beats Google Photos on polish — it does not, and it does not need to. The right question is whether owning your photo archive is worth the operational tax of running one more service. For developers who already run a homelab, the answer is usually yes. For everyone else, evaluate honestly before you migrate.
FAQ
Can Immich run on a Raspberry Pi? +
How does Immich compare to PhotoPrism? +
Are my photos encrypted at rest? +
Related tools
Beehiiv
Newsletter platform with built-in ad network and Boost referrals.
Try Beehiiv →
Webflow
Visual site builder with real CSS export and a CMS that scales.
Try Webflow →
Some links above are affiliate links. We may earn a commission if you sign up. See our disclosure for details.
Related reading
2026-05-18
PyPI Package Growth Surge: What the Explosion Means for Python Developers
PyPI's catalog is growing faster than ever. Here's how the surge affects supply-chain risk, dependency bloat, and what to use when you audit your tree.
2026-05-18
Supabase Review: The Open-Source Postgres Platform for AI App Backends
A measured review of Supabase — the open-source Firebase alternative built on dedicated Postgres with auth, storage, realtime, and pgvector. What holds up for AI backends, what doesn't, and where pricing and the realtime engine bite.
2026-05-18
Coolify Review: Self-Hosted PaaS as Vercel/Heroku Alternative
Coolify is an open-source PaaS you self-host for around $6/month. We tested its 280+ one-click services and where it beats Vercel/Heroku — and where it doesn't.
2026-05-18
rk3562deb Review: Can a $80 ARM Tablet Be Your Linux Dev Workstation?
We read through the rk3562deb project that converts cheap RK3562 Android tablets into Debian Linux machines. Here's what works, what doesn't, and which dev workflows actually fit.
2026-05-18
70% of Americans Oppose Local AI Data Centers: What It Means for Developers
A new poll shows roughly 70% of Americans don't want AI data centers built nearby. Here's how the resulting permitting drag will hit inference pricing, region availability, and your architecture decisions.
Get the best tools, weekly
One email every Friday. No spam, unsubscribe anytime.