Back to Blog

Immich: The Self-Hosted Google Photos That Actually Works

Deploy Immich, the best self-hosted Google Photos alternative. Features AI-powered face recognition, mobile apps, and automatic photo backup.

Posted by

Immich photo gallery interface

Your Photos Deserve Privacy

Google Photos is incredibly convenient, but your personal memories are being used to train AI models and build advertising profiles. Every face, location, and moment is analyzed by Google's algorithms.

Immich is the answer - a high-performance, self-hosted photo management solution with all the features you love about Google Photos, but running entirely on your own hardware.

Why Immich Stands Out

  • Google Photos-like experience: Nearly identical UI and workflows
  • AI-powered: Face recognition, object detection, smart search
  • Mobile apps: iOS and Android with auto-backup
  • Blazing fast: Written in modern tech stack for performance
  • Active development: New features added weekly
  • Machine learning on device: Your data stays private

Hardware Requirements

Immich is more resource-intensive than simpler services due to its AI features:

  • CPU: 4+ cores recommended for ML processing
  • RAM: 8GB minimum, 16GB recommended
  • Storage: SSD for database, HDD okay for photos
  • GPU (optional): NVIDIA GPU dramatically speeds up ML tasks

Docker Compose Setup

Immich uses several containers. Here's a simplified docker-compose.yml:

version: "3.8"

services:
  immich-server:
    image: ghcr.io/immich-app/immich-server:release
    container_name: immich-server
    volumes:
      - ${UPLOAD_LOCATION}:/usr/src/app/upload
      - /etc/localtime:/etc/localtime:ro
    environment:
      - DB_HOSTNAME=immich-postgres
      - DB_USERNAME=postgres
      - DB_PASSWORD=${DB_PASSWORD}
      - DB_DATABASE_NAME=immich
      - REDIS_HOSTNAME=immich-redis
    ports:
      - "2283:2283"
    depends_on:
      - redis
      - database
    restart: unless-stopped

  immich-machine-learning:
    image: ghcr.io/immich-app/immich-machine-learning:release
    container_name: immich-ml
    volumes:
      - model-cache:/cache
    restart: unless-stopped

  redis:
    image: redis:alpine
    container_name: immich-redis
    restart: unless-stopped

  database:
    image: tensorchord/pgvecto-rs:pg14-v0.2.0
    container_name: immich-postgres
    environment:
      - POSTGRES_PASSWORD=${DB_PASSWORD}
      - POSTGRES_USER=postgres
      - POSTGRES_DB=immich
    volumes:
      - pgdata:/var/lib/postgresql/data
    restart: unless-stopped

volumes:
  pgdata:
  model-cache:

Create a .env file:

UPLOAD_LOCATION=/path/to/your/photos
DB_PASSWORD=your_secure_password

Initial Setup

1. Start the Stack

docker compose up -d

2. Create Admin Account

Open http://your-server:2283 and create your admin account. This will be the first user with full permissions.

3. Configure Storage

In Administration → Settings, configure your storage template for how photos are organized on disk.

Mobile App Setup

Install the Immich app from your device's app store:

  • Open the app and tap "Connect to Server"
  • Enter your server URL (use HTTPS for external access)
  • Log in with your credentials
  • Enable background backup in app settings
  • Choose which albums to auto-upload

The app automatically uploads new photos while preserving battery life.

AI Features Configuration

Face Recognition

Immich automatically detects and groups faces. Name people once, and they'll be recognized in all photos. You can merge duplicate faces and hide people from the interface.

Smart Search

Search for objects, scenes, and activities in your photos using natural language. Try searches like "beach sunset" or "dog playing in snow".

NVIDIA GPU Acceleration

If you have an NVIDIA GPU, add this to speed up ML processing:

immich-machine-learning:
  image: ghcr.io/immich-app/immich-machine-learning:release-cuda
  deploy:
    resources:
      reservations:
        devices:
          - driver: nvidia
            count: 1
            capabilities: [gpu]

Importing Existing Photos

You can import existing photo libraries in several ways:

  • Web upload: Drag and drop through the browser
  • Mobile sync: Let the app upload your camera roll
  • CLI tool: Use immich-cli for bulk imports
  • External library: Point to existing folder without copying
# Install Immich CLI
npm i -g @immich/cli

# Upload a folder
immich upload --key YOUR_API_KEY /path/to/photos

Backup Strategy

Protect your precious memories with proper backups:

  • Back up the PostgreSQL database regularly
  • Back up the upload directory to a separate location
  • Consider off-site backup for disaster recovery
# Database backup
docker exec -t immich-postgres pg_dumpall -c -U postgres > dump.sql

Your Memories, Your Control

With Immich, you get the convenience of Google Photos without sacrificing your privacy. Your family photos, travel memories, and precious moments stay on your server, searchable and organized by AI that works only for you.

Continue Reading