Jellyfin on Ubuntu 24.04 with a USB Hard Drive: Bind Mount Setup That Works
Mount an NTFS USB drive by UUID, bind-mount your movies folder so Jellyfin still finds it after reboot, and optionally use ext4 on an empty Linux-only disk — without wiping family photos.
Lenovo ThinkCentre M720q · Ubuntu 24.04 LTS · Jellyfin (official package) · ~4TB USB HDD (NTFS) · tested Oct 2026
If a guide only says “plug in the drive and point Jellyfin at it,” that often breaks after a reboot. This walkthrough is the setup that survives a reboot: mount the USB drive by UUID with nofail, create a stable path with a bind mount, then point Jellyfin at that path.
Companion video: watch the full walkthrough below, or on YouTube.
Chapters
Why NTFS?
I already had this USB drive with family photos on it. It was formatted for Windows (NTFS), so I reused it instead of wiping it.
We kept it this way on purpose, because a lot of people starting out only have a Windows drive too.
Linux can read and write NTFS fine with ntfs-3g. The photos stay safe — we only add a new Media folder on the drive.
What you’ll build
Path the files take:
USB drive (NTFS) → /mnt/hdd → bind mount → /mnt/media/movies → Jellyfin
Same files. Two paths. Jellyfin only needs to know about /mnt/media/movies.
Prerequisites
- Ubuntu 24.04
- A USB hard drive with your movies (NTFS is fine)
- About 20 minutes
- A user that can run
sudo
Find and mount the USB drive
Plug in the drive, then list disks:
lsblk -f
Look for a large NTFS partition. In this example it is sdb2. Note the UUID — you’ll use it in fstab so the mount survives a reboot. Write it down or copy-paste; don’t guess.
Install NTFS support if needed:
sudo apt update
sudo apt install -y ntfs-3g
Create a mount point and mount once by hand to confirm:
sudo mkdir -p /mnt/hdd
sudo mount -t ntfs-3g /dev/sdb2 /mnt/hdd
ls /mnt/hdd
Make it permanent (fstab)
Edit /etc/fstab with care. Add one line using your UUID (example):
UUID=5C1A2B3C4D5E6F70 /mnt/hdd ntfs-3g defaults,nofail 0 0
nofailmeans the system still boots if the drive is unplugged.- Test, then confirm:
sudo mount -a
findmnt /mnt/hdd
Folder layout
sudo mkdir -p /mnt/hdd/Media/movies
sudo mkdir -p /mnt/media/movies
Keep Media with a capital M if that matches your drive layout. The bind mount only needs both paths to exist.
The bind mount
This is the key command:
sudo mount --bind /mnt/hdd/Media/movies /mnt/media/movies
sudo— run as adminmount— attach a folder or drive--bind— make one folder appear in another place- First path — where the movies are actually stored (USB)
- Second path — where Jellyfin looks
Confirm:
findmnt /mnt/media/movies
Add a second fstab line so the bind returns after reboot. Mount the drive first, then the bind (order matters):
/mnt/hdd/Media/movies /mnt/media/movies none bind,nofail 0 0
sudo mount -a
If Jellyfin saw an empty library after a reboot, this was usually the missing piece.
Option: drive just for Linux? Use ext4
lsblk.If the drive is empty and only for Linux, prefer ext4 — Linux’s native filesystem, with better permissions and reliability for a Linux-only server.
Confirm the right empty drive (example sdc1 — yours will differ):
lsblk -f
Then format, label, and check the UUID:
sudo mkfs.ext4 -L media /dev/sdc1
sudo blkid /dev/sdc1
Example fstab line:
UUID=a1b2c3d4-e5f6-7890-abcd-ef1234567890 /mnt/hdd ext4 defaults,nofail 0 2
After mounting, create folders and own them for Jellyfin as needed:
sudo mkdir -p /mnt/hdd/Media/movies
sudo chown -R jellyfin:jellyfin /mnt/hdd/Media
(On the NTFS path in this guide we own /mnt/media after the bind instead — see below.)
Install Jellyfin and permissions
Install Jellyfin from the official docs for Ubuntu 24.04 (apt lines change over time — check the current page):
https://jellyfin.org/docs/general/installation/linux/
After install, the service runs as the jellyfin user. That user must be able to read your movies folder.
id jellyfin
sudo chown -R jellyfin:jellyfin /mnt/media
ls -ld /mnt/media /mnt/media/movies
Or add jellyfin to a shared group if you prefer that model. Either way, Jellyfin needs read access through the bind mount.
Permissions are where most people get stuck. If the library is empty, check this first.
Add the library
- Open the Jellyfin dashboard in your browser.
- Add a media library.
- Point it at
/mnt/media/movies. - Scan the library.
- Play one file end to end.
If it plays, the bind mount and permissions are working.
Troubleshooting
| Symptom | What to check |
|---|---|
| Empty library after reboot | fstab lines + findmnt on both paths |
mount -a fails | Typo in the UUID |
| Permission denied | Ownership for the jellyfin user on /mnt/media |
| NTFS won’t mount | ntfs-3g installed? |
Most empty-library problems are fstab or permissions. Fix those before you reinstall anything.
Recap
- Mount the USB drive by UUID with
nofail. - Create both folder paths.
- Bind-mount the movies folder.
- Give the
jellyfinuser access. - Point Jellyfin at
/mnt/media/movies.
Gear used in this guide
- Lenovo ThinkCentre M720q Tiny (used) — [AFFILIATE LINK]
- Seagate Expansion / WD Elements ~4TB USB HDD — [AFFILIATE LINK]
- Optional empty Linux-only SSD (Samsung T7 / Crucial X9) — [AFFILIATE LINK]
- USB 3.0 cable/hub — [AFFILIATE LINK]
- Logitech MK270 / K400 Plus / Keychron — [AFFILIATE LINK]
- Ubuntu 24.04 LTS — free: ubuntu.com/download/desktop
Scripted with AI help, tested on my own gear.
Some links may be affiliate links. As an Amazon Associate I earn from qualifying purchases. See the Affiliate Disclosure.