I gave Google Photos my entire photo library for about six years. Somewhere around 40,000 photos, dating back to 2011. Then Google changed their storage policy, the free tier got neutered, and I started paying $3/month for what used to be free. Not the end of the world, but it got me thinking: why am I renting access to my own memories?
That was two years ago. I’ve been running Immich ever since, and I genuinely haven’t looked back.
ImmichWhat You’ll Need
- A home server (anything running Linux — a Raspberry Pi 4 works, though I’d recommend at least 4GB RAM for the ML features)
- Docker and Docker Compose installed
- Some patience the first time it indexes your existing library (mine took about 8 hours for 40k photos)
Storage is the big one. Photos add up fast. I’d budget at least 1TB to start, more if you shoot a lot of video. A cheap NAS drive works fine — Immich isn’t doing constant read/write, mostly just sequential writes during backup.
Installation
Immich makes this pretty easy with their official Docker Compose setup. Here’s what to do:
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
Open .env and set these at minimum:
# Where your photos will live on disk
UPLOAD_LOCATION=/your/photos/path
# Generate a random string for this
DB_PASSWORD=changeme_use_something_random
Then bring it up:
docker compose up -d
That’s it. Immich will be running at http://your-server-ip:2283. First thing to do is create your admin account — whoever hits the registration page first becomes admin, so do it before anyone else on your network does.
If you’re importing an existing library (from Google Photos or a local folder), use the built-in external library feature rather than uploading everything manually. Point it at a folder on disk and Immich will scan and index without copying anything.
Mobile App Setup
The iOS and Android apps are genuinely good. Install the app, point it at your server’s address, log in, enable background backup — done. It’ll automatically back up new photos as you take them, just like Google Photos did.
The one catch: accessing your server from outside your home network. You have a few options here. The cleanest is Tailscale, which creates a private VPN between your devices with zero port forwarding required. I run Tailscale on my phone and server, and Immich works over it seamlessly. It’s free for personal use and takes about 10 minutes to set up.
If you want public access without a VPN, you can set up a reverse proxy (Nginx Proxy Manager or Caddy are both solid), but that’s a separate tutorial.
What’s Actually Good
Mobile backup just works. This was my biggest concern switching from Google Photos, and Immich nailed it. Background sync is reliable, it handles photos and videos, and it’s smart enough to not re-upload things you’ve already backed up.
Face recognition. It’s shockingly good. Immich uses machine learning to group photos by person, and after a few corrections it’s accurate enough to be genuinely useful. Searching for photos of a specific person actually works.
The web UI. Clean, fast, and keeps getting better. The map view showing where photos were taken is a nice touch if your photos have GPS data. The timeline view feels familiar if you’re coming from Google Photos.
Active development. The Immich team ships updates constantly. Sometimes too constantly (more on that below), but it means bugs get fixed fast and features actually land.
What’s Not So Great
The ML features eat RAM. The machine learning containers — face detection, CLIP search, that kind of thing — use a couple GB of RAM when active. On a low-RAM box this is annoying. You can disable them in the config if you need to, but then you lose face recognition and smart search.
No desktop app. If you want to back up photos from your desktop/laptop, you’re either manually uploading through the web UI or using a third-party sync tool. Not a dealbreaker, but worth knowing.
Breaking changes happen. The Immich devs themselves warn you: they’re moving fast, and upgrades occasionally require database migrations that can’t be rolled back. This isn’t a reason not to use it, but it does mean you should back up your database before updating. Speaking of which…
Backup Strategy
Immich stores your photos on disk, but the metadata (albums, tags, faces, favorites) lives in a Postgres database. If you lose the database, you lose all that organization even if the photos survive.
My setup: photos stored on my NAS, database backed up nightly with docker exec immich_postgres pg_dumpall and synced offsite with Backblaze B2. B2 storage is cheap — about $6/TB/month — and the Backblaze desktop app or rclone makes automation easy.
The actual photo files I back up with rclone to B2 as well. Belt and suspenders.
Verdict
If you’ve been thinking about escaping Google Photos, Immich is the one to do it with. The mobile backup is solid, the UI doesn’t feel like a punishment, and the active development means it keeps getting better.
It’s not quite as polished as Google Photos — nothing self-hosted ever is — but it’s close enough that I don’t miss it. And my photos are mine again, on hardware I control, in formats I can access without anyone’s permission.
Set aside an afternoon, follow the steps above, let it index overnight, and you’ll be good.
The Home Lab Starter Blueprint
Setting up your first server? This guide covers hardware picks, OS setup, networking, and the first 10 apps to self-host — including Immich.
Get the Blueprint — $12