What You Need
- A VPS with at least 4 GB RAM (6 GB recommended for machine learning features)
- Enough storage for your photo library — expect 50–100 GB per year of phone photos
- A domain name for HTTPS access
The Pro plan on NoctHost (4 vCPU, 8 GB RAM, 160 GB SSD) handles a family-sized library with room for the machine learning container that powers face recognition and smart search.
Step 1: Install Docker
apt update && apt upgrade -y
curl -fsSL https://get.docker.com | sh
apt install -y docker-compose-pluginStep 2: Download the Immich Docker Compose Files
mkdir ~/immich && cd ~/immich
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.envStep 3: Configure Environment Variables
Open .env and set these values:
nano .envUPLOAD_LOCATION=/mnt/photos
DB_DATA_LOCATION=/mnt/immich-db
DB_PASSWORD=change_this_to_something_strong
TZ=Europe/TallinnCreate the directories:
mkdir -p /mnt/photos /mnt/immich-dbStep 4: Start Immich
docker compose up -d
docker compose logs -fFirst startup takes a few minutes while it pulls container images. Once you see the server listening message, Immich is running on port 2283.
Step 5: Set Up HTTPS with Nginx
apt install -y nginx certbot python3-certbot-nginx
nano /etc/nginx/sites-available/immichserver {
server_name photos.yourdomain.com;
client_max_body_size 50000M;
location / {
proxy_pass http://localhost:2283;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection 'upgrade';
proxy_set_header Host $host;
}
}ln -s /etc/nginx/sites-available/immich /etc/nginx/sites-enabled/
certbot --nginx -d photos.yourdomain.com
nginx -t && systemctl reload nginxStep 6: Create Your Account
Open https://photos.yourdomain.com in your browser. The first account you create becomes the admin.
Step 7: Set Up Mobile Backup
Install the Immich app on your phone — available on iOS and Android. Enter your server URL and log in. In the app settings:
- Enable background backup
- Set to Wi-Fi only to save mobile data
- Enable backup on charging
Your photos will start syncing automatically. For an existing library, the initial backup runs in the background over several hours.
Backups
Immich stores your photos in /mnt/photos. Back this up to a separate location — an S3-compatible bucket, another server, or external storage. Never rely on a single VPS as the only copy of your photos.
A simple nightly backup with rclone to Backblaze B2 costs around $0.006 per GB per month — nearly nothing for most personal libraries.
What You Get
The machine learning container processes your library in the background. After initial indexing (a few hours for a large collection), you get:
- Face recognition that groups photos by person automatically
- Smart search — type "beach" or "birthday party" and it finds matching photos
- Duplicate detection
- Location-based albums if your photos have GPS metadata
All of this runs on your server. Nothing is sent to external AI services.