Immich is an open-source, self-hosted photo and video backup solution that rivals Google Photos in features: AI-powered face recognition, object detection, automatic albums, timeline view, and mobile backup apps for Android and iOS. Running it yourself means your photos never leave your hardware — no training AI models on your family photos, no privacy policy changes, no storage tier limits.
What Immich Offers
- Automatic mobile backup via official iOS and Android apps
- AI features: Face clustering, object/scene recognition, smart search (“beach”, “birthday”, “dogs”)
- Timeline view and album organization
- Map view using EXIF GPS data
- Video support with transcoding
- Multi-user support with sharing
- Web and mobile interfaces
Requirements
Immich requires Docker and Docker Compose. Recommended hardware:
- Minimum: 4GB RAM, 2 CPU cores, fast storage
- Recommended: 8GB+ RAM for machine learning features, NVMe SSD or NAS
- Storage: Size depends on your photo library (allow 2-3x your current library size for transcoded versions)
Installation
Step 1: Install Docker
# On Ubuntu/Debian
curl -fsSL https://get.docker.com | sudo sh
sudo usermod -aG docker $USER
newgrp docker
Step 2: Download Immich Config Files
mkdir ~/immich-app && cd ~/immich-app
wget https://github.com/immich-app/immich/releases/latest/download/docker-compose.yml
wget https://github.com/immich-app/immich/releases/latest/download/example.env
cp example.env .env
Step 3: Configure .env
Edit .env:
nano .env
Key settings to change:
# Upload storage location — point to your NAS or large drive
UPLOAD_LOCATION=/mnt/photos/immich
# Machine learning cache
MACHINE_LEARNING_CACHE_FOLDER=/mnt/photos/immich_ml
# Database password (change from default!)
DB_PASSWORD=change_me_to_strong_password
# Timezone
TZ=America/New_York
Step 4: Start Immich
docker compose up -d
First startup downloads ~5GB of Docker images including the machine learning model. Wait 2-3 minutes, then access:
http://YOUR_SERVER_IP:2283
Step 5: Create Admin Account
On first access, create your admin account. This becomes the primary user with access to server administration.
Mobile App Setup
Android
- Install Immich from Google Play Store (or F-Droid)
- Open app → Enter your server URL:
http://YOUR_IP:2283(orhttps://if using reverse proxy) - Log in with your credentials
- Settings → Background backup → Enable
iOS
- Install Immich from the App Store
- Same setup process as Android
- Authorize photo library access when prompted
The mobile app automatically backs up new photos in the background. Configure WiFi-only backup for large libraries.
Setting Up HTTPS with Nginx Proxy Manager
For remote access and proper HTTPS, use a reverse proxy:
# Add to your docker-compose.yml or separate compose file
nginx-proxy-manager:
image: 'jc21/nginx-proxy-manager:latest'
ports:
- '80:80'
- '443:443'
- '81:81' # Admin panel
In Nginx Proxy Manager admin panel:
- Add Proxy Host → Domain:
photos.yourdomain.com - Forward to
immich-server:3001(internal Docker network) - SSL → Request Let’s Encrypt certificate
GPU Acceleration for Machine Learning
If your server has a dedicated GPU, enable hardware acceleration for face detection and CLIP (image search):
For NVIDIA (add to docker-compose.yml under immich-machine-learning):
deploy:
resources:
reservations:
devices:
- driver: nvidia
count: 1
capabilities: [gpu]
GPU acceleration reduces face detection from ~30 minutes to ~3 minutes for a 50,000 photo library.
Managing Your Library
Import Existing Photos
# Place existing photos in the upload directory
cp -r /old/photos/ $UPLOAD_LOCATION/
# Then run the import job in Immich web UI:
# Administration → Jobs → Library → Run
External Libraries (Non-destructive)
Immich can scan external library directories without moving files:
Administration → External Libraries → Add Library → point to your existing photo directory.
Photos are indexed and become searchable/viewable but remain in their original location.
Storage Templates
Configure how Immich organizes uploaded files:
Administration → Storage Template:
{{y}}/{{MM}}/{{filename}}
Creates 2026/04/photo.jpg structure.
Updating Immich
Immich updates frequently:
cd ~/immich-app
docker compose pull
docker compose up -d
Check the GitHub releases page for breaking changes before major updates.
Resource Usage
Typical idle resource usage:
- RAM: 2-4GB (including machine learning model)
- CPU: Minimal when idle; spikes during indexing or transcoding
- Storage I/O: Depends on concurrent users and backup activity
For a home server, Immich comfortably runs alongside other services on a 4-core machine with 8GB RAM.
Immich has become the de facto open-source Google Photos replacement. Its combination of mobile-first backup, AI-powered organization, and active development makes it an excellent centerpiece of a self-hosted privacy stack alongside Nextcloud and Vaultwarden.