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:
TZDB_HOSTNAMEDB_PORTDB_USERNAMEDB_PASSWORDDB_DATABASE_NAMEREDIS_HOSTNAME(Valkey/Redis-compatible endpoint)REDIS_PORTREDIS_PASSWORD(required when Valkey auth is enabled)IMMICH_MACHINE_LEARNING_URLUPLOAD_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_USERPOSTGRES_PASSWORDPOSTGRES_DBPOSTGRES_INITDB_ARGS(recommended:--data-checksums)PGDATA(recommended on mounted volumes:/var/lib/postgresql/data/pgdata)
Volumes:
- Required:
/var/lib/postgresql/data
Start command:
/usr/local/bin/immich-docker-entrypoint.sh postgres -c config_file=/etc/postgresql/postgresql.conf -c shared_preload_libraries=vchord.so,vectors.soResource 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 thisREDIS_*name)
Volumes:
- None required.
Start command:
- Use the image default command (no override required).
- If Valkey auth is enabled, override start command:
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_PASSWORDis 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_NAMEimmich->immich-valkey:REDIS_HOSTNAME,REDIS_PORT,REDIS_PASSWORD(when Valkey auth is enabled)immich->immich-machine-learning:IMMICH_MACHINE_LEARNING_URL