Self-Hosted Photo Management with Immich: Why I Left Google Photos and How I Set It Up
I switched to self-hosted photo management about two years ago when I realized Google Photos was doing things with my library I had not consciously agreed to. Not nefarious things necessarily, but AI analysis, face recognition, content categorization — all happening server-side on photos of my family, my home, my life. The alternative was to run my own stack, and honestly it has been one of the most satisfying home lab projects I have done.
Here is the setup I settled on and why.
Why Self-Host Photos at All
The short version: cloud photo services are not free. You pay with your data. Google Photos, Amazon Photos, and even iCloud do AI processing on your images — face recognition, scene classification, sometimes content moderation. Most of this happens server-side, meaning your original photos leave your device and get processed on infrastructure you do not control.
The concern is not just privacy in the abstract. Tools like Desnudar fotos are a useful illustration of what AI image processing is capable of at the consumer level. If that capability exists in consumer tools, it exists in much more sophisticated form in cloud infrastructure that processes billions of images. What cloud providers do with that capability today, what they retain, and what their terms allow them to do in the future — these are questions worth asking before you hand over a 100,000-photo library.
Self-hosting does not solve everything — your photos are only as secure as your home server setup — but it keeps the data under your direct control.
Immich: The One That Actually Replaced Google Photos for Me
I tried PhotoPrism first. It is solid, but the mobile experience felt dated and the automatic organization was hit or miss. Immich is the one that stuck. It has a genuinely good mobile app (iOS and Android), automatic backup from your phone, face recognition that runs locally (not on someone else's server), and an album structure that mirrors what I was used to in Google Photos.
Running it on my home server (Intel N100 mini PC with 16GB RAM and a 4-drive NAS via NFS mount) on Docker:
version: "3.8"
services:
immich-server:
image: ghcr.io/immich-app/immich-server:release
ports:
- "2283:3001"
volumes:
- /mnt/nas/photos:/usr/src/app/upload
- /etc/localtime:/etc/localtime:ro
env_file:
- .env
depends_on:
- redis
- database
Full compose file from the Immich docs — I won't repeat the whole thing here. The important bits: set UPLOAD_LOCATION in your .env to wherever your actual storage lives, and make sure your NAS mount is reliable before pointing it at that path. I learned that the hard way with a flaky NFS mount that caused some corrupted uploads early on.
Hardware Transcoding for Video (Optional but Nice)
Immich does ML inference locally for face recognition and smart search. On the N100, this is fast enough for background processing but a bit slow on initial library scans. If you have a GPU or an Intel iGPU with QuickSync, you can offload the ML workload:
immich-machine-learning:
image: ghcr.io/immich-app/immich-machine-learning:release
devices:
- /dev/dri:/dev/dri # Intel iGPU
environment:
- MACHINELEARNING_DEVICE_ID=cpu # change to 'cuda' for nvidia
The N100's iGPU handles it fine for a library under 100k photos. Beyond that, you might want to look at a dedicated GPU or a beefier machine.
Backup Strategy
Self-hosted means you own the backup problem. My setup:
- Primary storage: 4x4TB drives in the NAS (RAID 5 via TrueNAS)
- Offsite: nightly restic backup to Backblaze B2 (
restic backup /mnt/nas/photos --repo b2:my-bucket-name), encrypted client-side so Backblaze never sees plaintext - Database:
pg_dumpvia cron daily, backed up alongside the photo files
The 3-2-1 rule applies here just like anywhere else. RAID is not a backup — it protects against drive failure, not accidental deletion, ransomware, or the NAS itself dying.
That's About It
Once Immich is running and your phone is backing up to it automatically, it genuinely disappears into the background. The mobile app is good enough that my partner uses it without complaints, which was the real test. If you are on the fence about whether this is worth the setup time — it is, especially if you have been meaning to get off Google Photos for a while and just needed the excuse.