Skip to content

Immich

Immich is your private alternative to Google Photos / iCloud Photos: automatic backup, a beautiful timeline, and powerful search - but with your memories stored in a cloud you control.

Why people love Immich

  • It feels like a modern, premium photo app - not a “self-hosted project”.
  • It is built for everyday use: seamless backups, smart organization, and a timeline that just works.
  • Search feels like magic: find photos by people, places, and things (AI features run in your own stack).
  • It works across iOS, Android, and the web, so the experience stays consistent no matter what you use.
  • It’s great for families: everyone can have their own account, keep their library private, and share albums when they choose.

What you can do

  • Back up photos and videos automatically from your phone (set it once, then forget about it).
  • Find photos in seconds with powerful search - from faces and maps to objects and moments.
  • Search like you think: try something like “pizza in Napoli” and let Immich narrow it down using what it knows (location, timeline, people, and detected content).
  • Share albums with specific people (view-only or collaborative), without publishing your whole library.
  • Bring an existing photo archive: import/index a library you already have, instead of starting from scratch.
  • Keep your originals tidy: store uploads in a predictable folder structure, so your files stay portable and easy to back up.

Quick start (in this suite)

  • Open the Homepage dashboard and click the Immich tile.
  • On your first visit, follow the setup wizard.
  • The web UI gives you the full Immich experience; the mobile app is only required for automatic uploads/backup.
  • For a deeper walkthrough, follow the official Immich quick start: Quick start overview.

Technical reference

Service: immich (server)

Note:

  • This stack uses Valkey for caching.
  • Immich upstream requires REDIS_* environment variable names, so those names remain unchanged.

Environment variables:

  • TZ
  • DB_HOSTNAME
  • DB_PORT
  • DB_USERNAME
  • DB_PASSWORD
  • DB_DATABASE_NAME
  • REDIS_HOSTNAME (Valkey/Redis-compatible endpoint)
  • REDIS_PORT
  • REDIS_PASSWORD (required when Valkey auth is enabled)
  • IMMICH_MACHINE_LEARNING_URL
  • UPLOAD_LOCATION

Volumes:

  • Required: /usr/src/app/upload

Start command:

  • Use the image default command (no override required).

Resource baseline:

  • Recommended minimum: 1 GB RAM, 1 vCPU
  • Preferred for smoother operation: 2 GB RAM

Service: immich-machine-learning

Environment variables:

  • TZ

Volumes:

  • Recommended: /cache

Start command:

  • Use the image default command (no override required).

Resource baseline:

  • Recommended minimum: 1 GB RAM, 1 vCPU
  • Preferred when processing large libraries: 2 GB RAM

Service: immich-postgres

Environment variables:

  • POSTGRES_USER
  • POSTGRES_PASSWORD
  • POSTGRES_DB
  • POSTGRES_INITDB_ARGS (recommended: --data-checksums)
  • PGDATA (recommended on mounted volumes: /var/lib/postgresql/data/pgdata)

Volumes:

  • Required: /var/lib/postgresql/data

Start command:

Terminal window
/usr/local/bin/immich-docker-entrypoint.sh postgres -c config_file=/etc/postgresql/postgresql.conf -c shared_preload_libraries=vchord.so,vectors.so

Resource baseline:

  • Recommended minimum for stable bootstrap: 2 GB RAM, 1 vCPU
  • Preferred for smoother first-run import/indexing: 4 GB RAM

Service: immich-valkey

Environment variables:

  • REDIS_PASSWORD (required only if Valkey auth is enabled; Immich expects this REDIS_* name)

Volumes:

  • None required.

Start command:

  • Use the image default command (no override required).
  • If Valkey auth is enabled, override start command:
Terminal window
valkey-server --requirepass "$REDIS_PASSWORD"
  • If your platform does not expand environment variables in start commands by default, run the command through a shell so $REDIS_PASSWORD is expanded at runtime (example pattern: sh -lc '<command>').

Resource baseline:

  • Recommended minimum: 256 MB RAM, 0.5 vCPU

Required service wiring

  • immich -> immich-postgres: DB_HOSTNAME, DB_PORT, DB_USERNAME, DB_PASSWORD, DB_DATABASE_NAME
  • immich -> immich-valkey: REDIS_HOSTNAME, REDIS_PORT, REDIS_PASSWORD (when Valkey auth is enabled)
  • immich -> immich-machine-learning: IMMICH_MACHINE_LEARNING_URL