Skip to main content
Self-Hosted AI Apps

Immich Just Killed Google Photos in My Homelab

· · 5 min read

I’ve been paying Google $10/month for Photos storage for five years. Then I set up Immich on my homelab and realized I’d been throwing money at a problem that solved itself.

Here’s the thing: Immich is what Google Photos should have been if Google actually cared about privacy. Facial recognition runs on your hardware. Your photos never touch a cloud. AI-powered search works so well you’ll forget you ever needed folders. And it backs up from your phone automatically, just like Google Photos does — except the only person seeing your vacation pics is you.

I’m not exaggerating when I say this is the most impressive self-hosted app I’ve deployed this year. Let me show you why.

What Makes Immich Actually Different

Every homelab enthusiast knows about PhotoPrism. It’s solid. But Immich is the version that feels finished — like someone actually sat down and thought “what would power users want?”

The killer feature is search. Describe what you’re looking for in plain English: “dog on the beach at sunset” or “kid’s birthday cake”. Immich finds it. Not by filename or metadata tags — by actual image content. This is powered by CLIP, a machine learning model that understands what’s *in* your photos. It runs locally. No API calls to OpenAI. No cloud processing. Just your GPU doing the heavy lifting.

Then there’s facial recognition. Enable it once, and Immich learns faces automatically. Show me a photo of your best friend from three years ago, and it’ll find every photo they’re in. Merge duplicate detections, hide people you don’t want grouped, organize by family members. It’s scarily accurate.

Object detection rounds it out — find all photos with “car”, “person”, “dog”, etc. with a tap. Automatic album creation based on detection results. Map view powered by Exif metadata. Timeline search by date, location, or camera type. This isn’t a photo backup tool with a search bar tacked on — it’s a purpose-built photo management system.

Real talk: This replaces Google Photos. Period. If you’ve got the hardware to run it, there’s no reason to keep paying.

The Install (It’s Stupidly Easy)

Immich runs in Docker. If you’re reading this, you already know what that means. Here’s a minimal compose file to get started:

version: '3.8'

services:
  immich-server:
    image: ghcr.io/immich-app/immich-server:latest
    container_name: immich_server
    command: start.sh immich
    volumes:
      - ${UPLOAD_LOCATION}:/usr/src/app/upload
      - /etc/localtime:/etc/localtime:ro
    ports:
      - "2283:3001"
    environment:
      - DB_PASSWORD=postgres
      - DB_HOSTNAME=immich-db
      - DB_USERNAME=postgres
      - DB_NAME=immich
      - REDIS_HOSTNAME=immich-redis
      - MACHINE_LEARNING_ENABLED=true
      - MACHINE_LEARNING_URL=http://immich-ml:3003
    depends_on:
      - immich-db
      - immich-redis
      - immich-ml

  immich-ml:
    image: ghcr.io/immich-app/immich-machine-learning:latest
    container_name: immich_ml
    volumes:
      - model-cache:/cache
    ports:
      - "3003:3003"
    environment:
      - TRANSFORMERS_CACHE=/cache

  immich-db:
    image: postgres:15-alpine
    container_name: immich_db
    environment:
      - POSTGRES_PASSWORD=postgres
      - POSTGRES_USER=postgres
      - POSTGRES_DB=immich
    volumes:
      - postgres:/var/lib/postgresql/data

  immich-redis:
    image: redis:7-alpine
    container_name: immich_redis

volumes:
  postgres:
  model-cache:

Drop this in a folder with an .env file defining UPLOAD_LOCATION (where your photos live), run docker compose up -d, and you’re done. Point your browser to http://localhost:2283. That’s it.

The machine learning container will download models on first run. Expect a few hundred MB depending on which features you enable. First-time facial recognition indexing takes a while — I’ve got 15,000 photos and it took about 2 hours on an RTX 3060. After that? Instant.

Pro tip: If you’re running this behind Traefik with HTTPS (you should be), add a middleware to strip /immich from the path so the API doesn’t break. Trust me on this.

Mobile Backup That Actually Works

Install the iOS or Android app. Point it at your server. Enable automatic backup. Done. New photos upload in the background. Videos too. Burst photos, RAW files, everything.

The app is responsive and doesn’t drain your battery like Google Photos does. I’ve had it running on my phone for six months. Battery impact is negligible. Storage impact is zero since the backup deletes after it reaches the server (you can configure this).

Share albums with family members, set viewing permissions, create public links. Your partner’s photos automatically show up in the timeline. Kid’s school photos go into a dedicated album. No cloud, no subscriptions, no data broker selling your memories to advertisers.

The Hardware Reality Check

Here’s what you need to know: Immich isn’t lightweight. The machine learning models require decent compute. A Raspberry Pi won’t cut it.

I’m running it on a small Proxmox VM with 4 CPU cores and 8GB RAM, paired with an RTX 3060 (GPU acceleration for ML inference). Facial recognition and object detection run in under a minute per 100 new photos. CLIP search indexes everything in the background without impacting performance.

On my setup, cold search across 15,000 photos takes 2-3 seconds. Subsequent searches are instant. Facial recognition updates run nightly at 2 AM. You’ll never notice it’s happening.

Can you run this without a GPU? Technically yes. But CPU-only inference is *slow*. Budget at least a used GTX 1660 ($100-150) if you’re serious about this. Or rent bare metal for $30-50/month from Hetzner. The cost math works out fast when you stop paying Google.

Real situation: If you don’t have spare hardware, don’t force it. PhotoPrism is lighter and still better than Google Photos. But if you’ve got a homelab sitting there pulling power anyway, Immich is the no-brainer addition.

What This Replaces (And What It Doesn’t)

Immich is 100% replacement for Google Photos. Better search, better privacy, better control. It’s not a replacement for Lightroom if you’re doing serious photo editing — different tool for a different job.

It integrates cleanly with Home Assistant if you want to trigger automations based on new photos (use the webhooks). You can write custom scripts to auto-tag photos, back them up to S3, or send copies to Nextcloud. It’s got a real API.

The only missing piece is the “shared libraries” concept that newer Google Photos supports. Immich does shared albums, but true collaborative libraries aren’t there yet. Check GitHub issues — it’s being worked on.

Everything else? Immich wins. Faster search. Better organization. Zero cost after setup. Your photos stay yours.

The Honest Ending

I’ve killed Google Photos in my homelab. Haven’t looked back. Immich syncs all three family phones, stores everything locally, runs all the ML on my hardware, and costs me nothing beyond electricity.

The UI is polished. The mobile apps are native and feel right. Search is *actually magic* — not just better tagging, but real “describe what you want” functionality that works. Facial recognition is creepily accurate. And knowing your photos aren’t being analyzed by Google’s ad machine? That’s priceless.

If you’ve got the hardware, deploy Immich this weekend. You’ll wonder how you lived without it.

Explore Immich in our AI Homelab Toolkit.

Share this article