Immich is a high-performance, self-hosted photo and video backup solution designed as a direct alternative to Google Photos. It offers automatic mobile backup, face recognition, object detection, timeline browsing, shared albums, and a polished mobile app — all running on your own server with zero cloud fees and complete privacy.
Released in 2022 and growing explosively since then, Immich has become the go-to recommendation in the self-hosting community for anyone who wants to leave Google Photos (or Apple iCloud Photos) without sacrificing the convenience of automatic phone backup and intelligent photo organization. As of 2026, it’s one of the most actively developed self-hosted projects in existence.
What is Immich?
Immich is a server application you run on your home server, NAS, or VPS. It includes a mobile app (Android and iOS) that automatically backs up photos and videos from your phone to your server — exactly like Google Photos or iCloud, except your data goes to your own storage.
Beyond backup, Immich provides a full photo management experience: facial recognition groups photos by person, machine learning identifies objects and scenes, a map view shows where photos were taken using GPS EXIF data, and a timeline view mimics the familiar Google Photos interface. The web UI is modern and fast, and the mobile app is polished enough that many users find it indistinguishable from Google Photos in daily use.
Key Features
- Automatic mobile backup — Background sync from Android and iOS apps. Photos and videos are uploaded to your server automatically when connected to Wi-Fi (or mobile data, if configured)
- Face recognition — On-device machine learning identifies and groups photos by person. Name faces once; the system finds them across your entire library
- Smart search — Natural language search powered by CLIP neural network. Search “dog on beach” or “sunset mountain” and find matching photos without manual tagging
- Object and scene detection — Automatically tags photos with detected objects (car, food, building) and scenes (outdoor, indoor, nature)
- Timeline view — Chronological photo browsing with month/year groupings, mimicking the Google Photos layout
- Shared albums — Create albums and share them with other Immich users on your server. Shared users can add their own photos
- Map view — See all your geotagged photos plotted on an interactive world map
- Memories — “On this day” feature showing photos from the same date in previous years
- Trash and archive — Soft-delete photos to trash before permanent deletion; archive to hide from main timeline without deleting
- Multi-user — Each family member has their own account with separate library and photo access controls
- External library support — Point Immich at an existing photo folder structure and browse existing files without re-uploading
- Video support — Full support for video backup, playback, and organization alongside photos
- RAW file support — Preview RAW images from DSLRs (CR2, ARW, NEF, DNG, etc.) directly in the browser
System Requirements
| Component | Minimum | Recommended |
|---|---|---|
| CPU | 4 cores | 6+ cores (for ML processing) |
| RAM | 4 GB | 8–16 GB |
| Storage (app) | 20 GB for Docker images | SSD for database/config |
| Storage (photos) | Depends on library size | NAS or large HDD/NVMe |
| OS | Linux with Docker | Ubuntu 22.04+ with Docker |
| GPU (optional) | Not required | NVIDIA GPU accelerates ML |
Immich is more resource-intensive than simpler self-hosted apps because it runs machine learning models for face recognition and smart search. The initial library processing (scanning, embedding, face detection) can take hours on large libraries and is CPU-intensive. Day-to-day use after initial processing is lightweight.
Installation
Immich is distributed exclusively as a Docker Compose application — it runs as a collection of containers (server, microservices ML worker, Redis, PostgreSQL with pgvecto.rs). This is intentional: the team provides a single supported installation method to ensure reliability.
Quick Install
# 1. 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
# 2. Edit the .env file - set your upload location and database password
nano .env
# UPLOAD_LOCATION=./library ? where photos are stored
# DB_PASSWORD=choose_strong_password
# 3. Start Immich
docker compose up -d
# 4. Access at http://YOUR_IP:2283
The first startup takes a few minutes as Docker pulls the images. Once running, navigate to http://YOUR_IP:2283 and create your admin account.
The .env Configuration File
# Key .env settings:
# Where uploaded photos are stored on your server
UPLOAD_LOCATION=/mnt/nas/immich/library
# Where Immich stores its model cache (ML models are ~1-2 GB)
MODEL_CACHE_FOLDER=./model-cache
# Strong random database password
DB_PASSWORD=VeryLongRandomPasswordHere
# Time zone for correct timestamps
TZ=America/New_York
Proxmox LXC
bash -c "$(wget -qLO - https://github.com/community-scripts/ProxmoxVE/raw/main/ct/immich.sh)"
Setting Up Mobile Backup
Android App
Install Immich from the Google Play Store or F-Droid. Open the app, tap “Server Endpoint” and enter your server URL (e.g., https://photos.yourdomain.com or http://192.168.1.100:2283 for local access). Log in with your credentials.
Go to Settings ? Background Backup and enable “Background backup”. Configure whether to backup on Wi-Fi only, which folders to include (Camera, Screenshots, WhatsApp, etc.), and video quality settings. The app runs in the background and uploads new photos automatically.
iOS App
The Immich iOS app is available on the App Store. Setup is identical — enter server URL, log in, enable background backup. Note that iOS background process limitations mean backup triggers less reliably than Android without opening the app periodically. For most users, opening the app once a day is sufficient.
Bulk Import Existing Photos
For migrating an existing photo library (from Google Takeout, iCloud export, or local folders), use the Immich CLI tool:
# Install Immich CLI
npm install -g @immich/cli
# Login to your instance
immich login https://your-server:2283 --email admin@example.com --password yourpassword
# Upload a folder
immich upload --recursive /path/to/photos/
The CLI handles duplicate detection — photos already in your library are skipped automatically.
Machine Learning Features: Setup and Performance
Smart Search
Immich uses CLIP (Contrastive Language-Image Pretraining) embeddings for semantic image search. After initial library processing, you can search your photos using natural language descriptions:
- “hiking trail with mountains” — finds outdoor hiking photos
- “birthday cake with candles” — finds birthday party photos
- “sunset over water” — finds waterfront sunset shots
- “kids playing in snow” — finds winter activity photos
This works without any manual tagging because CLIP understands the visual content of images. The quality of results is genuinely impressive and often better than Google Photos for specific searches.
Face Recognition
Immich’s face recognition runs on the server using a two-step process: face detection (finding faces in images) and face recognition (clustering similar faces). After processing:
- Detected faces appear in the “Explore ? People” section as unnamed clusters
- Click a cluster and assign a name
- Immich associates that name with all matching face clusters across your library
- Search by person name to find all their photos
Face recognition accuracy is very good for clear, frontal photos. It handles aging reasonably well (recognizing a person across photos from different years). The feature improves as you confirm or correct matches.
GPU Acceleration for ML
If you have an NVIDIA GPU, you can configure Immich’s machine learning container to use it, dramatically speeding up initial library processing and face recognition:
# In docker-compose.yml, modify the immich-machine-learning service:
immich-machine-learning:
image: ghcr.io/immich-app/immich-machine-learning:${IMMICH_VERSION:-release}-cuda
deploy:
resources:
reservations:
devices:
- driver: nvidia
count: 1
capabilities: [gpu]
On a mid-range NVIDIA GPU, processing a 50,000-photo library takes 1-2 hours instead of 10-20 hours on CPU-only.
Migrating from Google Photos
Moving your Google Photos library to Immich is a popular use case. The process:
- Google Takeout — Go to takeout.google.com, select Google Photos, and export your library. Large libraries will be split into multiple ZIP files of up to 50 GB each
- Extract the ZIPs — Extract all archives to a single folder on your server
- Google Takeout metadata fix — Google Takeout stores metadata (dates, GPS) in separate .json sidecar files. Immich includes a special import mode that reads these JSON files to restore correct dates and locations that may be missing from the image EXIF
- Use the CLI with –google-photos flag
# Import Google Takeout export preserving metadata:
immich upload --recursive --google-photos /path/to/takeout-export/
Remote Access
For accessing Immich from outside your home network (and for mobile backup to work anywhere, not just on home Wi-Fi):
- Tailscale (Recommended for privacy) — Install Tailscale on your server and phone. Your phone connects to the server over an encrypted WireGuard tunnel regardless of location. No port forwarding needed. Mobile backup works anywhere. The server is never exposed to the internet
- Cloudflare Tunnel — Expose Immich through Cloudflare’s network without opening ports. Free tier works for personal use; be aware of Cloudflare’s bandwidth usage policies for large video files
- Nginx Proxy Manager + Domain — Traditional reverse proxy with HTTPS. Forward port 443 on your router, use Let’s Encrypt for SSL. Exposes the server to the internet — ensure you use a strong password and enable 2FA
Immich vs Google Photos vs iCloud
| Feature | Immich (Self-hosted) | Google Photos | iCloud Photos |
|---|---|---|---|
| Cost | Server costs only (~$0-10/mo) | Free 15GB, then $3-30/mo | Free 5GB, then $1-10/mo |
| Storage limit | Only your disk space | Subscription-based | Subscription-based |
| Privacy | Full — your server only | Google scans your photos | E2E encrypted (with ADP) |
| Face recognition | Yes (on-server ML) | Yes (Google’s servers) | Yes (on-device) |
| Smart search | Yes (CLIP semantic) | Excellent | Limited |
| Auto backup | Yes (Android + iOS) | Yes | Yes (iOS only) |
| Shared albums | Yes | Yes | Yes |
| Original quality | Always original | Optional (counts storage) | Always original |
| Video support | Full | Full | Full |
| Data portability | Full ownership | Google Takeout export | iCloud export |
Backup Strategy for Immich Data
Your Immich server stores your irreplaceable photos — a robust backup strategy is essential. Follow the 3-2-1 rule:
- 3 copies of your photos
- 2 different storage types (e.g., NAS + external drive)
- 1 offsite backup (cloud storage or a drive at another location)
Practical implementation:
- Primary: Immich library on your server’s main storage
- Secondary: rsync or Syncthing replication to a second drive or NAS
- Offsite: rclone backup to Backblaze B2 (~$6/TB/month) or Amazon S3 Glacier (~$1/TB/month)
# Example: Automated backup to Backblaze B2 with rclone
rclone sync /mnt/nas/immich/library b2:my-photo-backup/immich \
--b2-chunk-size 128M \
--transfers 4 \
--log-file /var/log/rclone-immich.log
# Add to cron for nightly backup:
0 2 * * * /usr/bin/rclone sync /mnt/nas/immich/library b2:my-photo-backup/immich
Important Note: Active Development
Immich is a rapidly developing project. The team releases updates frequently and explicitly warns that “breaking changes” may occur in any release. For this reason:
- Always back up your database and library before updating
- Read the release notes before upgrading — migration scripts are sometimes required
- Don’t skip multiple major versions when updating
The rapid development pace is a feature, not a bug — Immich adds significant functionality with nearly every release. But it means production-style discipline around updates is important.
Pros and Cons
Pros
- Best Google Photos alternative for self-hosters — polished UI, great mobile apps
- Complete privacy — photos never leave your infrastructure
- Unlimited storage (limited only by your hardware)
- Powerful ML features (smart search, face recognition) running locally
- Extremely active development — frequent, substantial feature additions
- Strong community and documentation
- Google Takeout import with metadata preservation
Cons
- Higher resource requirements than simpler self-hosted apps (ML processing)
- Rapid development means occasional breaking changes requiring careful updates
- iOS background backup less reliable than Android due to iOS limitations
- Initial library processing (ML embedding) can take many hours on large libraries
- Requires Docker — not suitable for beginners who prefer simple installers
Conclusion
Immich is the closest thing to a self-hosted Google Photos in 2026, and it’s getting better every month. If you’re concerned about the privacy implications of storing your personal photos on Google’s servers, or simply tired of paying for cloud storage, Immich gives you everything you’d want from a modern photo platform — running on hardware you own.
The combination of automatic mobile backup, smart search, face recognition, and a polished interface makes Immich genuinely usable as a daily driver, not just a geeky experiment. For families with multiple phones generating thousands of photos per year, the storage cost savings alone justify setting it up.
Download: Immich is available at immich.app. The source code is on GitHub at github.com/immich-app/immich. Docker Compose installation files are provided directly from the official website with step-by-step documentation.