Guide
6 min read

Immich Upgrade Anxiety Is Really a Database-Restore Problem

Every Immich release note warns about breaking changes, and a generic file backup won't save you. The thing that makes Immich upgrades calm is a tested database restore, not crossed fingers.

Immich Upgrade Anxiety Is Really a Database-Restore Problem

Immich moves fast, and its release notes don't sugarcoat it: major versions run database migrations that are not reversible. That's why upgrade day makes people nervous — and why the usual reassurance ("I have a backup of my photos") is the wrong reassurance. Your originals are rarely the thing at risk. The thing at risk is the database that knows about your albums, faces, and metadata, and the only thing that makes an Immich upgrade calm is a database restore you've actually performed.

Why a file backup isn't enough

Immich is a database-plus-files app (the same shape as the Immich/Nextcloud migration rules). Copy the upload folder and you've saved the pixels, not the meaning — albums, people, search, and timeline all live in Postgres. An upgrade that migrates the schema forward and then fails leaves you needing to restore that database to its pre-upgrade state. A folder copy can't do it.

The backup that actually protects an upgrade

Before any major upgrade:

  1. Stop Immich so the database is quiescent.
  2. Dump the Postgres database with pg_dump (Immich documents the exact command for its bundled Postgres — use it; a plain copy of the data dir is not a clean dump).
  3. Note the current version. You can only restore into the same version you dumped from — never an older binary against a newer schema.
  4. Keep the dump off the box, alongside the library.

Rehearse the restore once — before you need it

The dump is half the insurance; restoring it is the other half. Do it once on a scratch target:

  • Stand up the same Immich version, restore the dump, point it at a copy of the library, and confirm albums and faces come back.
  • That single rehearsal converts "I think this works" into "I've watched it work" — the whole point of a restore drill.

Upgrade sequence that removes the fear

  1. Read the release notes for breaking changes and required steps.
  2. Stop Immich; dump the database; record the version; copy off-box.
  3. Upgrade to the new version (only ever forward).
  4. Let migrations run; verify the timeline, albums, and a face search.
  5. If it's wrong: restore the dump into the old version, and retry the upgrade after addressing the noted issue.

Make backups routine, not heroic

The reason people skip the dump is that it's manual. Put it on a schedule (a nightly pg_dump shipped off-box) so every day is a near-upgrade-ready state, and an actual upgrade just adds one fresh dump on top. A managed deploy that includes scheduled database backups removes the main excuse — the boring discipline behind an easy, durable Immich install.

Checklist

  • Database dumped with the documented pg_dump, not a file copy.
  • Current version recorded; restore only into the same version.
  • Dump stored off-box with the library.
  • A restore rehearsed once on a scratch target.
  • Routine scheduled DB backups so upgrades start from a known-good state.

Takeaway

Immich upgrade anxiety is rational and misdirected. The risk isn't your photos; it's the database that gives them meaning, and Immich's migrations don't roll back. Dump the database before you upgrade, only restore into the matching version, and rehearse it once. Do that and "new major version" stops being a held breath.

immich
upgrades
backups
postgresql
restore-drill

Keep reading

Guide
8 min

Pi-to-NAS migrations need app-data and restore plans before RAID shopping

Fresh homelab threads show users trying to move from small Raspberry Pi or improvised storage setups into dedicated NAS hardware while still deciding how app data, media, RAID, and backups should work. One operator wants to migrate a Pi NAS with Docker…

Guide
6 min

Family Self-Hosters Need a Backup and Rollback Preflight Before Every App Upgrade

When the household depends on your server, a bad upgrade isn't a hobby setback — it's everyone's photos and files down. A two-minute backup-and-rollback preflight before you hit update.

Guide
7 min

Moving Immich and Nextcloud Data Without Corrupting App-Owned State

Copying an app's files by hand is how migrations break. Immich and Nextcloud own a database and an index alongside the files — move all of it together, or not at all.

Guide
8 min

Beginner homelabs need an app-first checklist before buying storage, servers, or noisy rack gear

Very fresh homelab and self-hosted threads keep showing beginners choosing hardware before they have a stable application plan. One user already runs Immich and Jellyfin on an old laptop but is unsure what storage size, drive class, and server path fit a…

Guide
8 min

Container monitoring is moving from uptime dashboards to egress policy, backup-state widgets, and service-level proof

Fresh self-hosting posts point to a more specific monitoring need than simple green/red uptime. One homelab user running rootless Podman quadlet services wants per-container outbound blocking, domain allowlists, and traffic visibility but cannot see how to…

Guide
8 min

First-time self-hosted app launches need preflight maps before Docker, hosting plans, and per-client stacks

Fresh Reddit threads show beginners and small freelancers getting blocked before the application itself is the hard part. One Immich beginner wants to run it on Windows but gets stuck at Docker prerequisites. A Next.js freelancer is planning a separate app…