Overview
Self-hosted Google Photos alternative for backup, browsing, search, and family libraries.
Immich is a self-hosted Google Photos alternative for people who want automatic phone backup, a fast web gallery, and private control over a growing photo and video library.
The real search task is not just “what is Immich,” but whether it can replace Google Photos, Synology Photos, or lighter gallery tools for households that want mobile-first backup without giving up ownership of their media.
Why people choose Immich
Official docs and the project site position Immich around mobile backup, browsing, sharing, and machine-learning assisted organization rather than as a simple static gallery. That is why it keeps showing up in self-hosted photo-stack comparisons.
For HomelabAddiction, local traffic data already shows real demand in the photo-storage cluster through existing Immich comparison pages. That makes a stronger, indexable project page useful as a category anchor instead of leaving the page hidden behind noindex.
What you get in the stack
Immich combines mobile apps, a browser UI, album sharing, duplicate prevention, map and metadata views, external-library support, and machine-learning powered features such as face or object search in one system.
The mobile-backup docs are especially important here: album selection, deduplication, background uploads, and one-way album synchronization are core reasons people choose Immich over more desktop-centric photo managers.
What to know before you deploy
Immich is not a tiny gallery tool. The official requirements page recommends Linux or another 64-bit Unix-like environment, at least 6 GB RAM and 2 CPU cores, with 8 GB and 4 cores preferred for a smoother experience.
The docs also stress that Postgres performance matters, local SSD-backed storage is preferred for the database, and Docker-in-LXC is not the recommended path for normal users. If you are trying to run a heavy photo archive in a constrained lab, those caveats matter before you deploy.
Backup is a major tradeoff. Immich creates database backups, but the docs explicitly warn that those dumps do not contain your photos or videos. You still need a real backup plan for the upload library as well as the database.
Best fit
Choose Immich when you want a polished self-hosted Google Photos replacement with strong phone-backup workflows, fast browsing, and room for a family or multi-user setup.
Compare PhotoPrism or LibrePhotos more closely when you care more about lighter browsing or a different curation workflow than about Immich’s mobile-first backup experience.
Quick deploy
Paste into docker-compose.yml and rundocker compose up -d1#2# WARNING: To install Immich, follow our guide: https://docs.immich.app/install/docker-compose3#4# Make sure to use the docker-compose.yml of the current release:5#6# https://github.com/immich-app/immich/releases/latest/download/docker-compose.yml7#8# The compose file on main may not be compatible with the latest release.910name: immich1112services:13 immich-server:14 container_name: immich_server15 image: ghcr.io/immich-app/immich-server:${IMMICH_VERSION:-release}16 # extends:17 # file: hwaccel.transcoding.yml18 # service: cpu # set to one of [nvenc, quicksync, rkmpp, vaapi, vaapi-wsl] for accelerated transcoding19 volumes:20 # Do not edit the next line. If you want to change the media storage location on your system, edit the value of UPLOAD_LOCATION in the .env file21 - ${UPLOAD_LOCATION}:/data22 - /etc/localtime:/etc/localtime:ro23 env_file:24 - .env25 ports:26 - '2283:2283'27 depends_on:28 - redis29 - database30 restart: always31 healthcheck:32 disable: false3334 immich-machine-learning:35 container_name: immich_machine_learning36 # For hardware acceleration, add one of -[armnn, cuda, rocm, openvino, rknn] to the image tag.37 # Example tag: ${IMMICH_VERSION:-release}-cuda38 image: ghcr.io/immich-app/immich-machine-learning:${IMMICH_VERSION:-release}39 # extends: # uncomment this section for hardware acceleration - see https://docs.immich.app/features/ml-hardware-acceleration40 # file: hwaccel.ml.yml41 # service: cpu # set to one of [armnn, cuda, rocm, openvino, openvino-wsl, rknn] for accelerated inference - use the `-wsl` version for WSL2 where applicable42 volumes:43 - model-cache:/cache44 env_file:45 - .env46 restart: always47 healthcheck:48 disable: false4950 redis:51 container_name: immich_redis52 image: docker.io/valkey/valkey:9@sha256:8e8d64b405ce18f41b8e5ee20aa4687a8ed0022d1298f2ce31cdcf3a76e0941153 healthcheck:54 test: redis-cli ping || exit 155 restart: always5657 database:58 container_name: immich_postgres59 image: ghcr.io/immich-app/postgres:14-vectorchord0.4.3-pgvectors0.2.0@sha256:bcf63357191b76a916ae5eb93464d65c07511da41e3bf7a8416db519b40b1c2360 environment:61 POSTGRES_PASSWORD: ${DB_PASSWORD}62 POSTGRES_USER: ${DB_USERNAME}63 POSTGRES_DB: ${DB_DATABASE_NAME}64 POSTGRES_INITDB_ARGS: '--data-checksums'65 # Uncomment the DB_STORAGE_TYPE: 'HDD' var if your database isn't stored on SSDs66 # DB_STORAGE_TYPE: 'HDD'67 volumes:68 # Do not edit the next line. If you want to change the database storage location on your system, edit the value of DB_DATA_LOCATION in the .env file69 - ${DB_DATA_LOCATION}:/var/lib/postgresql/data70 shm_size: 128mb71 restart: always72 healthcheck:73 disable: false7475volumes:76 model-cache:
Configuration
Environment variables
| Variable | What it does | Example |
|---|---|---|
UPLOAD_LOCATIONrequired | Path on the host where uploaded photos and videos are stored. | ./library |
DB_DATA_LOCATIONrequired | Path on the host where the Postgres database files are stored. | ./postgres |
DB_PASSWORDrequired | Local Postgres password used by the Immich stack. | change-me-strong-password |
IMMICH_VERSION | Immich release tag to deploy. | v3.1.0 |
TZ | Container timezone. | UTC |
Ports
2283/tcp— Immich web interface and API
Volumes to back up
/data— Uploaded assets and generated media storage inside the immich-server container./var/lib/postgresql/data— Postgres database storage for Immich metadata./cache— Model cache used by the machine-learning container.
Interface previews
Screenshots of the Immich interface.
Feature support
| Feature | Support |
|---|---|
| Automatic mobile photo and video backupOfficial mobile-backup docs cover automatic upload workflows from Android and iOS. | Supported |
| Album selection and one-way album syncThe mobile app can mirror selected phone albums to server-side albums. | Supported |
| Duplicate prevention during backupImmich computes checksums to skip assets already present on the server. | Supported |
| Web gallery for browsing and sharingThe web app is part of the standard stack and supports modern browsing workflows. | Supported |
| Shared albums and multi-user librariesImmich is built for more than a single-device personal gallery. | Supported |
| Face and object searchAvailable through machine-learning features, which increase resource needs. | Partial support |
| Map and metadata viewsOfficial feature documentation covers location and metadata-based browsing. | Supported |
| External librariesSupported, but restore and mount layouts need more care than a basic upload-only setup. | Partial support |
| Database backup from the appImmich can create database backups, but those backups do not include photo/video files. | Supported |
| Version-matched mobile and server appsThe FAQ warns that login issues can occur when mobile and server versions do not match. | Partial support |
Community signals
- Stars
- 116k
- Forks
- 7.2k
- Open issues
- 707
- Last commit
- 20h ago
- Latest release
- v3.3.1
- Repo created
- Feb 2022
Includes open pull requests
3d ago
Refreshed nightly from the GitHub API.
Alternatives
- PhotoPrism
Common comparison for people who want self-hosted photo browsing and organization with a different workflow tradeoff.
- LibrePhotos
Alternative open source photo manager for self-hosters comparing search and organization options.
- Google Photos
The managed cloud service that many Immich users are actively trying to replace.
Questions
What is Immich used for?
Immich is used to self-host photo and video backup, browsing, sharing, and search from your own server instead of relying entirely on a cloud photo service.
Is Immich a self-hosted Google Photos alternative?
Yes. Immich is commonly deployed as a self-hosted Google Photos alternative because it combines automatic phone backup, a modern web gallery, and machine-learning assisted organization.
How much RAM does Immich need?
The official requirements page lists 6 GB RAM and 2 CPU cores as the minimum, with 8 GB and 4 cores recommended for a smoother experience. Systems with only 4 GB may need machine-learning features disabled.
Does Immich need Docker and PostgreSQL?
The official install path is Docker with the Compose plugin, and the standard deployment uses PostgreSQL. The docs emphasize that good Postgres performance and local storage matter for a stable setup.
Can Immich back up iPhone and Android photos automatically?
Yes, with caveats. The mobile-backup docs cover automatic uploads on both platforms, but background behavior depends on platform rules such as Android battery optimization and iOS Background App Refresh.
Do Immich backups include the actual photo files?
Not by default. Immich can create database backups, but the docs explicitly say those dumps do not include your uploaded photos and videos, so you still need filesystem backups.
Is Immich worth it over lighter gallery tools?
Immich is usually worth it when mobile backup and a polished Google Photos-style experience matter most. If you mainly want a lighter gallery or different archive workflow, alternatives like PhotoPrism or LibrePhotos can be easier to size and tune.
support // the lab
Found this write-up useful?
If it saved you time or a rebuild, you can support more practical homelab guides.
