Self-Host Immich: Replace Google Photos With a Private Photo Library That Actually Respects Your Privacy

Step-by-step guide to setting up Immich, the open-source Google Photos alternative with AI face recognition and smart search — all running on your own hardware.

A collection of printed photographs scattered on a surface

Google Photos just got a lot creepier. In February 2026, Google rolled out its “Active Context” layer — Gemini AI now scans every photo in your library, reading receipts, analyzing screenshots, mapping your social connections through facial recognition, and building what amounts to a knowledge graph of your entire life. The Electronic Frontier Foundation warned users are trading convenience for “total access to your life context.”

You can turn off “Gemini Apps” in Google Photos, but the core indexing is baked into the Memories feature. And Google still hasn’t clarified whether photos processed through its AI tools are exempt from model training.

There’s a better option. Immich is an open-source, self-hosted photo management platform that matches Google Photos feature-for-feature — automatic mobile backup, AI face recognition, natural language search, shared albums, timeline view — except everything runs on your hardware, and not a single byte of your data leaves your network.

With over 96,000 GitHub stars and version 2.6.3 just released in April 2026, Immich is the most mature self-hosted photo solution available. Here’s how to set it up.

What You Get

Immich isn’t a bare-bones backup tool. It’s a full Google Photos replacement with features that actually compete:

  • Automatic mobile backup — iOS and Android apps sync photos over Wi-Fi or cellular, with background upload support
  • AI face recognition — Detects and groups faces automatically using InsightFace models. Name someone once, and Immich finds them across your entire library. Accuracy sits at 80-95% for typical home libraries
  • Smart search — Type “beach sunset” or “birthday cake” and get results. Powered by CLIP embeddings running entirely on your machine
  • Timeline and map views — Browse by date or location, with v2.6 adding a map sidebar with mini-timeline for cluster browsing
  • Shared albums and libraries — Share photos with family members who have their own accounts
  • Non-destructive editing — New in v2.6: edits are stored separately, original files stay untouched
  • No storage limits — Your only limit is your hard drive

What You Need

Immich runs in Docker, which makes setup straightforward on most Linux machines. Here are the minimum requirements:

ComponentMinimumRecommended
RAM4 GB8 GB+
CPU2 cores4 cores
Storage (OS + DB)SSD, 5 GB freeSSD, 10 GB+
Photo storageAny driveYour largest/cheapest drive
PlatformLinux (amd64 or arm64)Linux

A few notes:

  • The machine learning container alone needs 2-3 GB RAM during processing
  • The PostgreSQL database must live on local SSD storage — network shares cause problems
  • Photo storage can be on a separate drive, NAS, or large HDD
  • Windows works through WSL2, but Linux is strongly recommended
  • A Raspberry Pi 4 with 8 GB RAM can run Immich, though ML processing will be slow

Optional: GPU acceleration. If you have a dedicated GPU, Immich can use it for face recognition and smart search. This bumps processing from roughly 100 photos/minute to 500+ photos/minute. Supported hardware includes:

  • NVIDIA GPUs (Pascal architecture or newer, compute capability 6.0+)
  • Intel Arc, integrated graphics (11th gen+), or Data Center GPUs
  • AMD GPUs supported by ROCm
  • ARM SoCs with Mali GPU (e.g., RK3588)

Step 1: Install Docker

If you don’t already have Docker and Docker Compose installed:

# Install Docker (Debian/Ubuntu)
curl -fsSL https://get.docker.com | sh
sudo usermod -aG docker $USER

# Log out and back in, then verify
docker --version
docker compose version

Step 2: Set Up Immich

Create a directory and download the configuration files:

mkdir ~/immich-app && cd ~/immich-app

# Download the Docker Compose file and environment template
curl -Lo docker-compose.yml https://github.com/immich-app/immich/releases/latest/download/docker-compose.yml
curl -Lo .env https://github.com/immich-app/immich/releases/latest/download/example.env

Now edit the .env file. The critical settings:

# Where your photos are stored (use your largest drive)
UPLOAD_LOCATION=/mnt/photos/immich

# Where PostgreSQL stores its data (MUST be local SSD)
DB_DATA_LOCATION=./postgres

# Change this to a strong, unique password
DB_PASSWORD=your-secure-password-here

# Optional: set your timezone
TZ=Europe/Amsterdam

Create the photo storage directory:

sudo mkdir -p /mnt/photos/immich
sudo chown $USER:$USER /mnt/photos/immich

Step 3: Launch Immich

docker compose up -d

Docker will pull the images (about 2-3 GB total) and start the containers. Give it a minute to initialize the database. Then open your browser to http://your-server-ip:2283.

