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.