Technical Anshu
Tutorials Blog
📸 Immich Docker Install

Install Immich with Docker for Your Own Private Photo Cloud

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.

✍️ Technical Anshu🐳 Docker / Linux Server⏱️ 15 minute install
🎥 Watch the fastest method in the video — full Immich Docker install, step by step

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.

Terminal — the whole install is four commands
$ mkdir ./immich-app && cd ./immich-app $ wget -O docker-compose.yml https://github.com/immich-app/immich/releases/latest/download/docker-compose.yml $ wget -O .env https://github.com/immich-app/immich/releases/latest/download/example.env $ docker compose up -d

👆 The official install route from the Immich documentation — two downloaded files, one command, and the server is live.

1

What You Need Before Starting

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.

  1. A machine that stays on: a mini PC, old desktop, home server or NAS. A laptop that sleeps every evening is a bad photo server
  2. Docker and Docker Compose installed and working — test with docker compose version
  3. RAM: about 4 GB is the practical floor; the machine learning container is the hungry part, so 6-8 GB is noticeably happier
  4. Storage: your full photo library, plus roughly 10-20 percent extra for thumbnails and transcoded video. Storage — not CPU — is what you will run out of first
  5. Honest expectation: Immich is a young project under active development. It is excellent, but the developers themselves have always advised keeping another backup of irreplaceable photos. This guide follows that advice everywhere
2

Download the Two Official Files

Never 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:

  1. Create the folder: mkdir ./immich-app and move into it with cd ./immich-app
  2. Download the compose file: wget -O docker-compose.yml https://github.com/immich-app/immich/releases/latest/download/docker-compose.yml
  3. Download the environment template: wget -O .env https://github.com/immich-app/immich/releases/latest/download/example.env
  4. Note the rename in that second command — the template is called example.env, but Docker only reads it if the file is named exactly .env
3

Edit the .env File — the Only Configuration That Matters

The .env file holds the few values Immich cannot guess. Open it with nano .env and set these:

  1. 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 library
  2. DB_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 it
  3. DB_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 file
  4. TZ=Asia/Kolkata — uncomment and set your timezone so photo dates and scheduled jobs line up
  5. Leave IMMICH_VERSION and everything below the marked line alone for a first install
4

Start the Stack and Create the Admin Account

  1. Run docker compose up -d — Docker downloads four container images and starts them together. The first run takes a few minutes depending on your internet speed
  2. Check everything came up with docker compose ps — you should see the server, machine learning, database and Redis containers running
  3. Open http://YOUR-SERVER-IP:2283 in a browser on the same network. Immich answers on port 2283
  4. Click through the welcome screen and register. The very first account created becomes the administrator — so do this step yourself, immediately, before anyone else on your network finds the page
  5. Inside, open Administration and run the storage and library checks. Then install the free Immich app on your phone, sign in with the same server address, and turn on automatic backup
5

What Just Started — Four Containers, Four Jobs

The compose file you downloaded runs a small team, not a single program:

  1. immich-server — the brain. The web interface, the API your phone talks to, uploads, albums, sharing and search
  2. immich-machine-learning — the eyes. Face detection, face recognition and smart search run here, in the background
  3. database (PostgreSQL) — the memory. Every photo's name, date, album, face and search data lives here. The originals are files; the meaning is in this database
  4. redis — the messenger. It passes jobs between the server and the background workers

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.

6

The Three Rules to Follow from Day One

  1. Read before you update. Immich releases often and some releases contain breaking changes that need a specific upgrade step. Two minutes with the release notes beats a weekend of recovery
  2. Back up the pair, not just the photos. Your library files without the database lose their albums, faces and organisation. A real backup covers both
  3. Never expose the raw port to the internet. Port 2283 on your home network is fine. On the open internet, use a VPN or a tunnel — the remote access guide on this page explains why and how

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 honesty note Immich itself gives: the project is under active development and changes fast. Treat Immich as your photo platform, not your only copy. Keep a separate backup of the library and database — the backup guide linked from this page shows the complete routine.

🎥 Watch the Complete Process in the Video

The complete install — server setup, phone app connection and first backup — is demonstrated live in the video.

▶️ Watch Full Video
❓ Frequently Asked Questions

Is Immich really free, or is there a paid tier?

Immich 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.

How much RAM and storage does Immich actually need?

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.

Can I run Immich on Windows or a Raspberry Pi?

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.

This guide is based on the Technical Anshu video linked above • Stuck on a step? Ask in the video comments — that is where answers come fastest 🙏