Immich Photo Library
Self-hosted family photos, backed up off-site every night
Project Overview
Immich is where our family photos live now. It runs on my TrueNAS server and replaced iCloud Photos as our backup, and it gives us what Google Photos is good at, like face recognition and searching by description, on hardware I own.
Honestly, Immich is an insanely good app for being free, open source, and self-hosted.
There are no screenshots on this page on purpose. It's our family's photos.
The Library
From Immich's server stats, October 2026.
Who Backs Up to It
Three devices back up to it through the Immich app: my iPhone, my wife's iPhone, and our daughter's iPad.
How It Runs
Immich runs as four Docker containers on the TrueNAS server:
- Server: The web app, the mobile app's API, and the uploads
- Machine Learning: Face recognition and search by description, run on our own server instead of someone else's cloud
- Postgres: The database behind the library
- Redis: The job queue for background work
The code is on GitHub.
Backups
- Photo Library: Syncs to Backblaze B2 every night at 3:00 AM with the rest of the server's data
- Database: Dumped nightly with the other Postgres databases
- Left Out on Purpose: The live database folder stays out of the cloud sync, because a copy taken while Postgres is writing isn't a usable backup. The nightly dump is the backup
- Checked: On July 31, 2026 I spot-checked B2 and found real HEIC and MOV files there, not just folder names
Immich's HEIC uploads were also the first sign of a bigger problem: the cloud sync failed whenever it read a file an app was still writing. Fixing that for every app, not just Immich, shaped the whole backup setup. That story is in Backups and Restores.
Related Projects
- TrueNAS Server Build: The server it runs on.
- Synology to TrueNAS: The move that made room for it.
- Backups and Restores: How the photos are protected, and how a restore was tested.