How To Install Immich on Ubuntu 26.04 LTS

Install Immich on Ubuntu 26.04

Installing Immich on a fresh Ubuntu server gives you private photo backup, fast search, and full control over your data. This guide shows how to Install Immich on Ubuntu 26.04 LTS with a clean Docker-based setup, simple security steps, and clear reasons behind each command.

Immich is a self-hosted photo and video platform that runs well on Linux, and the official docs recommend Docker Compose for production use. The official requirements also call for at least 6 GB of RAM, Docker with the Compose plugin, and a filesystem that supports normal Linux permissions.

Ubuntu 26.04 LTS is a solid base for this because it is a recent long-term support release, and its release date is listed as April 23, 2026 in current Ubuntu schedule reporting. For a sysadmin, that matters because you get a stable platform, long support, and modern packages without constant churn.

Prerequisites

Before you start the Install Immich on Ubuntu 26.04 LTS setup, make sure you have these basics ready. They keep the install smooth and reduce the chance of avoidable errors.

  • Operating system: Ubuntu 26.04 LTS on a 64-bit machine. Immich’s docs recommend Linux or another Unix-like 64-bit OS.
  • Permissions: A user with sudo access. You need this for package installs, Docker setup, and firewall changes.
  • Memory: At least 6 GB RAM, with 8 GB or more preferred. Immich’s docs say 6 GB is the minimum for a smooth experience.
  • Tools: curl, ca-certificates, gnupg, and lsb-release. These help you add trusted repositories safely.
  • Storage: A filesystem that supports ownership and permissions, such as EXT4, ZFS, BTRFS, or XFS. Immich does not work on NTFS or exFAT.
  • Docker: Docker Engine and the Docker Compose plugin. Immich recommends Docker Compose for production.

Step 1: Update Your System

Start by updating Ubuntu so the base system is current before you add Docker or Immich. This reduces package conflicts and gives you the latest security fixes.

Refresh package lists

sudo apt update

This command downloads the latest package index from Ubuntu repositories. You run it first so your server knows what versions are available.

Expected output often ends with lines like:

Reading package lists... Done
Building dependency tree... Done

Upgrade installed packages

sudo apt upgrade -y

This installs updated versions of packages already on the system. It matters because Docker and Immich work best when the OS libraries are not outdated.

Install common helper tools

sudo apt install -y ca-certificates curl gnupg lsb-release

This installs the tools needed to fetch Docker’s official key and repository. It also makes the rest of the setup safer because you can verify package sources.

Step 2: Prepare Storage for Immich

Immich stores photos, videos, and database files, so storage planning is not optional. A separate data path is cleaner, easier to back up, and safer than filling your root partition.

Check available disks

lsblk

This shows your attached disks and partitions. You use it to identify the correct data disk before formatting anything.

A typical result may look like this:

NAME   MAJ:MIN RM  SIZE RO TYPE MOUNTPOINTS
sda      8:0    0  100G  0 disk
└─sda1   8:1    0  100G  0 part /
sdb      8:16   0  500G  0 disk

Format the data disk

sudo mkfs.ext4 /dev/sdb

This creates an EXT4 filesystem on the disk. EXT4 is a good fit because it supports Linux ownership and permissions, which Immich needs for upload and database access.

Create a mount point

sudo mkdir -p /mnt/immich-data

This makes a permanent folder where the disk will mount. Keeping the data path stable helps Docker Compose keep the same volume references across reboots.

Mount the disk

sudo mount /dev/sdb /mnt/immich-data
df -h /mnt/immich-data

This attaches the disk to your folder and confirms the mount worked. You want to verify it now because Immich should never start on an unmounted empty path by mistake.

Step 3: Install Docker and Compose

Immich’s official docs recommend Docker Compose, and that is the cleanest way to run the stack on a Linux server. Docker keeps the app, database, and machine learning services isolated but connected.

Add Docker’s official key

sudo install -m 0755 -d /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo tee /etc/apt/keyrings/docker.asc > /dev/null
sudo chmod a+r /etc/apt/keyrings/docker.asc

This creates a trusted key location and downloads Docker’s signing key. You do this so Ubuntu can verify that Docker packages really came from Docker.

Add Docker’s repository

echo "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/ubuntu $(. /etc/os-release && echo ${UBUNTU_CODENAME}) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
sudo apt update

This tells Ubuntu to pull Docker packages from Docker’s own repository instead of the default Ubuntu archive. That matters because you want the current stable Docker release and the Compose plugin that Immich needs.

Install Docker components

sudo apt install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin

This installs the Docker engine, command line tools, runtime, build tools, and the Compose plugin. Immich’s docs require Docker with the Compose plugin, so this is the core platform step.

Verify Docker works

docker --version
sudo docker run hello-world

The first command confirms Docker is installed. The second command proves the engine can run a container correctly, which saves time before you deploy Immich.

Step 4: Download Immich Files

Now you can pull the official Immich Compose files. This keeps your setup aligned with the project’s supported install path instead of a random third-party recipe.

Create a working folder

mkdir -p ~/immich
cd ~/immich

This keeps the app files organized in one place. Good file layout makes upgrades and backups much easier later.

Download the compose file and env file

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

The compose file defines the containers, and the .env file stores paths and secrets. Using the official release artifacts helps reduce version mismatch problems.

