
In this blog post, we will show you how to install Immich on Ubuntu 26.04 with Docker Compose and PostgreSQL. Immich is a self-hosted photo and video management platform that allows you to back up, organize, browse, and share your personal media, similar to Google Photos. You can install it on your own Linux server and access it through a web browser or mobile app. Docker Compose is the recommended deployment method. It manages Immich and its supporting services as separate containers, making installation, configuration, updates, and restarts easier. PostgreSQL stores information such as photo metadata, users, and albums. Immich’s Compose configuration includes a PostgreSQL database container, while your original photos and videos are stored separately in a designated directory on the server.
To install Immich on Ubuntu 26.04 will take about 20 minutes. Let’s get started!
Table of Contents
Prerequisites
- A server running Ubuntu 26.04 OS
- User privileges: root or a non-root user with sudo privileges
Step 1. Update your system
Before installing Docker and Immich, we will update the system packages to the latest available versions. Run the following command in your Ubuntu 26.04 terminal:
apt update -y && apt upgrade -y
Step 2. Install Docker
To install Docker, first we need to install some dependencies:
apt install software-properties-common apt-transport-https ca-certificates -y
Next, add the Docker GPG key:
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
Next, we add the repository:
echo "deb [arch=amd64 signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
Once the repo is added, update the system and install Docker:
apt update -y
apt install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin -y
Once the installation is complete, start and enable the Docker service:
systemctl start docker && systemctl enable docker
To check the status of the Docker service, execute the command below:
systemctl status docker
You should get the following output:
root@host:/var/www/html# systemctl status docker
● docker.service - Docker Application Container Engine
Loaded: loaded (/usr/lib/systemd/system/docker.service; enabled; preset: enabled)
Active: active (running) since Wed 2026-10-14 17:56:34 CDT; 13s ago
Invocation: 8b3c408d790444df892915648fc7d625
TriggeredBy: ● docker.socket
Docs: https://docs.docker.com
Main PID: 16537 (dockerd)
Tasks: 9
Memory: 27.3M (peak: 27.8M)
CPU: 1.504s
CGroup: /system.slice/docker.service
└─16537 /usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock
Step 3. Create the Immich Project Directory and Download Configuration Files
First, we will create an Immich system user and will use it to run Docker commands without sudo privileges:
adduser immich #after this command you will have to enter a strong password
sudo usermod -aG docker immich
Next, we can create the Immich directory and assign the permissions:
mkdir -p /opt/immich
chown -R immich:immich /opt/immich
cd /opt/immich
Next, we need to download the configuration files:
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
Open the .env file and change the environment variables to match your needs:
UPLOAD_LOCATION=./library
DB_DATA_LOCATION=./postgres
TZ=America/New_York
IMMICH_VERSION=v3
DB_PASSWORD=YourStrongPasswordHere123
DB_USERNAME=postgres
DB_DATABASE_NAME=immich
Important: The PostgreSQL database directory should be on local storage, rather than a network share. Ensure that the media directory has enough capacity for your photo and video collection.
Step 4. Start the Immich Stack
Once we have configured the .env file and we have all prerequisites, we are ready to start the Immich stack with Docker:
docker compose up -d
Docker Compose will download the required container images and start the services defined in the configuration, including:
Immich Server: Provides the main application and web interface.
Immich Machine Learning: Supports features such as smart search and facial recognition.
PostgreSQL: Stores application metadata and other database information.
Valkey: Provides supporting in-memory data services.
Once the containers are pulled and started, you should receive the following output:

To check the status of the containers with formatted output:
docker ps -a --format "table {{.Names}}\t{{.Image}}\t{{.Status}}\t{{.Ports}}"
The output should look like this:
root@host:/opt/immich# docker ps -a --format "table {{.Names}}\t{{.Image}}\t{{.Status}}\t{{.Ports}}"
NAMES IMAGE STATUS PORTS
immich_server ghcr.io/immich-app/immich-server:v3 Up 18 minutes (healthy) 0.0.0.0:2283->2283/tcp, [::]:2283->2283/tcp
immich_postgres ghcr.io/immich-app/postgres:14-vectorchord0.4.3-pgvectors0.2.0 Up 18 minutes (healthy) 5432/tcp
immich_machine_learning ghcr.io/immich-app/immich-machine-learning:v3 Up 18 minutes (healthy)
immich_redis valkey/valkey:9 Up 18 minutes (healthy) 6379/tcp
The Immich server is running on port 2283, and to access the Web Interface, you need to use the IP of your server and the port 2283:
http://YourServerIPAddress:2283

That’s it. You’ve successfully installed Immich with Docker Compose and PostgreSQL on Ubuntu 26.04.
Of course, you don’t have to install it yourself if you’re having trouble or aren’t familiar with Linux. You can always contact our technical support. Just sign up for one of our monthly management plans and submit a support ticket. We are available 24/7 and will handle your request immediately.
If you liked this post on how to install Immich on Ubuntu 26.04 with Docker Compose and PostgreSQL, please share it with your friends or leave a comment below.
