Google Photos storage fills up, prices go up, and your family's memories sit on someone else's computer. Immich puts a full photo cloud — timeline, albums, face search, phone auto-backup — on a machine in your own home. Here is the complete honest install, in the order that works.
Immich is the closest thing to Google Photos on your own hardware: your phone backs up automatically, photos appear in a clean timeline, and you can search by face, place or object. The install is famously short — two files to download, one file to edit, one command to run — but the few choices inside that one file decide whether your library is safe for years or fragile from day one. This guide makes those choices carefully.
👆 The official install route from the Immich documentation — two downloaded files, one command, and the server is live.
Immich is a self-hosted photo and video backup platform — think Google Photos, but the server is a machine in your own home and nobody else holds your pictures. It is free and open source, and the official way to run it is Docker Compose on a Linux server, an old PC, a mini PC or a NAS that supports Docker.
docker compose versionNever copy a random docker-compose file from a blog or a forum post — versions drift and a stranger's file can pin you to an ancient build. The official files always live on the project's GitHub release page:
mkdir ./immich-app and move into it with cd ./immich-appwget -O docker-compose.yml https://github.com/immich-app/immich/releases/latest/download/docker-compose.ymlwget -O .env https://github.com/immich-app/immich/releases/latest/download/example.envexample.env, but Docker only reads it if the file is named exactly .envThe .env file holds the few values Immich cannot guess. Open it with nano .env and set these:
UPLOAD_LOCATION=./library — where your original photos and videos will live. Point this at your biggest, most reliable disk. It must be a folder with enough free space for the whole libraryDB_DATA_LOCATION=./postgres — where the database lives. Keep this on a local SSD. Immich's documentation is blunt: network shares are not supported for the database, and running it over one can corrupt itDB_PASSWORD= — change this to a long random password. Use only letters and numbers (A-Z, a-z, 0-9) — special characters can break Docker's parsing of the fileTZ=Asia/Kolkata — uncomment and set your timezone so photo dates and scheduled jobs line upIMMICH_VERSION and everything below the marked line alone for a first installdocker compose up -d — Docker downloads four container images and starts them together. The first run takes a few minutes depending on your internet speeddocker compose ps — you should see the server, machine learning, database and Redis containers runninghttp://YOUR-SERVER-IP:2283 in a browser on the same network. Immich answers on port 2283The compose file you downloaded runs a small team, not a single program:
Knowing this split matters later: if search breaks, you check machine learning; if photos vanish from the timeline but files are still on disk, you check the database. The companion guide on this page decodes each service in full.
Follow those three and Immich is a genuinely dependable private cloud. Ignore them and the same software becomes a cautionary tale — the difference is habits, not the tool.
The complete install — server setup, phone app connection and first backup — is demonstrated live in the video.
▶️ Watch Full VideoImmich is free and open source under the AGPL licence, and the project has committed to keeping all features free — there is no paywalled tier. An optional purchase exists purely to support the developers and unlocks nothing. Your real costs are your own hardware and electricity.
Plan on about 4 GB of RAM as the floor — the machine learning container is the hungry part — and storage equal to your whole photo library plus roughly 10-20 percent extra for thumbnails and transcoded videos. Storage runs out long before CPU does.
The official, supported route is Docker on Linux — which includes most NAS systems and mini PCs. On Windows the practical route is Docker inside WSL2 or a small Linux virtual machine. A Raspberry Pi can run it, but face recognition and video jobs will be slow; a cheap used mini PC is a much happier home for it.