Immich: The Self-Hosted Google Photos That Actually Works
Deploy Immich, the best self-hosted Google Photos alternative. Features AI-powered face recognition, mobile apps, and automatic photo backup.
Posted by
Related reading
Private Cloud vs Public Cloud: When to Self-Host and When Not To
Understand when self-hosting makes sense and when public cloud is better. A practical guide to choosing between private cloud homelab and AWS/GCP/Azure services.
Homelab Documentation: Wiki.js vs BookStack for Self-Hosted Wikis
Document your homelab setup with self-hosted wikis. Compare Wiki.js and BookStack for creating searchable documentation of your infrastructure and procedures.
Docker Security Scanning: Trivy and Dockle for Safe Containers
Scan your Docker images for vulnerabilities before deploying. Learn to use Trivy and Dockle to secure your self-hosted homelab container infrastructure.

Your Photos Deserve Privacy
Google Photos is incredibly convenient, but your personal memories are being used to train AI models and build advertising profiles. Every face, location, and moment is analyzed by Google's algorithms.
Immich is the answer - a high-performance, self-hosted photo management solution with all the features you love about Google Photos, but running entirely on your own hardware.
Why Immich Stands Out
- Google Photos-like experience: Nearly identical UI and workflows
- AI-powered: Face recognition, object detection, smart search
- Mobile apps: iOS and Android with auto-backup
- Blazing fast: Written in modern tech stack for performance
- Active development: New features added weekly
- Machine learning on device: Your data stays private
Hardware Requirements
Immich is more resource-intensive than simpler services due to its AI features:
- CPU: 4+ cores recommended for ML processing
- RAM: 8GB minimum, 16GB recommended
- Storage: SSD for database, HDD okay for photos
- GPU (optional): NVIDIA GPU dramatically speeds up ML tasks
Docker Compose Setup
Immich uses several containers. Here's a simplified docker-compose.yml:
version: "3.8"
services:
immich-server:
image: ghcr.io/immich-app/immich-server:release
container_name: immich-server
volumes:
- ${UPLOAD_LOCATION}:/usr/src/app/upload
- /etc/localtime:/etc/localtime:ro
environment:
- DB_HOSTNAME=immich-postgres
- DB_USERNAME=postgres
- DB_PASSWORD=${DB_PASSWORD}
- DB_DATABASE_NAME=immich
- REDIS_HOSTNAME=immich-redis
ports:
- "2283:2283"
depends_on:
- redis
- database
restart: unless-stopped
immich-machine-learning:
image: ghcr.io/immich-app/immich-machine-learning:release
container_name: immich-ml
volumes:
- model-cache:/cache
restart: unless-stopped
redis:
image: redis:alpine
container_name: immich-redis
restart: unless-stopped
database:
image: tensorchord/pgvecto-rs:pg14-v0.2.0
container_name: immich-postgres
environment:
- POSTGRES_PASSWORD=${DB_PASSWORD}
- POSTGRES_USER=postgres
- POSTGRES_DB=immich
volumes:
- pgdata:/var/lib/postgresql/data
restart: unless-stopped
volumes:
pgdata:
model-cache:Create a .env file:
UPLOAD_LOCATION=/path/to/your/photos DB_PASSWORD=your_secure_password
Initial Setup
1. Start the Stack
docker compose up -d
2. Create Admin Account
Open http://your-server:2283 and create your admin account. This will be the first user with full permissions.
3. Configure Storage
In Administration → Settings, configure your storage template for how photos are organized on disk.
Mobile App Setup
Install the Immich app from your device's app store:
- Open the app and tap "Connect to Server"
- Enter your server URL (use HTTPS for external access)
- Log in with your credentials
- Enable background backup in app settings
- Choose which albums to auto-upload
The app automatically uploads new photos while preserving battery life.
AI Features Configuration
Face Recognition
Immich automatically detects and groups faces. Name people once, and they'll be recognized in all photos. You can merge duplicate faces and hide people from the interface.
Smart Search
Search for objects, scenes, and activities in your photos using natural language. Try searches like "beach sunset" or "dog playing in snow".
NVIDIA GPU Acceleration
If you have an NVIDIA GPU, add this to speed up ML processing:
immich-machine-learning:
image: ghcr.io/immich-app/immich-machine-learning:release-cuda
deploy:
resources:
reservations:
devices:
- driver: nvidia
count: 1
capabilities: [gpu]Importing Existing Photos
You can import existing photo libraries in several ways:
- Web upload: Drag and drop through the browser
- Mobile sync: Let the app upload your camera roll
- CLI tool: Use immich-cli for bulk imports
- External library: Point to existing folder without copying
# Install Immich CLI npm i -g @immich/cli # Upload a folder immich upload --key YOUR_API_KEY /path/to/photos
Backup Strategy
Protect your precious memories with proper backups:
- Back up the PostgreSQL database regularly
- Back up the upload directory to a separate location
- Consider off-site backup for disaster recovery
# Database backup docker exec -t immich-postgres pg_dumpall -c -U postgres > dump.sql
Your Memories, Your Control
With Immich, you get the convenience of Google Photos without sacrificing your privacy. Your family photos, travel memories, and precious moments stay on your server, searchable and organized by AI that works only for you.