Edit environment values

nano .env

Update the key values so Immich stores data on your mounted disk and uses your local timezone. This is important because Docker containers should not write media to the root filesystem.

Use values like these:

UPLOAD_LOCATION=/mnt/immich-data/upload
DB_DATA_LOCATION=/mnt/immich-data/postgres
TZ=Asia/Jakarta
DB_PASSWORD=use-a-strong-password-here
IMMICH_VERSION=release

UPLOAD_LOCATION and DB_DATA_LOCATION keep uploads and database data on persistent storage. TZ keeps timestamps correct, and IMMICH_VERSION=release keeps you on the stable channel.

Create the target folders

sudo mkdir -p /mnt/immich-data/upload /mnt/immich-data/postgres
sudo chown -R 1000:1000 /mnt/immich-data

This prepares the directories and gives the container user ownership. If you skip this, Immich may start but fail during upload or database writes.

Step 5: Start Immich

This is the point where the stack comes up for the first time. Expect the initial launch to take a few minutes because Docker must download several images.

Start the stack

docker compose up -d

This launches all Immich containers in the background. The -d flag keeps your terminal free while the services run.

Check service status

docker compose ps

This shows whether the containers are up, restarting, or failed. It is the fastest way to confirm the install succeeded before you open the web UI.

View logs if needed

docker compose logs -f

This streams the logs so you can catch startup errors in real time. It is useful when a container fails because of a bad password, wrong mount path, or missing permissions.

Open the web app

Visit:

http://your-server-ip:2283

This is the default Immich web port. After login, you can create the admin account and begin configuring libraries and mobile backups.

Install Immich on Ubuntu 26.04 LTS

Step 6: Configure Immich on Ubuntu 26.04 LTS

After the server is live, you still need to configure Immich on Ubuntu 26.04 LTS so it behaves like a proper production service. The goal here is not just to make it run, but to make it stable and safe.

Set up the first admin account

Create the first user in the web interface and make it your admin account. This matters because the first user gets full control over system settings, libraries, and user management.

Point uploads to the correct storage path

Check that Immich uses /mnt/immich-data/upload and /mnt/immich-data/postgres. This keeps media and database files on your dedicated volume, not on the OS disk.

Enable background backup on mobile

Install the Immich mobile app on your phone and set the server URL to your domain or IP. This is the main value of the platform because it gives you automatic photo backup without relying on a cloud vendor.

Keep machine learning on purpose

Immich can use machine learning for search and face recognition, and the docs note that 6 GB RAM is the minimum for smooth use. If your server is small, start with the default features and scale up later.

Step 7: Add a Firewall Rule

A self-hosted photo server should not expose every port to the internet. A clean firewall setup helps you keep the app reachable only through the ports you actually need.

Install UFW

sudo apt install -y ufw

This installs Ubuntu’s uncomplicated firewall. It gives you a simple way to lock down the server without complex rules.

Allow SSH and web traffic

sudo ufw allow OpenSSH
sudo ufw allow 80/tcp
sudo ufw allow 443/tcp
sudo ufw enable

This keeps remote admin access open while allowing HTTP and HTTPS for a reverse proxy. You should avoid exposing Immich’s raw port directly if you can route it through a proxy.

Check the firewall state

sudo ufw status verbose

This confirms the rule set is active. You want to see SSH, 80, and 443 allowed, with everything else denied by default.

Troubleshooting

Even a clean Linux server tutorial can hit a few snags. These are the most common issues I see when people install Immich for the first time.

1. Docker command fails

If docker says permission denied, your user may not be in the Docker group. Fix it with:

sudo usermod -aG docker $USER
newgrp docker

This lets your user run Docker commands without sudo. It saves time during updates and daily management.

2. Immich does not start

Check the logs and the container state:

docker compose ps
docker compose logs -f

If a container exits right away, the most likely causes are a wrong .env value, missing disk mount, or a bad database password.

3. Uploads fail with permission errors

Run:

sudo chown -R 1000:1000 /mnt/immich-data

Immich needs write access to its upload and database folders. This usually fixes the problem when the disk was mounted with the wrong owner.

4. Web page opens but mobile login fails

Check that the app URL matches your server address exactly. If you use HTTPS later, the mobile app should point to the HTTPS domain, not the local IP.

5. Not enough memory

If uploads or machine learning feel slow, check RAM:

free -h

Immich’s docs recommend at least 6 GB of RAM, and 8 GB is better for a smoother experience.

[su_box title=”VPS Manage Service Offer” style=”bubbles” box_color=”#000000″ radius=”10″]If you don’t have time to do all of this stuff, or if this is not your area of expertise, we offer a service to do “VPS Manage Service Offer”, starting from $10 (Paypal payment). Please contact us to get the best deal![/su_box]

r00t is a Linux Systems Administrator and open-source advocate with over ten years of hands-on experience in server infrastructure, system hardening, and performance tuning. Having worked across distributions such as Debian, Arch, RHEL, and Ubuntu, he brings real-world depth to every article published on this blog. r00t writes to bridge the gap between complex sysadmin concepts and practical, everyday application — whether you are configuring your first server or optimizing a production environment. Based in New York, US, he is a firm believer that knowledge, like open-source software, is best when shared freely.

Related Posts