Immich is a self-hosted open-source alternative to Google Photos featuring face recognition, map view, mobile apps, and automatic backup. Deploy it with Docker and take back ownership of your photos.
You know the drill: you open Google Photos, scroll through your memories, and suddenly get hit with the dreaded "storage full" notification. Or maybe you start wondering what Google is actually doing with your most private moments. That's exactly where Immich comes in, and let me tell you: it's an absolute game-changer for your homelab! π
What is Immich? π€
Immich is a self-hosted photo and video management solution that feels like Google Photos, except you have full control over your data. The project is open source, actively developed, and has built a massive community in a short time.
The web interface is modern and intuitive, the mobile apps (Android & iOS) work great, and automatic smartphone backup runs seamlessly in the background. Honestly, my family barely noticed the switch from Google Photos, except that those annoying storage warnings stopped popping up. π
Why Self-Host Your Photos? π
Before we dive into the technical details, let's talk about why you should even consider self-hosting your photos:
- Privacy: Your photos stay on your server. No AI analysis by third parties, no data mining, no surprises in the terms of service.
- No Storage Limits: You decide how much space you have. An 8TB hard drive costs less one-time than a few years of Google One.
- No Vendor Lock-in: Google can raise prices, kill features, or shut down the service entirely. Your self-hosted solution runs as long as you want it to.
- Full Control: You decide about backups, access, sharing, and how your data is processed.
Setting Up Immich with Docker π³
The best thing about Immich: installation is a breeze thanks to Docker. Here's the docker-compose.yml to get you started right away:
name: immich
services:
immich-server:
container_name: immich_server
image: ghcr.io/immich-app/immich-server:release
volumes:
- ${UPLOAD_LOCATION}:/usr/src/app/upload
- /etc/localtime:/etc/localtime:ro
env_file:
- .env
ports:
- "2283:2283"
depends_on:
- redis
- database
restart: always
healthcheck:
disable: false
immich-machine-learning:
container_name: immich_machine_learning
image: ghcr.io/immich-app/immich-machine-learning:release
volumes:
- model-cache:/cache
env_file:
- .env
restart: always
healthcheck:
disable: false
redis:
container_name: immich_redis
image: docker.io/redis:6.2-alpine
restart: always
healthcheck:
test: redis-cli ping || exit 1
database:
container_name: immich_postgres
image: docker.io/tensorchord/pgvecto-rs:pg14-v0.2.0
environment:
POSTGRES_PASSWORD: ${DB_PASSWORD}
POSTGRES_USER: ${DB_USERNAME}
POSTGRES_DB: ${DB_DATABASE_NAME}
POSTGRES_INITDB_ARGS: "--data-checksums"
volumes:
- ${DB_DATA_LOCATION}:/var/lib/postgresql/data
restart: always
healthcheck:
test: pg_isready --dbname='${DB_DATABASE_NAME}' --username='${DB_USERNAME}' || exit 1; Chksum="$$(psql --dbname='${DB_DATABASE_NAME}' --username='${DB_USERNAME}' --tuples-only --no-align --command='SELECT COALESCE(SUM(googlechecksum_failures), 0) FROM pg_stat_database')"; echo "googlechecksum failure count is $$Chksum"; [ "$$Chksum" = "0" ] || exit 1
interval: 5m
start_interval: 30s
start_period: 5m
volumes:
model-cache:
You'll also need a .env file in the same directory:
# Immich .env configuration
UPLOAD_LOCATION=./library
DB_DATA_LOCATION=./postgres
DB_PASSWORD=your-secure-password
DB_USERNAME=postgres
DB_DATABASE_NAME=immich
Then simply run:
docker compose up -d
And just like that, Immich is running at http://your-server:2283. On first access, you'll create an admin account and can start uploading right away! π
If you're not that familiar with Docker yet or need a more detailed introduction, check out my Docker article:
Features That Will Blow Your Mind π
Face Recognition & Object Detection π§
Immich comes with built-in AI that detects and automatically groups faces. You can name people and then search for them, just like Google Photos. The machine learning model runs entirely locally on your server, so your images never leave your network.
Map View πΊοΈ
If your photos contain GPS data, Immich displays them on an interactive map. Perfect for finding vacation memories or simply seeing everywhere you've taken photos.
Sharing & Albums π¨βπ©βπ§βπ¦
You can create albums and share them with other users, or generate public links. Ideal for family photos, wedding pictures, or vacation albums you want to share with friends.
Mobile App π±
The Immich app is available for Android and iOS. It supports automatic background backup, so every new photo gets uploaded directly to your server. The app feels almost as smooth as Google Photos.
More Highlights β¨
- Full-text Search: Search for objects, scenes, or even colors in your images
- Memories: "On this day X years ago", just like Google Photos
- RAW Support: Support for common RAW formats
- Video Support: Not just photos, videos are managed and streamed too
- Duplicate Detection: Finds and flags duplicate images
- OAuth & OIDC: Single Sign-On integration possible
Immich vs. Google Photos βοΈ
| Feature | Immich | Google Photos |
|---|---|---|
| Cost | Free (Open Source) | Free up to 15 GB, then from $1.99/month |
| Privacy | Full control, data on your own server | Data with Google, AI analysis |
| Face Recognition | β Local | β Cloud-based |
| Map View | β | β |
| Mobile App | β Android & iOS | β Android & iOS |
| Auto Backup | β | β |
| Sharing | β Albums & Links | β Albums & Links |
| Storage Limit | Unlimited (own hardware) | 15 GB free |
| RAW Support | β | Limited |
| Self-hosted | β | β |
As you can see, Immich easily keeps up with Google Photos in most areas. The biggest advantage is, of course, complete control over your data. The only real downside: you need your own hardware and a bit of technical know-how for the setup.
Hardware Requirements π»
Immich isn't exactly modest when it comes to resources, especially the machine learning component needs decent power. Here are my recommendations:
Minimum
- CPU: 2 cores (x86_64 or ARM64)
- RAM: 4 GB (without ML) / 6 GB (with ML)
- Storage: 50 GB SSD for the system + as much as you need for photos
Recommended
- CPU: 4+ cores
- RAM: 8-16 GB
- Storage: SSD for database, HDD/NAS for media
- GPU (optional): For faster ML processing (NVIDIA with CUDA support)
A Raspberry Pi 4 with 8 GB RAM technically works, but machine learning will be quite slow on it. For a serious installation, I recommend at least a small Intel NUC or similar.
Tip: If you want to make Immich publicly accessible, you should definitely put a reverse proxy like Traefik in front of it and secure your homelab:
Conclusion π―
Immich is, in my opinion, the best self-hosted alternative to Google Photos. The project is evolving rapidly, the community is active and helpful, and the features are impressive. Sure, it requires some setup effort and your own hardware, but if you're already running a homelab, Immich is an absolute must-have.
Give it a try, you won't regret it! And if you have questions, feel free to drop them in the comments. π¬