Back to Article List

Jellyfin backup and restore on Ubuntu and Docker

Jellyfin backup and restore on Ubuntu and Docker - Jellyfin backup and restore on Ubuntu and Docker

Nobody backs up Jellyfin until the week a major upgrade breaks a migration, which is why "jellyfin 10.10.7 backup" spiked as a search the moment 10.11 landed with its database overhaul.

Fair enough: the 10.11 migration rebuilt the server's internals onto a new database framework, it's one-way, and the users who could roll back were the users with a copy of the old data directory. Here's what to back up, the exact commands and the restore that proves your backup was real.

What needs backing up (and what doesn't)

Not the media. Your movies and music are the bulky part and the replaceable-from-source part; Jellyfin's irreplaceable state is small and lives in two places on a package install:

  • /var/lib/jellyfin, the data directory: the database (in data/jellyfin.db and friends), downloaded metadata and images, plugins and their configs. This is the one that matters. Users, watch history, library definitions, all of it lives here.
  • /etc/jellyfin, the config directory: networking settings, logging config, a handful of XML. Tiny, include it.

/var/cache/jellyfin is rebuildable cache (transcodes, image resizes); skipping it keeps backups dramatically smaller at zero cost. On Docker installs the split is simpler still: everything above lives inside whatever you mounted as /config and /cache, so the config volume is the backup target and the cache volume is the skippable one.

Stop the server first (the part guides skip)

Jellyfin's database is SQLite, and copying a SQLite file while the server writes to it produces a corrupt copy often enough to matter. A backup you can't restore is a rabbit's foot, so take the 60-second outage:

sudo systemctl stop jellyfin

Docker: docker compose stop jellyfin. Yes, hot-backup techniques for SQLite exist; for a service whose users can tolerate a minute of downtime at 4 AM, cold copy is the version with no asterisks.

The backup itself

sudo tar -czf jellyfin-backup-$(date +%F).tar.gz \
  /var/lib/jellyfin /etc/jellyfin
sudo systemctl start jellyfin

Docker equivalent, from the compose directory:

docker compose stop jellyfin
tar -czf jellyfin-backup-$(date +%F).tar.gz ./config
docker compose start jellyfin

A cautionary note on size: metadata images for a large library add up to gigabytes. That's normal, still worth including (re-fetching metadata for 2,000 movies takes hours and loses any manual fixes), and compresses reasonably.

Then get the archive off the machine. A backup on the same disk as the server shares the disk's fate; scp it to another box, object storage or at minimum a second volume. Cron the whole sequence weekly and you're ahead of ninety percent of self-hosters:

0 4 * * 1 systemctl stop jellyfin && tar -czf /backups/jellyfin-$(date +\%F).tar.gz /var/lib/jellyfin /etc/jellyfin && systemctl start jellyfin

(Root's crontab, and note the escaped % signs, cron eats bare ones.) Add a second line to prune archives older than a month or the backup disk becomes the next incident. On our Jellyfin VPS plans the lazier belt-and-suspenders option also exists: the panel's snapshot and auto-backup slot captures the whole server, this directory included, though I'd still keep the tar habit because restoring one app from a whole-server image is the long way around.

Restoring

The restore is the mirror image, plus one permissions step people miss:

sudo systemctl stop jellyfin
sudo tar -xzf jellyfin-backup-2026-07-13.tar.gz -C /
sudo chown -R jellyfin:jellyfin /var/lib/jellyfin /etc/jellyfin
sudo systemctl start jellyfin

The chown matters when restoring onto a rebuilt server, where the jellyfin user's numeric ID may differ from the old machine's; wrong ownership here produces a server that starts and then fails in odd ways. Restore onto the same Jellyfin version the backup came from, then upgrade; restoring a 10.10 data directory into a 10.11 server works via the migration, but doing both steps at once means an error tells you nothing about which step failed.

And test the restore once before you need it. Spin a throwaway VPS or container, restore into it, confirm the login and a library render, tear it down. Twenty minutes, and it converts your backup from a hope into a fact. This is also the honest dress rehearsal for upgrades: restore yesterday's backup to a scratch box, run the upgrade there, and the 10.11-style migrations lose their power to surprise you.

The upgrade-day routine

Which brings us back to the search that sent you here. Before any major Jellyfin version jump, the routine is: fresh backup, read the release notes for migration warnings, upgrade, and keep the old backup for a couple of weeks rather than deleting it the moment things look fine (migration issues have a habit of surfacing on the first library scan, not the first boot).

Downgrading across a migration without a backup ranges from painful to impossible, and 10.11's database rewrite made that concrete for a lot of people. With the tar file on another machine, the worst upgrade outcome becomes a ten-minute restore instead of a rebuild, and you get to be insufferably calm about it.

Fresh installs have their own guide in our Jellyfin VPS install walkthrough; pair it with a restore and you've got server migration covered too.

Your idea deserves better hosting

24/7 support 30-day money-back guarantee Cancel anytime
Billing Cycle

VPS.S1

£4.47 Save  17 %
£3.73 Monthly
  • 2 vCPU AMD EPYC
  • 2 GB RAMMEMORY
  • 30 GB NVMeSTORAGE
  • Unmetered bandwidth
  • IPv4 & IPv6IPv6 is currently unavailable in France, Finland or the Netherlands. included

VPS.S3

£11.20 Save  33 %
£7.46 Monthly
  • 4 vCPU AMD EPYC
  • 6 GB RAMMEMORY
  • 70 GB NVMeSTORAGE
  • Unmetered bandwidth
  • IPv4 & IPv6IPv6 is currently unavailable in France, Finland or the Netherlands. included

EPYC VPS.P1

£6.71 Save  22 %
£5.22 Monthly
  • 2 vCPU AMD EPYC
  • 4 GB RAMMEMORY
  • 40 GB NVMeSTORAGE
  • Unmetered bandwidth
  • IPv4 & IPv6IPv6 is currently unavailable in France, Finland or the Netherlands. included
  • Free auto backupsIncludes one backup slot you can set to run daily, weekly or monthly.

EPYC VPS.P2

£12.69 Save  24 %
£9.70 Monthly
  • 2 vCPU AMD EPYC
  • 8 GB RAMMEMORY
  • 80 GB NVMeSTORAGE
  • Unmetered bandwidth
  • IPv4 & IPv6IPv6 is currently unavailable in France, Finland or the Netherlands. included
  • Free auto backupsIncludes one backup slot you can set to run daily, weekly or monthly.

EPYC VPS.P4

£22.40 Save  23 %
£17.17 Monthly
  • 4 vCPU AMD EPYC
  • 16 GB RAMMEMORY
  • 160 GB NVMeSTORAGE
  • Unmetered bandwidth
  • IPv4 & IPv6IPv6 is currently unavailable in France, Finland or the Netherlands. included
  • Free auto backupsIncludes one backup slot you can set to run daily, weekly or monthly.

EPYC VPS.P5

£29.87 Save  25 %
£22.40 Monthly
  • 8 vCPU AMD EPYC
  • 16 GB RAMMEMORY
  • 180 GB NVMeSTORAGE
  • Unmetered bandwidth
  • IPv4 & IPv6IPv6 is currently unavailable in France, Finland or the Netherlands. included
  • Free auto backupsIncludes one backup slot you can set to run daily, weekly or monthly.

EPYC VPS.P6

£44.81 Save  25 %
£33.61 Monthly
  • 8 vCPU AMD EPYC
  • 32 GB RAMMEMORY
  • 200 GB NVMeSTORAGE
  • Unmetered bandwidth
  • IPv4 & IPv6IPv6 is currently unavailable in France, Finland or the Netherlands. included
  • Free auto backupsIncludes one backup slot you can set to run daily, weekly or monthly.

EPYC VPS.P7

£52.28 Save  29 %
£37.34 Monthly
  • 16 vCPU AMD EPYC
  • 32 GB RAMMEMORY
  • 240 GB NVMeSTORAGE
  • Unmetered bandwidth
  • IPv4 & IPv6IPv6 is currently unavailable in France, Finland or the Netherlands. included
  • Free auto backupsIncludes one backup slot you can set to run daily, weekly or monthly.

Genoa VPS.G2

£18.67 Save  20 %
£14.93 Monthly
  • 2 vCPUAMD EPYC Genoa 4th generation 9xx4 with 3.25 GHz or similar, on Zen 4 architecture. AMD EPYC G4
  • 4 GB DDR5MEMORY
  • 50 GB NVMeSTORAGE
  • Unmetered bandwidth
  • IPv4 & IPv6IPv6 is currently unavailable in France, Finland or the Netherlands. included
  • Free auto backupsIncludes one backup slot you can set to run daily, weekly or monthly.

Genoa VPS.G4

£33.60 Save  22 %
£26.14 Monthly
  • 4 vCPUAMD EPYC processor with dedicated vCPU cores, on enterprise server hardware. AMD EPYC G4
  • 8 GB DDR5MEMORY
  • 100 GB NVMeSTORAGE
  • Unmetered bandwidth
  • IPv4 & IPv6IPv6 is currently unavailable in France, Finland or the Netherlands. included
  • Free auto backupsIncludes one backup slot you can set to run daily, weekly or monthly.

Genoa VPS.G6

£67.22 Save  22 %
£52.28 Monthly
  • 8 vCPUAMD EPYC processor with dedicated vCPU cores, on enterprise server hardware. AMD EPYC G4
  • 16 GB DDR5MEMORY
  • 200 GB NVMeSTORAGE
  • Unmetered bandwidth
  • IPv4 & IPv6IPv6 is currently unavailable in France, Finland or the Netherlands. included
  • Free auto backupsIncludes one backup slot you can set to run daily, weekly or monthly.

Genoa VPS.G7

£119.50 Save  22 %
£93.36 Monthly
  • 8 vCPUAMD EPYC processor with dedicated vCPU cores, on enterprise server hardware. AMD EPYC G4
  • 32 GB DDR5MEMORY
  • 250 GB NVMeSTORAGE
  • Unmetered bandwidth
  • IPv4 & IPv6IPv6 is currently unavailable in France, Finland or the Netherlands. included
  • Free auto backupsIncludes one backup slot you can set to run daily, weekly or monthly.

AMD Ryzen VPS.R1

£12.69 Save  18 %
£10.45 Monthly
  • 1 dedicated CPU AMD Ryzen 9 7950X with 4.5 GHz or similar, on Zen 4 architecture. vCPU
  • 4 GB DDR5MEMORY
  • 50 GB NVMeSTORAGE
  • Unmetered bandwidth
  • IPv4 & IPv6 included IPv6 support is currently unavailable in France, Finland or the Netherlands.
  • Auto backup included

AMD Ryzen VPS.R2

£22.40 Save  17 %
£18.67 Monthly
  • 2 dedicated CPUs AMD Ryzen 9 7950X with 4.5 GHz or similar, on Zen 4 architecture. vCPU
  • 8 GB DDR5MEMORY
  • 100 GB NVMeSTORAGE
  • Unmetered bandwidth
  • IPv4 & IPv6 included IPv6 support is currently unavailable in France, Finland or the Netherlands.
  • Auto backup included

AMD Ryzen VPS.R4

£82.16 Save  18 %
£67.22 Monthly
  • 8 dedicated CPUs AMD Ryzen 9 7950X with 4.5 GHz or similar, on Zen 4 architecture. vCPU
  • 32 GB DDR5MEMORY
  • 400 GB NVMeSTORAGE
  • Unmetered bandwidth
  • IPv4 & IPv6 included IPv6 support is currently unavailable in France, Finland or the Netherlands.
  • Auto backup included

Frequent questions

Can I move my Jellyfin server to a new machine with this backup?

Yes, that's exactly the restore flow: install the same Jellyfin version on the new machine, stop it, restore the archive, fix ownership, start. Clients keep working after you point them at the new address; users, history and libraries travel in the data directory.

GPU products are in high demand at the moment. Fill the form to get notified as soon as your preferred GPU server is back in stock.