Install immich in three steps

Quick tutorial to run immich.app, the free and open source google photos alternative. This article is intended to those who don't have much experience using docker. Follow these three steps to have a working immich.app server.

Requirements: Ubuntu with root access, internet access, open ports and some storage.

Important note: immich.app is under heavy development, this article has been written in July 2023 and might need some update in the future, careful!

First step: install docker compose on Ubuntu.

Easy all-in-one command to add the docker repository and install the necessary packages: curl -s https://get.docker.com | bash

root@swagindustries:~# curl -s https://get.docker.com | bash
# Executing docker install script, commit: c2de0811708b6d9015ed1a2c80f02c9b70c8ce7b
+ sh -c 'echo "deb [arch=amd64 signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu focal stable" > /etc/apt/sources.list.d/docker.list'
+ sh -c 'apt-get update -qq >/dev/null'
+ sh -c 'DEBIAN_FRONTEND=noninteractive apt-get install -y -qq docker-ce docker-ce-cli containerd.io docker-compose-plugin docker-ce-rootless-extras docker-buildx-plugin >/dev/null'
+ sh -c 'docker version'
Client: Docker Engine - Community
 Version:           24.0.5
Server: Docker Engine - Community
 Version:          24.0.5

That was easy, wasn't it?

Second step: edit the configuration files for immich.app

You just installed docker, great! In order for immich to work, we still have some config to write before launching immich.

Create a new directory: /root/immich. Within this directory, you will have three components: docker-compose.yml, .env, and a data/ directory. Here's an example:

/root/immich
├── docker-compose.yml
├── .env
└── data/

First, you need the docker-compose.yml file. This file tells docker to download and run the software. Official link to the docker-compose.yml file here. Save it as "docker-compose.yml". You do not need to edit this file.

Once it's done, you will need the .env file. This file tells docker about the configuration you want immich to have. For example, you can tell docker that immich should save its files into "/my/photos/directory". Official link to the .env file here. I suggest you edit this file. Here is the line that I altered in my .env:

UPLOAD_LOCATION=/root/immich/data/

Create a directory /root/immich/data/. This is where your photos are going to be stored. You can point this to any other folder, this is just a preference.

Third step: run docker-compose

Run docker-compose to start immich: docker-compose up -d inside the directory where the docker-compose.yml & .env files have been saved.

root@swagindustries:~# docker-compose up -d
Creating immich_postgres         ... done
Creating immich_machine_learning ... done
Creating immich_typesense        ... done
Creating immich_redis            ... done
Creating immich_web              ... done
Creating immich_microservices    ... done
Creating immich_server           ... done
Creating immich_proxy            ... done

And voilà! Access your immich.app online through http://your.ip.address:2283/

tip: to find your LAN IP address, use hostname -I

root@swagindustries:~# hostname -I
10.238.198.169 fd42:3873:3d5b:538b:216:3eff:fe9a:6fd5

For example, my LAN IP is 10.238.198.169, I can access immich through http://10.238.198.169:2283/.

Feel free to add a frontend proxy with https and some firewalling in front of the port 2283.