Part 3: Installing Immich on TrueNAS SCALE

Part 3 of a series on building a home server. Part 1 covers TrueNAS installation; Part 2 covers Nextcloud. This post assumes a working TrueNAS system with Apps configured.


What is Immich?

Immich is a self-hosted photo and video backup platform that does what Google Photos does — automatic backup from your phone, timeline view, face recognition, album organisation, search — without your memories living on someone else's server.

It's under very active development and has become the go-to recommendation in the self-hosting community for photo management. The mobile app is polished, backup runs reliably in the background, and the web UI is fast and clean.

One honest caveat: because Immich moves quickly, breaking changes between versions do happen. The TrueNAS catalog keeps a stable version, and as long as you let TrueNAS manage updates (rather than chasing nightlies), you'll generally be fine.


Before you start: create a dataset for Immich

Same pattern as Nextcloud. Give Immich its own dataset so its data is independently snapshotted and cleanly separated.

Storage → Create Dataset. Name it something like immich-data. Note the full path: /mnt/tank/immich-data.

Depending on how many photos you have, this dataset could grow to hundreds of gigabytes or more. If you have multiple pools or drives, put it on your largest one.


Step 1: Find Immich in the catalog

Apps → Discover Apps → search for Immich.

Click on it and then Install.


Step 2: Configure Immich

Application Name Leave as immich.

Immich Configuration

  • Timezone: Set this to your local timezone. Immich uses it for grouping photos by date correctly.

Storage — Photo Library This is the most important setting. Under the photo library storage option:

  • Change type to Host Path
  • Set the path to your dataset: /mnt/tank/immich-data

This is where all your backed-up photos and videos will live as ordinary files on your ZFS pool. You can browse them directly if needed, though Immich manages its own internal structure.

Storage — Postgres Data and Redis Data Immich uses a PostgreSQL database and a Redis cache internally. Leave these at the default (TrueNAS manages them as internal app storage). There's no need to expose these to a custom dataset.

Network The default web UI port is 30041. Note it down.


Step 3: Install and initialise

Click Install. Immich has several containers (the main server, machine learning for face recognition, PostgreSQL, Redis) so startup takes longer than a simpler app — give it two to three minutes.

Once all containers show as running, open:

http://<your-truenas-ip>:30041

You'll be prompted to create an admin account. Do so — this is your Immich login, independent of TrueNAS.


Step 4: Install the mobile app and start backing up

The Immich mobile app is available on iOS and Android. After installing it:

  1. On the server URL screen, enter http://<your-truenas-ip>:30041
  2. Log in with your Immich credentials
  3. Grant the app permission to access your photos
  4. Go to Settings → Background backup and enable it

Immich will begin uploading your existing library and will back up new photos automatically in the background. The initial upload can take hours or days depending on your library size — that's normal.


Step 5: Face recognition and smart search

Immich runs a machine learning container that handles face recognition and CLIP-based semantic search (the kind where you type "beach sunset" and it finds relevant photos without tags).

This works automatically in the background. On a reasonably modern CPU it processes at a comfortable pace. If you have a large library, give it a day or two to catch up. Progress is visible in the Administration panel in the Immich web UI.

Machine learning in Immich requires a bit of RAM. If your system is running low, you can disable the ML container in the app settings, though you'll lose face recognition and semantic search.


Understanding how your photos are stored

Immich stores photos in a date-based folder structure inside your dataset:

/mnt/tank/immich-data/
  upload/
    library/
      <user-id>/
        2024/
          2024-06-15/
            IMG_1234.jpg

This means your originals are always accessible as plain files — you're never locked into Immich's database. If you ever want to migrate away, your photos are right there.

Don't move or rename files inside the library folder manually. Immich tracks files by path; moving them breaks the database links. If you want to reorganise, use Immich's own interface.


Snapshots for your photo library

Set up a periodic snapshot task for immich-data in TrueNAS Data Protection. Because photos are write-once (you rarely modify an original), daily snapshots kept for 90 days is a reasonable policy. This gives you a safety net if you accidentally delete an album.


What you have now

A private photo and video backup server that:

  • Automatically backs up your phone's camera roll over your home network
  • Provides face recognition, timeline, and search
  • Stores everything as plain files in a ZFS dataset you control
  • Can be snapshot-protected with a few clicks

In the final post of this series, we'll add Navidrome — a self-hosted music streaming server that turns your local music collection into your own private Spotify.


Next: Part 4 — Installing Navidrome on TrueNAS SCALE