๐ Chapter 02 โ Photos
The family photo library. The highest-value data on the NAS, the app the family will use most.
Learning Objectives
- Set up Immich with multiple family users, each with their own library
- Configure the mobile app to auto-upload in the background
- Use face recognition, location clustering, and search to find photos
- Share albums with people who don't have an Immich account
- Migrate from Google Photos or iCloud without losing years of memories
Why Immich
Immich is a self-hosted photo and video manager. Think Google Photos, but on your hardware. It does:
- Auto-upload from phones, in the background, on Wi-Fi only (configurable)
- Organize by date, location, person (face recognition), and object (on-device ML)
- Search by any of: "beach Hawaii 2024", "Mom", "dog", "2024-03-15"
- Albums (manual and smart: "all photos with Mom in Hawaii")
- Share individual photos or albums via a public link
- Display the original resolution (no compression, unlike free Google Photos)
It's free, open-source, and the most actively-developed photo app for self-hosted setups. The mobile app is good (iOS and Android). The web UI is good. The ML runs on your NAS (using CPU or GPU if available).
Initial setup
From Volume 1, Chapter 08: you already installed Immich. Now we're going to configure it for the family.
- Open the Immich web UI (at
http://<nas>:3001on the LAN, or via Tailscale remotely). - Log in as the admin user you set up during install.
- Administration โ Users โ Create User. Create one Immich user per family member. For TK's build: tk, Mimi, Lai.
- For each user, set the role: admin for TK (so TK can manage the install), user for the rest.
Storage location
During install, you mounted /mnt/tank/Apps/immich. Immich creates subdirectories inside it:
The upload/ directory is what gets big. For a family taking 10,000 photos a year, expect 50-100 GB of originals per year (more if there are videos). This dataset is already covered by the Apps snapshot policy.
The mobile app
Each family member installs the Immich mobile app. The setup:
- Install from the App Store / Play Store.
- Open the app. It will ask for the server URL. This is the NAS URL with port 3001 (or your Tailscale URL).
- Log in with the user's Immich credentials.
- Grant the photo library permission.
- Configure backup:
- Toggle Backup on
- Choose "Wi-Fi only" (saves cellular data)
- Choose to back up original quality (full resolution) or "high quality" (compressed, unlimited storage)
- Wait. The first backup can take a while (depending on how many photos are on the phone).
What "original quality" vs "high quality" means
Immich has two upload modes:
- Original quality: uploads the full-resolution file. No compression, no quality loss. Uses more storage.
- High quality: compresses the file before upload (similar to Google's "high quality" mode). Free unlimited storage. Small quality loss.
For a home NAS where you have 44TB of usable space, always use original quality. The point of the NAS is to have the originals. If you wanted compressed copies, you could stay on Google Photos.
Library and search
Once photos are uploaded, the family can browse them in several ways:
Timeline view
The default view in Immich is a vertical timeline of all photos, grouped by date. Scroll to browse. Click to open. The simplest possible interface.
Search
Immich's search uses both metadata (date, location) and ML (objects, faces, scenes). Examples of searches that work:
- "beach" โ finds photos ML-identified as containing a beach
- "Hawaii" โ finds photos taken in Hawaii (geolocation)
- "Mom" โ finds photos with a face you've tagged as Mom
- "2024-12-25" โ finds photos from Christmas 2024
- "Mom Hawaii" โ combines: Mom AND in Hawaii
Map view
If the photos have GPS metadata (most phone photos do), the map view shows them pinned to the location they were taken. The conversation's recommendation: enable this. It's the "wow" feature for the family.
Albums
Users can create albums manually (drag photos into a new album) or use smart albums (criteria-based, e.g. "all photos from the Hawaii trip"). For the family, the most useful albums are usually:
- Annual albums ("2024 Family", "2023 Family")
- Trip albums ("Hawaii 2024", "Christmas 2023")
- Event albums ("Emma's Birthday", "Mom's Visit")
Face recognition and people
Immich automatically detects faces in uploaded photos. It groups similar faces together, but it doesn't know who they are โ that's where you come in.
- Immich's Explore view shows a "People" section with all detected faces.
- Click a face cluster. Add a name ("Mom", "Dad", "Emma").
- Immich now knows: every face in that cluster is that person.
- You can merge two clusters if Immich split the same person into two groups (very common with kids โ they look different at different ages).
- You can also name a cluster "Not a person" to ignore it (artwork, statues, etc.).
The first time you do this, expect to spend 30-60 minutes. Immich has to process every photo. After that, the model is smart enough that new uploads get auto-tagged if the face matches a known person.
Sharing
There are two ways to share:
Share with other Immich users
Open a photo or album. Click Share. Type the other Immich user's name. They can see it in their library.
Share via public link
Open a photo or album. Click Share โ "Create public link." Immich generates a URL that anyone can open in a browser to see the photo. You can set:
- Password protection
- Expiration date
- Whether viewers can download the original
- Whether viewers can upload their own photos to the album (useful for collaborative albums)
This is the right way to share "here are the photos from the wedding" with grandma. Generate a link, send it via Signal/iMessage, set an expiration. Done.
Sharing a public link with a long expiration "just in case." The link can be discovered or forwarded. Set a reasonable expiration (30 days, 90 days) and rotate the link when needed. Public links are the most common way private photos leak.
Migrating from Google Photos or iCloud
Most families have years of photos in Google Photos or iCloud. The conversation's recommendations for migrating:
From Google Photos
- Use Google Takeout to download all your photos. Google provides a zip of everything.
- Immich has a CLI tool called
immich-gothat can import from a Google Takeout export. It preserves dates, albums, and favorites. - After import, verify a few photos look right. Check that dates are preserved (Google sometimes changes them).
- Disable Google Photos backup on your phone (so new photos only go to Immich, not Google).
- After a month of Immich-only photos, you can delete the Google Photos library if you want.
From iCloud
- On a Mac, enable "Download originals to Mac" in iCloud Photos.
- Use the Mac's Photos app to export everything as a folder structure.
- Use
immich-goto import the folder into Immich. - Disable iCloud Photos backup once you're sure Immich is working.
Both
The migration takes hours of waiting (downloads + uploads), but the actual setup is minutes. Do it on a weekend when you don't need either service for a day.
Hardware: ML and transcoding
Immich does some heavy lifting:
- Face recognition: ML inference on every uploaded photo. CPU is fine for low resolution; GPU helps for high-volume libraries.
- Object/scene detection: similar ML work. Same hardware story.
- Video transcoding: when a video isn't playable on the device requesting it, Immich transcodes it. CPU does this; Intel QuickSync or NVENC helps a lot.
For a 4-person family with normal photo usage, CPU-only is fine. If you have a hardware transcoder (Intel iGPU, NVidia GPU), configure Immich to use it in Administration โ Settings โ Transcoding.
The "ops dashboard" the family uses
For a family, Immich is the only photo interface that matters. Don't also offer the SMB share \\NAS\Photos for direct file browsing. That's two ways to do the same thing, and the family will be confused.
Pick one: Immich for everything. The SMB Photos share can still exist for TK's own use (managing files, copying to external drives), but it shouldn't be the family's primary interface.
Engineering Note
The best photo system is the one the family actually uses. It doesn't matter how good the ML is if the photos sit on a phone forever. It doesn't matter how good the search is if the family doesn't know to use it. The success metric for this chapter is: does the family use Immich? If yes, the chapter worked.
To make the family use it: set it up on everyone's phone in one sitting, in person, with them. Show them one search. Show them the timeline. Show them the map. Don't write a manual. Don't make a video. Just show them, once, in person.
Summary
Immich is the family photo library. One user per family member. Original quality uploads. Face recognition takes 30-60 minutes of initial labeling. Search, maps, and albums replace the iCloud/Google Photos experience. Public links for sharing with grandma; explicit expiration. Migrate from Google/iCloud on a weekend. The success metric is whether the family actually uses it.
Checklist
- โฌ Create one Immich user per family member
- โฌ Install the mobile app on every phone, configure backup (Wi-Fi only, original quality)
- โฌ Wait for the first sync to complete (could be hours for the first upload)
- โฌ Spend an hour labeling faces. Don't skip this; it makes Immich actually useful.
- โฌ Show the family in person: search, map, album, share
- โฌ Migrate from Google/iCloud if applicable
Looking Ahead
Chapter 03 is the videos chapter. Jellyfin is to Netflix what Immich is to Google Photos. Same principle: one app, used by the whole family, replacing a cloud service. But with the added wrinkle of transcoding and bandwidth.