HomelabDeck
← Back to all apps

Immich

Photos

Self-hosted Google Photos replacement with AI search and mobile backup.

Immich is a high-performance, self-hosted photo and video backup solution with mobile apps for automatic background upload. It offers AI-powered face recognition, CLIP-based semantic search, albums, sharing, and map view, aiming to be a drop-in Google Photos replacement you fully own.

License
AGPL-3.0
GitHub stars
112,000
Official website
https://immich.app
Source code
https://github.com/immich-app/immich

Compatibility

Architectures
amd64, arm64
Database
PostgreSQL
Resource footprint
8192 MB RAM · 4 CPU
The official documentation recommends 8 GB RAM and 4 cores (6 GB / 2 cores minimum; 4 GB only with machine learning disabled). The machine-learning container (face recognition, CLIP search) is the biggest RAM/CPU consumer and scales with library size and concurrent uploads; a dedicated GPU is optional but speeds up ML jobs significantly.

Proof of Work Gallery

  • Dashboard
  • Settings
  • Resource Usage

Deployment

name: immich

services:
  immich-server:
    container_name: immich_server
    image: ghcr.io/immich-app/immich-server:release
    volumes:
      - ${UPLOAD_LOCATION}:/usr/src/app/upload
      - /etc/localtime:/etc/localtime:ro
    env_file:
      - .env
    ports:
      - '2283:2283'
    depends_on:
      - redis
      - database
    restart: always
    healthcheck:
      disable: false

  immich-machine-learning:
    container_name: immich_machine_learning
    image: ghcr.io/immich-app/immich-machine-learning:release
    volumes:
      - model-cache:/cache
    env_file:
      - .env
    restart: always
    healthcheck:
      disable: false

  redis:
    container_name: immich_redis
    image: docker.io/valkey/valkey:8-bookworm
    healthcheck:
      test: redis-cli ping || exit 1
    restart: always

  database:
    container_name: immich_postgres
    image: ghcr.io/immich-app/postgres:14-vectorchord0.4.3-pgvectors0.2.0
    environment:
      POSTGRES_PASSWORD: ${DB_PASSWORD}
      POSTGRES_USER: ${DB_USERNAME}
      POSTGRES_DB: ${DB_DATABASE_NAME}
      POSTGRES_INITDB_ARGS: '--data-checksums'
    volumes:
      - ${DB_DATA_LOCATION}:/var/lib/postgresql/data
    restart: always

volumes:
  model-cache:

Alternative to

Google Photos, Apple iCloud Photos, Amazon Photos