Jellyfin 12 is the first release in a long time that will refuse to load on a server whose plugins haven’t kept up. The team is finally cleaning up the database schema, tightening plugin API contracts, and dropping support for some ancient auth flows. That’s healthy for the project. It’s also a real chance to break your home server if you upgrade in place without a plan.
We looked at seven desktop tools that make the upgrade safe: a backup that actually restores, a plugin audit before you pull the new image, a rollback path if the migration fails, and a metadata sanity pass after. Six of the seven are free and open-source. All of them run on Windows, macOS, and Linux (or in a container that does).
What to look for
- A backup of the config directory and the database, taken cold with the server stopped.
- A plugin compatibility audit before you upgrade — some plugins won’t ship a 12-compatible build day one.
- A tagged container image, so you can pin the exact 10.x you were running and roll back without git-diving.
- A staging server on a spare Pi or a VM, so the first upgrade attempt isn’t on the real one.
- Metadata tooling to fix the inconsistencies Jellyfin 12’s stricter scanner will surface.
Quick comparison
| App | Best for | Platforms | Free plan | Price | License |
|---|---|---|---|---|---|
| Jellyfin | The server itself | Windows, macOS, Linux, Docker | Yes | Free | GPL |
| Jellyfin Backup Plugin | In-app config + database backup | Any Jellyfin host | Yes | Free | GPL |
| Kopia | Full-server encrypted backups | Windows, macOS, Linux | Yes | Free | Apache 2.0 |
| Portainer | Container rollback and image pinning | Windows, macOS, Linux | Yes | Free (Community) | zlib |
| Watchtower | Controlled Docker updates | Linux, Docker | Yes | Free | Apache 2.0 |
| Diun | Notify before pulling new images | Linux, Docker | Yes | Free | MIT |
| TinyMediaManager | Cleanup metadata pre- or post-upgrade | Windows, macOS, Linux | Yes | Free / ~$50/yr | Apache 2.0 |
1. Jellyfin – The server itself, upgraded on your terms
Jellyfin is the media server. For a version-12 upgrade, the honest advice is: don’t take the auto-update. Pin the 10.x tag on Docker, stop the container, run the backup steps below, and pull the new tag manually when you’re ready to sit in front of the server for an hour.
Where it falls short: The auto-update habits of some installer paths (native Windows service, some distro packages) make pinning harder than it should be.
Pricing:
- Free: Everything.
- Paid: None.
Platforms: Windows, macOS, Linux, Docker, ARM.
Download: jellyfin.org.
Bottom line: Pin the tag, take the backup, upgrade deliberately.
2. Jellyfin Backup Plugin – Best in-app config + database backup
Jellyfin Backup Plugin is the official first-party plugin that packages the config directory, the metadata database, and the user database into a single zip on a schedule. Restore is a click. For the version 12 jump, run a manual backup with the server stopped so nothing is mid-write, then keep a scheduled backup running on the new version.
Where it falls short: Doesn’t back up the media library itself, only the metadata around it. Storage is local unless you point it at a share.
Pricing:
- Free: Everything.
- Paid: None.
Platforms: Any host running Jellyfin.
Download: Install from the Jellyfin plugin catalogue inside the Dashboard.
Bottom line: The first thing to install. The one that makes rollback trivial if the upgrade goes sideways.
3. Kopia – Best full-server encrypted backups
Kopia is the backup tool that handles the layer the Jellyfin plugin can’t reach: the full config folder, the artwork cache, the transcoding tmp, and the compose files. It deduplicates, encrypts, and pushes to S3, B2, a NAS, or another disk. Snapshots are incremental and mount-restorable.
Where it falls short: Learning curve for the repository/policy model. The GUI is a browser tab, not a native app.
Pricing:
- Free: All features.
- Paid: None.
Platforms: Windows, macOS, Linux.
Download: kopia.io.
Bottom line: The backup layer under the plugin. Set once, forget until you need it.
4. Portainer – Best container rollback and image pinning
Portainer is the Docker UI that makes pinning a specific Jellyfin image tag a few clicks instead of a compose-file edit. Duplicate the stack, keep the old one paused with the old tag, run the new one alongside. If 12 misbehaves, stop the new stack, resume the old one — you’re back on 10.x in under a minute.
Where it falls short: Free tier is generous but locks a few features behind Business. Login and licence prompts on every fresh install take a minute to disable.
Pricing:
- Free: Portainer Community Edition.
- Paid: Portainer Business, for feature tiers most home users don’t need.
Platforms: Windows, macOS, Linux (Docker).
Download: portainer.io.
Bottom line: The safety net. Roll back to 10.x from a browser tab without touching the CLI.
5. Watchtower – Best controlled Docker updates
Watchtower auto-updates Docker containers when new images arrive. For a normal home server, that’s set-and-forget. For the Jellyfin 12 window, do the opposite: exclude Jellyfin from Watchtower’s watchlist so a scheduled update doesn’t drag you into the migration at 3 AM.
Where it falls short: No GUI. Configuration is environment variables on the container.
Pricing:
- Free: All features.
- Paid: None.
Platforms: Linux (Docker).
Download: containrrr.dev/watchtower.
Bottom line: The tool to reconfigure before you upgrade, so you decide when Jellyfin moves.
6. Diun – Best “notify before you pull” alternative to Watchtower
Diun watches image registries and pings you (via Discord, Telegram, ntfy, or email) when a new tag is published. Unlike Watchtower, it never pulls or restarts — it just tells you the world moved. Perfect for the Jellyfin 12 window: you get the ping, you decide when to actually upgrade.
Where it falls short: Not an updater. If you want zero-intervention, Watchtower is the tool.
Pricing:
- Free: All features.
- Paid: None.
Platforms: Linux (Docker).
Download: github.com/crazy-max/diun.
Bottom line: The right tool for anyone who wants a nudge without an auto-pull.
7. TinyMediaManager – Best pre- or post-upgrade metadata cleanup
TinyMediaManager scans your library and rewrites messy metadata into a clean nfo + artwork structure that Jellyfin loves. Run it before the upgrade to fix mislabeled episodes and missing artwork; run it again after to catch anything the new scanner surfaces. The free tier covers the common cases; the paid v5 unlocks bulk actions.
Where it falls short: Free version limits some bulk actions and TV episode features to the paid v5.
Pricing:
- Free: v4 fully featured for movies; v5 adds bulk episode tools.
- Paid: Around $50/year for the v5 licence.
Platforms: Windows, macOS, Linux.
Download: tinymediamanager.org.
Bottom line: Run this once a year even without an upgrade. Around a Jellyfin 12 jump, run it before and after.
How to pick the right one
- If you install one thing today: Jellyfin Backup Plugin. Take a manual backup with the server stopped, then upgrade.
- If you run Docker (most people): Portainer, so you can roll back in a click.
- If you have auto-updates on: turn them off for Jellyfin with Watchtower exclusions or by switching to Diun notifications.
- If you want the belt-and-braces backup: Kopia, alongside the plugin.
- If your library has mislabeled episodes and missing artwork: TinyMediaManager, before and after the jump.
FAQ
Should I skip Jellyfin 12 and wait? No. Waiting doesn’t reduce the risk, it just moves it. Back up, pin the current tag, upgrade a staging instance first, then upgrade the real one.
What plugins will break in Jellyfin 12? The team is publishing a compatibility list on the Jellyfin blog and in the release notes. Check every third-party plugin (auto-organise, custom transcoders, custom auth) before you upgrade.
Can I run Jellyfin 10.x and 12 side by side? With Docker, yes. Point each container at a separate config folder (Jellyfin 12 will migrate the database in place, so don’t share the config folder between versions).
How long does the database migration take? For a 5,000-item library, expect a few minutes on SSD, tens of minutes on spinning disk. Don’t stop the container while it runs.
Do I need a fresh install, or does upgrade in place work? Upgrade in place is supported and expected for most users. A fresh install is the safe path if your server has years of accumulated config quirks or plugins from an older era.