August 24, 2026

Immich: Managing Photos Without Handing Them to the Cloud

Run a cloud-gallery-like photo library on your own server: automatic mobile backup, local AI search and facial recognition, plus honest trade-offs, limitations, and the database backup strategy you need.

Family photos pile up on phones, then move to a cloud gallery: the free tier shrinks, the subscription grows, and every picture with its metadata ends up on a third-party server. Immich answers both problems — the library stays on your machine with a feature set close to modern cloud galleries. This is an honest evaluation note.

The core problem is not just cost, it is where the data ends up. Immich is open source under AGPL-3.0, actively developed, and officially described as a high performance self-hosted photo and video management solution:

  • AI search & facial recognition: Photos are grouped automatically by face and object keywords, processed on your local server.
  • Mobile background backup: iOS and Android apps upload photos from selected albums automatically in the background.
  • High performance: A microservice architecture built to handle tens of thousands of media files without lag.
  • No subscription: The cost moves to your own storage; no monthly quota that keeps shrinking.

Four-Container Architecture

Immich runs as four coordinated containers:

  1. immich-server: Core API server and web interface (port 2283).
  2. immich-machine-learning: Python service for AI feature extraction, vector search, and facial recognition; models persist in the model-cache volume.
  3. immich_postgres: PostgreSQL with the pgvector and VectorChord extensions for metadata and CLIP-based contextual search.
  4. immich_redis: Valkey/Redis job queue and cache for media processing.

Uploads land in the library directory, jobs go through the Redis queue, then extraction results are stored in PostgreSQL. Immich does not rescan the library folder, so database metadata is the source of truth.

Deployment with Docker Compose

The file below is enough to start; the official database image bundles PostgreSQL 14 with VectorChord and pgvector. The official template uses .env for UPLOAD_LOCATION, DB_DATA_LOCATION, and DB_PASSWORD; this compact version inlines them:

services:
  immich-server:
    container_name: immich_server
    image: ghcr.io/immich-app/immich-server:release
    volumes:
      - ./library:/data
    ports:
      - "2283:2283"
    depends_on:
      - redis
      - database
    restart: always

  immich-machine-learning:
    container_name: immich_machine_learning
    image: ghcr.io/immich-app/immich-machine-learning:release
    volumes:
      - model-cache:/cache
    restart: always

  redis:
    container_name: immich_redis
    image: docker.io/valkey/valkey:8-bookworm
    restart: always

  database:
    container_name: immich_postgres
    image: ghcr.io/immich-app/postgres:14-vectorchord0.4.3-pgvectors0.2.0
    environment:
      POSTGRES_PASSWORD: change_db_password
      POSTGRES_USER: postgres
      POSTGRES_DB: immich
    volumes:
      - ./postgres:/var/lib/postgresql/data
    restart: always

volumes:
  model-cache:

Save the compose file, replace the password placeholder, run docker compose up -d, open port 2283, and create the first admin account. Releases are frequent, so pin the version via IMMICH_VERSION in .env.

Security and Privacy

  • Facial recognition, AI search, and location metadata processing happen locally on your server; no photos are sent to third-party APIs.
  • Port 2283 should not be exposed directly to the internet; use an HTTPS reverse proxy or Tailscale from outside.
  • Replace the PostgreSQL password placeholder and do not reuse credentials from other services.

What Stands Out in Daily Use

  • Convenient phone backup: New photos from selected albums upload automatically when the app opens and periodically in the background.
  • Smart search without manual tags: CLIP-based search accepts free-form queries such as “beach at sunset” without metadata.
  • Faces grouped into people: Faces are grouped, named, searchable per person; wrongly split clusters can be merged.
  • Open source: Full code control and no vendor lock-in.

Cons and Limitations

  • AI processing costs resources: Embedding and face detection run in the background; on a small machine, initial indexing of thousands of photos is noticeable. GPU acceleration needs dedicated image tags (cuda, rocm, openvino, etc.) and extra setup.
  • The database is a single point of failure: Immich does not scan the library folder; metadata and file paths live in PostgreSQL. Losing the database means rebuilding the gallery, so database backups are mandatory, not optional.
  • Storage grows beyond the originals: Inside UPLOAD_LOCATION, Immich creates thumbnails, transcoded videos, and profile files alongside the library.
  • Fast release cadence: New features arrive quickly, but upgrades need attention; pin the version and read release notes.
  • One machine equals one failure domain: A copy on the same machine protects against file loss, not against losing the whole machine.

Backup and Disaster Recovery

Two assets must be backed up together: the media folder (UPLOAD_LOCATION) and the PostgreSQL database — the store of album metadata, file paths, and face clusters. Without it, the files remain but the gallery structure is gone.

Immich ships automatic database backups: .sql.gz dumps land in UPLOAD_LOCATION/backups, schedule and retention are managed in the UI (daily by default, keeping the last dozen), and restore runs from the web interface under Maintenance or during onboarding. Dumps contain metadata only, not photos or videos — a copy of the media files still has to be made separately. Ideally both copies live off-host following a 3-2-1 strategy.

Conclusion

Immich closes the two main gaps of cloud galleries: data control and subscription cost. On a single machine with limited storage, budget for the AI processing footprint and backup discipline; tooling is provided, but off-host copies remain the owner’s responsibility. If you are ready for that commitment, Immich comes close to modern cloud galleries without handing photos to a third party.

References