docker-compose.yml and example.env (saved as .env) from Immich’s latest release, set UPLOAD_LOCATION, DB_PASSWORD and TZ, then run sudo docker compose up -d. Serve port 2283 through Nginx with HTTPS and register the first user, who becomes the admin. Immich needs at least 6 GB RAM.
What is Immich?
Immich is a self-hosted photo and video library, similar to Google Photos. Its mobile apps back up your camera roll to your server, and the web app adds timelines, albums, sharing, face recognition and smart search.What are Immich’s requirements?
From the official requirements:
Machine learning (smart search, face detection) and video transcoding are the most CPU-heavy jobs, especially during the first upload of a large library. On a VPS they run on the CPU. Immich’s FAQ warns that 2 or 3 concurrent machine learning jobs can probably max out the CPU of a normal machine.
Before you start
- Install Docker Engine with the Compose plugin from Docker’s repository: install Docker. Immich needs
docker compose; the olddocker-composeand thedocker.iopackage on Ubuntu 22.04 cause errors. - Point
photos.example.comat your server. See point a domain to your server. - Plan disk space. To keep photos on a second disk, mount it first. Keep the database on local storage, never a network share.
- The commands use
sudo; leave it out if you areroot.
How to install Immich with Docker Compose
1
Download the official files
main branch.2
Edit .env
Open it with Uncomment the
nano .env and set:TZ line. Use only letters and numbers in DB_PASSWORD; generate one with openssl rand -hex 24. IMMICH_VERSION=v3 follows the current major version, as the release file sets it. Point UPLOAD_LOCATION at a folder with enough space, for example /mnt/photos/immich.3
Keep port 2283 private
The official file publishes Immich on all addresses. Bind it to The output shows
127.0.0.1 so only Nginx can reach it:- '127.0.0.1:2283:2283'.4
Start Immich
immich_server, immich_machine_learning, immich_redis and immich_postgres.How to serve Immich over HTTPS with Nginx
1
Create the Nginx site
Create Immich must be served at the root of a (sub)domain, not a path such as
/etc/nginx/sites-available/photos.example.com (Ubuntu / Debian) or /etc/nginx/conf.d/photos.example.com.conf (AlmaLinux / Rocky). This follows the Immich reverse proxy example:/immich.2
Enable, test and get a certificate
sudo setsebool -P httpd_can_network_connect 1 before testing.How to create the admin user
Openhttps://photos.example.com and click Getting Started. The first user to register becomes the admin and can add other users. Then install the Immich mobile app, log in with https://photos.example.com as the server URL and turn on backup.
How to check it worked
Up and (healthy) after a minute or two. Upload a photo; it appears in the timeline, and Administration > Job Queues shows thumbnail and machine learning jobs running.
How to back up Immich
Immich automatically dumps its database every day at 2:00 and keeps the last 14 dumps inUPLOAD_LOCATION/backups. Change this under Administration > Settings > Database Dump Settings. The dumps hold only metadata, not photos, so back up the whole UPLOAD_LOCATION folder, which includes the photos and the backups folder:
How to update Immich
Read the release notes for breaking changes first. Update the mobile apps before the server: the server only works with apps from the same major version.IMMICH_VERSION in .env and download the new release’s docker-compose.yml first. Immich does not support downgrading.
Frequently asked questions
Can I run Immich on a 4 GB VPS?
Immich says 4 GB can work with machine learning disabled. Turn it off under Administration > Settings > Machine Learning Settings, and comment out theimmich-machine-learning service in docker-compose.yml so it doesn’t start. Search and the Explore page then work poorly.
How do I lower CPU use during the first upload?
Set job concurrency for transcoding and machine learning jobs to 1, set Settings > Transcoding Settings > Threads to 1 or 2, and consider the smallerbuffalo_s facial recognition model.
Does Immich need a GPU?
No. Everything runs on the CPU by default. Hardware acceleration is optional and only works if the server exposes a supported GPU to Docker.Why does the machine learning container crash with SIGILL or code 132?
The CPU lacks a required instruction set. On amd64, Immich v3’s machine learning container needs the x86-64-v2 level.Related guides
VPS and dedicated server guides
Every guide in this section.
Self-host Nextcloud
Files, calendar and contacts.
Mount a new disk
Room for a large photo library.
Check memory usage
See if Immich has enough RAM.
Schedule and restore VPS backups
Panel backups for your VPS.
Checked against the official Immich documentation and the latest release’s
docker-compose.yml and example.env on 4 November 2026 (IMMICH_VERSION=v3); docker-compose.yml validated with docker compose config and the Nginx configuration syntax-tested on Ubuntu 24.04 LTS. Requirements and settings can change between Immich releases.Need Extra Help?
If you encounter any issues, our support team is ready to assist:- Live Chat: Quick assistance via our website.
- Support Ticket: Open a Ticket
- Discord: Join our Community
- Email: support@freakhosting.com
Last Updated: November 2026