Here’s the thing: I’ve been paying Google $100/year for Photos storage while simultaneously running a homelab with 16 cores of CPU doing absolutely nothing. That math stopped making sense about six months ago when I finally deployed Immich.
If you’ve ever wished Google Photos had a self-hosted option that didn’t sacrifice the AI magic, Immich is exactly what you’ve been waiting for. Facial recognition, object detection, natural language search—the whole package—running entirely on your hardware.
What Immich Actually Does (It’s Impressive)
Let me be clear: this isn’t a glorified photo folder. Immich is a complete Google Photos replacement with features that honestly rival the real thing.
The AI features run locally on your server. You can search for “my dog at the beach” and it’ll find the right photo. You can ask for “photos from last summer” and it understands temporal context. There’s automatic tagging, facial recognition that learns your family members, and a smart map view that geo-tags everything based on EXIF data.
Both iOS and Android apps support automatic backup—toss your phone on your home WiFi and everything syncs silently. No subscription, no surprise rate limits, no “please upgrade” notifications. Just your photos, on your server.
The killer feature? It actually works. I’ve tested Google Photos alternatives before. They’re usually slow, buggy, or feature-incomplete. Immich isn’t. The UI is clean, search is legitimately fast, and the ML models don’t need a Tesla to run.
The Install (It’s Stupidly Easy With Docker)
Seriously, if you have Docker and 15 minutes, you’re done. Here’s a production-ready compose file:
version: '3.8'
services:
immich-server:
image: ghcr.io/immich-app/immich-server:latest
container_name: immich-server
environment:
DB_URL: postgresql://immich:password@immich-db:5432/immich
REDIS_URL: redis://immich-redis:6379
LOG_LEVEL: log
volumes:
- /mnt/photos:/usr/src/app/upload
ports:
- "3001:3001"
depends_on:
- immich-db
- immich-redis
restart: unless-stopped
immich-machine-learning:
image: ghcr.io/immich-app/immich-machine-learning:latest
container_name: immich-ml
volumes:
- immich-ml-cache:/cache
environment:
TRANSFORMERS_CACHE: /cache
restart: unless-stopped
immich-db:
image: postgres:15-alpine
container_name: immich-db
environment:
POSTGRES_USER: immich
POSTGRES_PASSWORD: password
POSTGRES_DB: immich
volumes:
- immich-db:/var/lib/postgresql/data
restart: unless-stopped
immich-redis:
image: redis:7-alpine
container_name: immich-redis
restart: unless-stopped
volumes:
immich-db:
immich-ml-cache:
Drop that in a compose file, change the DB password to something non-stupid, and run docker-compose up -d. Hit localhost:3001 and create your account. That’s it.
Storage-wise, allocate whatever you have for photos. I’m running 500GB on a 2TB drive with room to spare. The ML models take ~2GB and cache another 3-5GB. CPU usage sits at 5-10% idle, spikes to 40% during indexing.
Pro tip: If you’re running Traefik (and you should be), stick Immich behind a reverse proxy with basic auth. Throw it at photos.yourhomelabdomain.com and forget about port forwarding.
The AI Features That Actually Matter
The facial recognition is the sleeper hit. You train it once—literally just tag a few photos with names—and it learns to recognize people across your entire library. No cloud vendor analyzing your face. No subscription tiers for “better” recognition. Just your hardware doing the work.
Object detection finds “cars,” “dogs,” “beaches,” “food,” etc. without you tagging anything. It’s not perfect, but it’s good enough to browse by category without manually organizing thousands of photos.
The natural language search is where the magic lives. Say “Christmas 2023” or “hiking photos” and it understands. I’ve tested this against Google Photos directly—Immich is faster and honestly seems more accurate.
One caveat: the first ML indexing run takes a while. On my 50,000-photo library, it chewed through about 8 hours of processing time. But that’s a one-time cost, and you can let it run overnight.
Mobile Backup That Actually Works
The mobile apps are the glue that makes this system real. iOS and Android clients handle automatic backup, configurable by WiFi only or always, selective folder sync, and background operation.
I set mine to back up only on my home WiFi and plugged in. Since then, zero thought required. Photos appear on my server automatically.
You can share albums with family members, set backup schedules per device, and even configure external library support if you’re pulling from NAS or other sources. It’s thoughtfully designed.
Making It Part of Your Homelab Ecosystem
Immich plays nice with the rest of your stack. If you’re running Home Assistant, there’s no direct integration yet, but you can trigger webhooks on photo upload. If you’re on Proxmox, drop it in an LXC container instead of Docker for slightly better performance.
It respects your Pi-hole and Unifi setups—no sneaky external calls, no tracking. All ML runs locally. All data stays local.
The admin dashboard gives you visibility into storage usage, library stats, and device activity. Backup your PostgreSQL database regularly (just volume-mount it somewhere safe) and you’re covered.
The Honest Downsides
Immich is young, so expect occasional bugs. The search syntax isn’t as refined as Google’s. Some edge cases in ML detection miss things. The clip-based semantic search is good but not mind-blowing.
If you have 500K+ photos, hardware matters. You’ll want a proper CPU. Don’t expect this to fly on a Raspberry Pi 3 (Pi 5? Maybe).
And yes, you have to maintain it. If your database breaks, you fix it. If the ML service crashes, you restart it. That’s the trade-off for not paying Google $1,200 over the next 12 years.
Honestly? That’s fine. It beats dealing with Google’s enshittification.
The Math Works
Google Photos 200GB tier is $30/year now, climbing to $100+ if you actually have a serious library. Immich costs you electricity, storage, and your time—probably $5-10/month if you’re already running a homelab.
Over 5 years, you’re looking at $250-600 saved. And you own your data. And the AI features match or beat Google’s. And you learn something about self-hosting.
Install Immich this weekend. Your future self will thank you.
Explore Immich in our AI Homelab Toolkit.
Build the same setup
Affiliate links — using these helps support the testing on this site at no extra cost to you.
2-bay NAS — perfect for 4TB family library Check price → WD Red Plus 4TB (x2)
NAS-rated drives, RAID 1 = 4TB usable Check price → Google Coral USB
Accelerates ML object detection ~10x Check price → APC Back-UPS Pro 1500
Protects NAS against power blips Check price → Host on a Droplet
DigitalOcean — Immich on cloud, no NAS needed $200 credit →
Not sure your hardware is up to it? Try the homelab hardware calculator — it covers Immich’s ML acceleration tier too.
Recommended Hardware & Hosting
Build your homelab with hardware tested and used by our team.
Affiliate links — we may earn a small commission at no extra cost to you.