Skip to content

Photos

Photo library on TrueNAS, served at photos.saxobroko.com. Google Photos is long gone from my workflow — everything lives on my own hardware behind a Cloudflare Tunnel.

History

Google Photos dropped free storage around 2019. I did a Takeout, then my Google account got compromised — luckily after the download. Everything has lived on my own hardware since.

Started on Synology Photos (DS920+). Migrated to TrueNAS when I moved to the Ugreen DXP 8800 Plus.

Stack (TrueNAS)

Aspect Detail
Public URL photos.saxobroko.com
Host TrueNAS @ 192.168.2.203
Likely app Immich — verify in TrueNAS → Apps (name may differ if I switched)
Tunnel Public hostname in Cloudflare → cloudflared → app port

If the installed app is not Immich, update this page after checking the TrueNAS app catalogue. Synology Photos is not used anymore.

Verify which app is running

  1. Open dsm.saxobroko.com
  2. Go to Apps / Installed Applications
  3. Look for Immich, PhotoPrism, or similar
  4. Note the internal port for LAN troubleshooting

Storage path

Photos sit on the same RAIDZ1 pool as media — Backups and pool health.

Layer Path / name
TrueNAS dataset Dedicated photos dataset on the pool — TODO: exact dataset name (e.g. pool/photos or under a shared root)
Docker volume Mounted into the app container by TrueNAS app config
Windows Not typically mapped as a drive letter; access via web/app

Check Storage in TrueNAS for capacity. Photo libraries grow quietly — watch free space alongside media and torrents.

Setup (TrueNAS)

  1. Open TrueNAS → Apps
  2. Install/configure the photos app (Immich or equivalent — confirm what's deployed)
  3. Point it at the photo storage dataset
  4. Complete first-run admin user (credentials in Vaultwarden)
  5. Add photos.saxobroko.com tunnel hostname if not already — cloudflared
  6. Add WAF rules (block no aus, localnet full strict ssl) — Network
  7. Add tile on Homepage

Mobile upload (iOS)

Immich (if that is what is installed) provides a native app:

  1. Install Immich from the App Store (or whichever client matches the running app)
  2. Server URL: https://photos.saxobroko.com
  3. Log in with homelab credentials (Vaultwarden)
  4. Enable background upload / auto backup in app settings
  5. Leave on Wi‑Fi for bulk uploads — first sync takes ages (tens of thousands of photos)

Tips for large libraries

Tip Why
Initial sync on Wi‑Fi overnight Avoids mobile data and timeouts
Keep app foregrounded first hour Some iOS versions throttle background transfers
Check TrueNAS free space before bulk import Import + thumbnails spike disk use
HEIC / Live Photos Immich handles these; verify transcoding settings if playback issues

Accessing photos

Method URL / app
Website photos.saxobroko.com
Phone Immich (or matching) mobile app
LAN Direct to app port on 192.168.2.203 if tunnel is down

Public access is geo-restricted to Australia via Cloudflare block no aus like most homelab hosts.

Backups and snapshots

Photos are valuable and irreplaceable compared to re-downloadable media.

Strategy Notes
ZFS snapshots Snapshot the photos dataset before major app upgrades — Backups and pool health
Off-site TODO: document if Takeout copy, external drive, or cloud backup exists
Pool health RAIDZ1 = one disk failure tolerance; degraded pool is urgent

Losing the pool without off-site backup loses the photo library. Media can be re-grabbed from trackers; photos cannot.

Troubleshooting

Problem Fix
Uploads stuck on iPhone App logged in? Background refresh? Wi‑Fi only? — Common Issues
Site down publicly cloudflared; check tunnel hostname
Site down on LAN too TrueNAS app stopped; disk full; pool degraded
Slow gallery load Thumbnail generation still running after import; check CPU/disk on NAS
Wrong app after migration Confirm Immich library path points at migrated files, not empty volume