The first user to register becomes the admin. Click “Getting Started,” create your account, and you’re in.

Step 4: Connect Your Phone

Install the Immich app from the App Store (iOS) or Google Play (Android).

Log in with your server URL (http://your-server-ip:2283) and credentials. Then:

  1. Tap the cloud icon in the top right
  2. Select which photo albums to back up
  3. Enable background backup

iOS users: Make sure Background App Refresh is enabled in Settings > General > Background App Refresh. iOS controls when background tasks actually run — you can’t force it.

Android users: Some manufacturers aggressively kill background processes. Check dontkillmyapp.com for instructions specific to your phone brand.

Immich calculates checksums for every file, so if you’ve already uploaded photos through the web or CLI, it skips duplicates automatically.

Step 5: Migrate From Google Photos

This is the part most people dread, but Immich-Go makes it painless:

1. Request your data from Google Takeout:

  • Go to takeout.google.com
  • Deselect everything, then select only Google Photos
  • Choose .zip format and the largest file size (50 GB)
  • Wait for Google to prepare the export (can take hours to days)

2. Install Immich-Go:

# Download the latest release for your platform
curl -Lo immich-go.tar.gz https://github.com/simulot/immich-go/releases/latest/download/immich-go_Linux_x86_64.tar.gz
tar xzf immich-go.tar.gz
chmod +x immich-go

3. Generate an API key in Immich: Go to your Immich web interface > User Settings > API Keys > New API Key

4. Run the import:

./immich-go upload from-google-photos \
  --server=http://localhost:2283 \
  --api-key=your-api-key-here \
  /path/to/takeout-*.zip

Immich-Go handles the metadata matching that makes Google Takeout exports tricky — it correctly pairs photos with their JSON sidecar files to preserve timestamps, GPS coordinates, album info, and descriptions. It also deduplicates automatically and handles RAW+JPEG pairs.

For libraries over 50,000 photos, expect the import to take several hours.

Step 6: Let the AI Do Its Thing

Once your photos are uploaded, Immich’s machine learning container starts processing them in the background. It will:

  1. Generate CLIP embeddings for smart search (so you can type “dog in snow” and find results)
  2. Detect faces and group them by similarity
  3. Extract and index metadata

For a library of 50,000 photos on a 4-core CPU without GPU acceleration, initial processing takes roughly 8-12 hours. With a GPU, it drops to 1-2 hours.

Once face detection finishes, head to the People tab and start naming faces. After you identify a person in a few photos, Immich recognizes them across your entire library.

Optional: GPU Acceleration

If you have an NVIDIA GPU and want to speed up ML processing, add the GPU configuration to your docker-compose.yml:

immich-machine-learning:
  # ... existing config ...
  deploy:
    resources:
      reservations:
        devices:
          - driver: nvidia
            count: 1
            capabilities:
              - gpu

Then install the NVIDIA Container Toolkit and restart:

docker compose down && docker compose up -d

Optional: Remote Access

By default, Immich is only accessible on your local network. For remote access, the safest options are:

  • Tailscale or WireGuard VPN — Connect to your home network from anywhere. Zero port forwarding required
  • Reverse proxy with HTTPS — Use Caddy or Nginx with a domain name and Let’s Encrypt certificate. Immich’s mobile app supports HTTP/2 and mutual TLS as of v2.6

Do not expose port 2283 directly to the internet without HTTPS and authentication in front of it.

Why This Matters

Google’s Gemini integration in Photos represents a fundamental shift. Your cloud photo storage is no longer passive — it’s an active AI processing pipeline that analyzes your relationships, reads your documents, and maps your movements. Google claims it doesn’t train generative AI models outside of Photos with your data, but the company has been vague about what happens to photos processed through its AI editing tools.

Immich gives you the same convenience — auto-backup from your phone, face recognition, natural language search, shared albums — without any of the surveillance. Your photos stay on your hardware, processed by ML models that run locally. No data exfiltration, no training fodder, no surprise privacy policy updates.

With 96,000+ GitHub stars, full-time developers, and a stable v2.6 release, Immich isn’t a hobby project anymore. It’s production-ready photo management for people who think their family photos shouldn’t be training data.

What You Can Do

  1. Start small — Set up Immich on any spare machine with 4+ GB RAM and start backing up your phone photos
  2. Migrate gradually — Use Immich-Go to import your Google Takeout export while keeping Google Photos active during the transition
  3. Add family members — Create accounts for family members so they can back up their phones and share albums
  4. Evaluate after a month — Once you’re comfortable with Immich’s reliability and features, consider removing your photos from Google
  5. Don’t delete Google Photos immediately — Keep it as a secondary backup until you’ve verified Immich has everything and you trust your backup strategy