
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
sudoaccess. 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, andlsb-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.

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]