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.

  1. Jellyfin on Ubuntu: Low-Power Setup, Media Folders and Reboot Checks
  2. Give Jellyfin Access to Media Folders on Ubuntu
  3. Jellyfin Library Not Showing Files? 8 Checks That Fix It
  4. Jellyfin Direct Play vs Transcoding: CPU, Quality and Compatibility
  5. Best Mini PC Specs for Jellyfin: What Actually Matters

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:

  1. Install and update Ubuntu Server.
  2. Give the server a stable IP address.
  3. Prepare and permanently mount the media storage.
  4. Install Jellyfin directly or through Docker.
  5. Give Jellyfin read and directory traversal access.
  6. Add the media libraries.
  7. Test one known-compatible file.
  8. Configure hardware transcoding only if it is required.
  9. Configure remote access safely.
  10. 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:

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:

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:

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:

  1. Confirm the file exists on the Ubuntu host.
  2. Confirm the drive is mounted.
  3. Confirm Jellyfin can traverse the path.
  4. Confirm Docker can see the mapped path, where applicable.
  5. Confirm the Jellyfin library points to the correct path.
  6. Run a manual library scan.
  7. Check the Jellyfin logs.

Recommended guides:

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:

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:

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:

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
  • .env files stored securely
  • Jellyfin configuration and database directories
  • mount configuration
  • reverse-proxy or VPN configuration
  • a record of host paths and container paths

Use:

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

For most new installations:

  1. How to Mount a Drive Automatically with fstab
  2. Jellyfin Ubuntu Folder Permissions
  3. Jellyfin Media Library Not Showing Files
  4. Jellyfin Direct Play vs Transcoding
  5. Best Video Format for Jellyfin Direct Play
  6. Jellyfin Hardware Transcoding on Ubuntu
  7. Jellyfin Remote Access Safely

Recap

A reliable Jellyfin Ubuntu server depends on four foundations:

  1. stable storage mounts
  2. correct folder permissions and paths
  3. evidence-led playback diagnosis
  4. 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.