Prevent Jellyfin configuration loss during upgrades by treating application state and the replaceable runtime as two separate recovery objects.
An upgrade can succeed at the package level while a changed mount, user ID, device mapping, or migration leaves Jellyfin looking new. The prevention step is not “take a backup” in the abstract; it is to know exactly where state lives, capture it consistently, record the running definition, and prove you can restore it.
Map the Real Persistent Paths Before the Upgrade
Do not assume the path shown inside a container is the host path being backed up. Verify the bind mount or named volume that actually contains database, config, metadata, and plugin state.
Container storage remains portable when volume definitions and service boundaries are explicit in the deployment configuration.
Write down host path, container path, ownership, and filesystem for every persistent mount. If the state location cannot be identified confidently, postpone the upgrade.
Take a Consistent Pre-Change Copy
The most useful recovery point is one captured before the new version can modify the database. A file copy taken during active writes can be harder to trust than a stopped-service backup or coherent snapshot.
A separate Jellyfin config backup preserves the state that is difficult to recreate while leaving bulk media on its own protection path.
Create the backup, store it outside the live config device, and record its timestamp plus version. A persistent app-data layout should let you back up state without copying the image itself.
Record the Runtime Definition as Carefully as the Data
A perfect database backup will not restore hardware acceleration, ports, DNS, devices, or permissions if the recreated container definition is missing those settings. Treat Compose or platform configuration as part of the recovery set.
Running containers as a stable service identity depends on predictable UID and GID mapping across upgrades and host filesystems.
Export or commit the effective deployment definition without secrets. Record image digest and device mappings so rollback does not depend on memory.
Test the Recovery Path Before Removing the Old Version
Cleanup should happen after the new version survives a restart and the backup can be located and opened. If rollback has never been rehearsed, deleting old images and snapshots removes your cheapest recovery options.
A tested restore path turns a backup from an assumed recovery option into one that has actually rebuilt usable application state.
Validate users, libraries, metadata, one playback, and one restart. Keep the pre-upgrade recovery set until the new version has completed its expected migrations and normal background work.
Support & Tips
More to Read

Should You Back Up Jellyfin Live or Stop the Service First?
Prefer stopped-service backups for simplicity; use live snapshots only when application state is captured consistently and restores are tested.

Why Does Jellyfin Run Hot or Noisy When Nobody Is Streaming?
Idle heat usually means background work or a shared-host workload, so identify the active process and scheduled task before changing cooling or hardware.

When Should You Rebuild Instead of Repairing Jellyfin?
Choose rebuild over repair when runtime drift is the problem and persistent state is backed up; do not “rebuild” by deleting the only good...

