Quick answer
What this guide helps you do
Set up and maintain Jellyfin on Ubuntu Server. Follow practical guides for installation, folder permissions, storage mounts, hardware transcoding, scanning and backups.
Jellyfin beginner path
New to Jellyfin? Follow this order.
These guides form the SmallGrid Jellyfin path: install it, fix folder access, solve empty libraries, reduce unnecessary transcoding, then choose the right mini PC.
Jellyfin runs well on Ubuntu Server, but most real-world problems are caused by the operating system around it rather than Jellyfin itself.
Typical issues include:
- Jellyfin cannot access a media folder
- a USB or data drive disappears after reboot
- new files do not appear in the library
- Docker volume mappings point to the wrong path
- playback unexpectedly transcodes
- hardware acceleration is enabled but not actually working
This hub organises the SmallGrid Jellyfin-on-Ubuntu guides into a practical order. Start with the section matching your current stage rather than changing several parts of the server at once.
Quick start
For a new Ubuntu Jellyfin server, use this order:
- Install and update Ubuntu Server.
- Give the server a stable IP address.
- Prepare and permanently mount the media storage.
- Install Jellyfin directly or through Docker.
- Give Jellyfin read and directory traversal access.
- Add the media libraries.
- Test one known-compatible file.
- Configure hardware transcoding only if it is required.
- Configure remote access safely.
- Back up configuration and deployment files.
Avoid converting a media library or replacing hardware until the dashboard shows why playback or scanning is failing.
For maintenance, keep an existing server on the newest stable Jellyfin 10.11.x patch after taking an offline backup. As of 13 August 2026, that is 10.11.11. Use How to Safely Update Jellyfin 10.11.x for the controlled update sequence, and treat Jellyfin 12 as a separate major migration.
1. Prepare Ubuntu Server
A stable server foundation prevents many later Jellyfin problems.
Recommended guides:
- How to Set a Static IP on Ubuntu Server with Netplan
- How to Find What Is Using Disk Space on Ubuntu Server
- How to Check Drive Health with SMART on Ubuntu Server
- How to Fix Permission Denied on Ubuntu Server
Before installing Jellyfin, confirm:
ip address
lsblk -f
df -h
Record the intended media path. Use the same host path consistently in Jellyfin, Docker Compose, backup scripts and troubleshooting notes.
2. Mount media storage permanently
Jellyfin cannot scan a drive that is not mounted where the application expects it.
Use UUID-based /etc/fstab mounts for local data drives instead of device names such as /dev/sdb1, which can change.
Recommended guides:
- How to Mount a Drive Automatically with fstab on Ubuntu Server
- Ubuntu Drive Disappears After Reboot: How to Fix It
- How to Give Docker Access to a USB Drive on Ubuntu Server
- Jellyfin Cannot Access an External USB Drive
Verify a mount before starting Jellyfin:
findmnt /path/to/media
ls -la /path/to/media
If the path exists but shows an empty directory after reboot, check the mount before changing Jellyfin library settings.
3. Give Jellyfin access to media folders
On Ubuntu, Jellyfin needs permission to traverse every parent directory and read the media files.
Start with:
- Jellyfin Ubuntu Folder Permissions: How to Give Access Safely
- Jellyfin Docker Permissions: Fix Media Folder Access
- Jellyfin Media Library Not Showing Files
Useful checks include:
id jellyfin
ls -ld /path /path/to /path/to/media
namei -l /path/to/media
For Docker, also confirm that the host path is mapped to the container path you selected in the Jellyfin library.
Example:
volumes:
- /srv/media/TV:/media/tv:ro
The Jellyfin library path must then use:
/media/tv
Do not use broad chmod 777 permissions as a permanent fix. Identify the required user, group and directory traversal permissions instead.
4. Fix libraries that do not scan
If Jellyfin opens normally but media is missing, work through the evidence in this order:
- Confirm the file exists on the Ubuntu host.
- Confirm the drive is mounted.
- Confirm Jellyfin can traverse the path.
- Confirm Docker can see the mapped path, where applicable.
- Confirm the Jellyfin library points to the correct path.
- Run a manual library scan.
- Check the Jellyfin logs.
Recommended guides:
- Jellyfin Media Library Not Showing Files
- Jellyfin Not Scanning New Files
- Jellyfin Files Disappear After Reboot
A library scan cannot repair an unavailable mount or inaccessible folder. Check the operating-system path first.
5. Understand Direct Play and transcoding
A healthy Jellyfin server does not need every file to Direct Play, but unnecessary video transcoding can increase CPU use, heat and power consumption.
Start with:
- Jellyfin Direct Play vs Transcoding
- Jellyfin Direct Stream vs Direct Play
- Best Video Format for Jellyfin Direct Play
- How to Check Why Jellyfin Is Transcoding
- Jellyfin Subtitles Causing Transcoding
While a problem file is playing, open the Jellyfin dashboard and record:
Playback mode:
Video codec:
Audio codec:
Subtitle format:
Client:
Local or remote:
Reported conversion reason:
Change one variable at a time. Disabling subtitles or selecting another audio track can identify the trigger without modifying the original file.
6. Configure hardware transcoding
Hardware acceleration is useful when transcoding is genuinely required. It is not a substitute for diagnosing an incompatible client, subtitle track or quality limit.
Use:
- Jellyfin Hardware Transcoding on Ubuntu
- Pass an Intel GPU Through to Jellyfin in Proxmox
- Best Mini PC Specs for Jellyfin
After configuration, confirm the active playback session and process are using the expected hardware path. A checked setting alone does not prove hardware acceleration is active.
7. Reduce power use
A low-power server should be measured at idle and during representative playback.
Use:
- Jellyfin on Ubuntu: Low-Power Setup
- Best Mini PC Specs for Jellyfin
- Best Video Format for Jellyfin Direct Play
The largest savings often come from:
- avoiding unnecessary software video transcoding
- using supported hardware acceleration
- choosing efficient client devices
- consolidating always-on services carefully
- using healthy, appropriate storage
- measuring before replacing hardware
8. Configure remote access safely
Do not expose Jellyfin directly to the public internet without understanding the security implications.
Recommended guides:
For a small private deployment, a mesh VPN such as Tailscale can be simpler than opening ports and maintaining a public reverse proxy.
Whichever method you use:
- keep Jellyfin and Ubuntu updated
- use strong unique passwords
- restrict administrative accounts
- review exposed ports
- back up configuration before upgrades
9. Back up the deployment
Back up the information needed to rebuild the server, not only the media itself.
For a Docker deployment, include:
- Compose files
.envfiles stored securely- Jellyfin configuration and database directories
- mount configuration
- reverse-proxy or VPN configuration
- a record of host paths and container paths
Use:
- How to Back Up and Restore Docker Compose Services
- How to Update Docker Containers Safely
- How to Move Docker Data to Another Drive Safely
Test restores periodically. An untested backup is only an assumption.
Troubleshooting decision tree
Jellyfin cannot see any files
Check:
Drive mounted?
Correct path?
Directory traversal permission?
Docker bind mount correct?
Library points to container path?
Existing files work but new files do not appear
Check:
New file ownership and permissions
Automatic scan settings
Manual scan result
Storage availability
Jellyfin logs
Playback uses high CPU
Check:
Direct Play, Direct Stream or Transcoding?
Video or audio conversion?
Subtitles enabled?
Quality limit below source bitrate?
Hardware acceleration active?
Media disappears after reboot
Check:
findmnt output
/etc/fstab UUID
mount timing
Docker startup order
library path consistency
Recommended reading order
For most new installations:
- How to Mount a Drive Automatically with fstab
- Jellyfin Ubuntu Folder Permissions
- Jellyfin Media Library Not Showing Files
- Jellyfin Direct Play vs Transcoding
- Best Video Format for Jellyfin Direct Play
- Jellyfin Hardware Transcoding on Ubuntu
- Jellyfin Remote Access Safely
Recap
A reliable Jellyfin Ubuntu server depends on four foundations:
- stable storage mounts
- correct folder permissions and paths
- evidence-led playback diagnosis
- safe maintenance and remote access
Use the linked specialist guides for the exact commands and tests. Keep paths consistent, change one variable at a time and verify the result before moving to the next fix.
Jellyfin guide cluster
More Jellyfin fixes and setup guides
These guides link the main Jellyfin setup, permissions, remote access, direct play, and hardware topics together.
Jellyfin 12 Upgrade Preparation: Backup, Plugins and Migration Checklist
Prepare a Jellyfin 10.10 or 10.11 server for Jellyfin 12. Check your version, create a restorable backup, audit plugins and plan the first startup safely.
Jellyfin on Ubuntu: Low-Power Setup, Media Folders and Reboot Checks
Build a reliable low-power Jellyfin server on Ubuntu. Install Jellyfin, mount storage, fix media access, favour Direct Play, measure power, and verify the server after reboot.
Give Jellyfin Access to Media Folders on Ubuntu
Fix Jellyfin permission denied errors on Ubuntu. Test the service user, find blocked parent folders, apply safe ACLs, verify inheritance, and check mounted-drive options.
Jellyfin Library Not Showing Files? 8 Checks That Fix It
Fix a Jellyfin library that is empty or missing media. Check mounts, Linux permissions, Docker paths, library folders, naming, scans and logs in the correct order.
Jellyfin Docker Permissions: Fix Media Folder Access and UID/GID Errors
Fix Jellyfin Docker permission denied errors. Check bind mounts, container paths, UID and GID values, read-only media access, active mounts, and file visibility step by step.
Jellyfin Direct Play vs Transcoding: CPU, Quality and Compatibility
Compare Jellyfin Direct Play, Direct Stream and transcoding. See CPU use, quality differences, common triggers and how to check the active playback mode.