Blog / Tutorials / How to Install Immich on a VPS: Docker Compose Setup Guide

How to Install Immich on a VPS: Docker Compose Setup Guide

Immich is a self-hosted Google Photos alternative with automatic mobile backup and AI-powered search. This guide covers installing it with Docker Compose: downloading the official compose files, configuring the .env, starting the containers, creating your admin account, and connecting the mobile app. Before You Start:…

4 min read

Immich is a self-hosted Google Photos alternative with automatic mobile backup and AI-powered search. This guide covers installing it with Docker Compose: downloading the official compose files, configuring the .env, starting the containers, creating your admin account, and connecting the mobile app.

Before You Start: Requirements

You’ll need Docker and Docker Compose installed on the server. RAM is the resource to plan around — Immich’s machine-learning containers (face detection, CLIP-based semantic search) need headroom on top of the main application and its database, not just enough for the app alone. Storage should be sized for where your library is headed, not just where it starts — a photo and video library only grows.

Step-by-Step: Installing Immich with Docker Compose

Create a Directory and Download the Compose Files

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

Downloading both files from the latest release keeps them in sync with each other — mixing an old compose file with a new .env (or the reverse) is a common source of confusing startup errors.

Configure the .env File

Open `.env` and set `UPLOAD_LOCATION` to where your photos and videos should actually live — somewhere with real capacity, not the default. Do the same for the database data location; network shares aren’t supported there. While you’re in the file, uncomment and set the timezone variable so timestamps match where you actually are.

Start Immich

docker compose up -d

Two gotchas worth knowing before you run this: the command is `docker compose`, not `docker-compose` — the older hyphenated form fails differently and confusingly on a fresh Ubuntu install. And if you hit a permission or unknown-flag error, you’re likely running the `docker.io` distro package rather than Docker’s own — installing Docker Engine from Docker’s official repository resolves it.

First Login and Creating Your Admin Account

Once the containers are up, open `http://your-server-ip:2283` in a browser. The first account registered on a fresh instance becomes the administrator, so register immediately rather than leaving that page open to whoever finds it first. From there, install the mobile app (iOS or Android) and sign in to start automatic photo and video backup from your phone.

Sizing Your VPS for Immich’s Machine Learning Workload

Sizing a VPS for Immich Contabo product specs as of September 2026 (contabo.com/en/pricing/), 24-month billing term.
Library sizeRecommended tierSpec
Personal libraryCloud VPS 66 vCPU, 12 GB RAM, 200 GB SSD — €7.14/mo
Large / fast-growing libraryCloud VPS Plus 88 vCPU, 24 GB RAM, 450 GB NVMe — €33.32/mo

Choosing Immich vs. Alternatives

This guide covers getting Immich installed, not whether it’s the right photo tool for you. Contabo already has that covered in depth: What Is Immich? for a full feature rundown, Immich vs PhotoPrism vs Ente if you’re still deciding between self-hosted photo apps, and Best Self-Hosted Photo Management Apps for the broader field of options.

Why Self-Host Immich on Contabo

Cloud VPS 6 covers a personal photo library comfortably, with enough RAM headroom for Immich’s machine-learning containers alongside the main app. Move to Performance VPS once the library gets large or grows quickly — the extra RAM and NVMe I/O both matter as the machine-learning index and media storage grow together. If Immich is one piece of a bigger self-hosting setup, Contabo’s homelab planning guide covers how it fits alongside the rest.

FAQ: Installing Immich

What port does Immich use?

2283 by default, for both the web application and mobile app connections. It can be changed via the environment configuration if that port is already in use.

Do I need a powerful VPS to run Immich?

Not powerful, but RAM matters more than raw CPU — the machine-learning features (face recognition, semantic search) need headroom beyond just running the app. A 6 vCPU / 12 GB VPS comfortably handles a personal library.

Can I use Immich’s install script instead of Docker Compose?

There is an install script, but Immich’s own documentation marks it experimental and not recommended for production — Docker Compose is the supported path for a server you intend to actually rely on.

Is Immich free?

Yes — Immich is open source (AGPL-3.0) and free to self-host. You only pay for the server it runs on.

Disclaimer: Product specifications, features, and prices mentioned in this article are subject to change and may vary by region, billing term, and active promotions. Please check each provider’s or brand’s official website for current figures, pricing, and local currency rates.