To set up a home media server with Jellyfin on Ubuntu, you install the Jellyfin package, configure your media folders, and then access the web interface to manage your library. This guide walks through the entire process from prerequisites to playback, including common troubleshooting and alternatives.
What Is Jellyfin and Why Use It?
Jellyfin is a free, open-source media server that organizes your personal movies, TV shows, music, and photos, then streams them to any device with a browser or the Jellyfin app. Unlike commercial services like Plex or Emby, Jellyfin has no paid tier, no account requirement, and no phone-home telemetry—everything runs on your own hardware. Because it’s open source, you can self-host it indefinitely without subscription fees, and you retain full control over your media and user accounts.
For Ubuntu users, Jellyfin is a natural fit because Ubuntu is a stable, widely supported Linux distribution, and Jellyfin provides official repositories for easy installation and updates. Whether you’re repurposing an old PC or using a dedicated server, Jellyfin turns it into a private Netflix-like service for your own files.
Prerequisites: What You Need Before Installing
Before you begin, make sure you have:
- An Ubuntu system (20.04 LTS or newer; 22.04 and 24.04 LTS are well-tested).
- At least 2 GB of RAM (4 GB recommended for transcoding).
- Enough storage for your media—external USB drives work fine.
- Root or sudo access to install packages.
- A stable network connection for downloading packages and streaming.
You don’t need a powerful GPU unless you plan to transcode 4K video. For direct playback of common formats (H.264, AAC, MP4), a modest CPU is sufficient.
Step-by-Step Installation on Ubuntu
Jellyfin provides an official APT repository, which makes installation and updates straightforward. Here are the steps:
- Add the repository: Open a terminal and run the following commands to import the GPG key and add the repository:
sudo apt install curl curl -fsSL https://repo.jellyfin.org/ubuntu/jellyfin_team.gpg.key | sudo gpg --dearmor -o /etc/apt/trusted.gpg.d/jellyfin.gpg echo "deb [signed-by=/etc/apt/trusted.gpg.d/jellyfin.gpg] https://repo.jellyfin.org/ubuntu $(lsb_release -cs) main" | sudo tee /etc/apt/sources.list.d/jellyfin.list - Update and install:
sudo apt update sudo apt install jellyfinThis installs the server, the web interface, and the FFmpeg transcoder.
- Start the service: Jellyfin runs as a systemd service. It should start automatically, but you can enable it with:
sudo systemctl enable --now jellyfin - Access the web interface: Open a browser and go to
http://your-server-ip:8096. The first-run wizard will guide you through setting up an admin account and adding your media libraries.
If you prefer a manual install, you can download the .deb package from the official website and install it with sudo dpkg -i jellyfin_*.deb, but the repository method is easier for updates.
Configuring Media Libraries and Folders
After the initial setup, you need to tell Jellyfin where your media files live. In the dashboard, go to Libraries and click Add Media Library. Choose a content type (Movies, Shows, Music, etc.), give it a name, and add the folder path, e.g., /home/yourname/Videos/Movies.
For best results, organize your files in a consistent structure:
- Movies:
/Movies/Movie Name (Year)/Movie Name (Year).mkv - TV Shows:
/TV Shows/Show Name/Season 01/Show Name S01E01.mkv - Music:
/Music/Artist/Album/Track Number - Title.mp3
Jellyfin automatically fetches metadata (posters, descriptions, subtitles) from online databases like TheMovieDB. Ensure your media folders are readable by the Jellyfin user—you can run sudo chown -R jellyfin:jellyfin /path/to/media to fix permission issues.
Accessing Jellyfin Remotely and Securing It
By default, Jellyfin is only accessible on your local network. To stream from outside, you have several options:
- VPN: Set up a WireGuard or OpenVPN server on your Ubuntu machine and connect to it remotely. This is the most secure method.
- Reverse proxy: Use Nginx or Caddy with a domain name to expose Jellyfin over HTTPS. This requires port forwarding and a dynamic DNS service if your IP changes.
- Jellyfin’s built-in remote access: The server can attempt to open ports via UPnP, but this is not recommended due to security risks.
Always use HTTPS when exposing Jellyfin to the internet. You can obtain a free SSL certificate with Let’s Encrypt. Also, enable the option to require HTTPS in the Dashboard under Networking.
For local-only use, you can skip this entirely—just access it via http://localhost:8096 on the server itself.
Common Problems and How to Fix Them
Here are frequent issues and their solutions:
- Web interface doesn’t load: Check that the service is running with
sudo systemctl status jellyfin. If it’s not, start it withsudo systemctl start jellyfin. Also, ensure port 8096 is not blocked by a firewall (sudo ufw allow 8096). - Media files don’t appear: Verify the folder path is correct and the Jellyfin user has read permissions. Use
sudo -u jellyfin ls /path/to/mediato test. Also, click the refresh icon in the library to force a scan. - Playback stutters or buffers: This often happens when transcoding is required. In the Dashboard, under Playback, you can disable transcoding or set a lower transcode bitrate. For direct play, use clients that support your file’s codec (e.g., the Jellyfin app on a smart TV).
- Hardware acceleration not working: If you have an Intel GPU with Quick Sync, enable hardware acceleration in Dashboard > Playback > Transcoding. You may need to install the
intel-media-va-driverpackage for VAAPI support. - Can’t access from another device: Ensure the server’s firewall allows port 8096, and that the client is on the same network. For remote access, check your router’s port forwarding.
Jellyfin vs. Plex vs. Emby: Which Should You Choose?
Jellyfin is often compared to Plex and Emby. Here’s a quick breakdown:
- Jellyfin: Free, open-source, no account required, full control. Slightly less polished client apps, but constantly improving.
- Plex: Free basic server, but premium features (hardware transcoding, offline downloads) require a Plex Pass subscription. Requires a free Plex account and sends some data to Plex’s servers.
- Emby: Similar to Plex, with a free tier and a paid Premiere plan. Emby is the commercial ancestor of Jellyfin—Jellyfin is a fork of Emby 3.5.2.
If you value privacy and zero cost, Jellyfin is the best choice. If you want the most polished client apps and don’t mind the account, Plex may be easier for less technical users. Emby is a middle ground but is now largely overshadowed by Jellyfin.
Costs, Hardware, and Power Consumption
Jellyfin itself is free. The costs come from hardware and electricity. A Raspberry Pi 4 can handle direct playback of 1080p content for a few users, but for 4K or multiple simultaneous streams, you’ll need a more capable CPU (e.g., Intel Core i3 or better) and possibly a GPU for transcoding. An old desktop PC with a low-power CPU is a common choice.
Power consumption is a consideration if the server runs 24/7. A typical mini-PC draws 10-20 watts, which costs a few dollars per month. You can reduce this by using Wake-on-LAN or scheduling shutdowns when not in use.
Frequently Asked Questions
Can I install Jellyfin on Ubuntu without a terminal?
Yes, you can download the .deb file from the official website and install it with a graphical package manager like GDebi, but you’ll still need to access the web interface to configure it. The terminal method is recommended for easier updates.
How do I update Jellyfin on Ubuntu?
If you used the official repository, simply run sudo apt update && sudo apt upgrade. This will update Jellyfin along with other system packages. You can also check the Dashboard for update notifications.
Does Jellyfin support hardware transcoding on Ubuntu?
Yes, for Intel Quick Sync (VAAPI) and NVIDIA NVENC, but you must enable it in the Dashboard under Playback > Transcoding. You may need to install additional drivers (e.g., intel-media-va-driver for Intel).
Can I use Jellyfin with a remote server (VPS)?
Yes, but you need sufficient bandwidth and storage. A VPS with 1 Gbps network and 2+ GB RAM can work for a few users. Keep in mind that storage is usually limited, so it’s better for a small library.
How do I add subtitles to my media?
Jellyfin can automatically download subtitles if you enable the Open Subtitles plugin in the Dashboard under Plugins. You can also place subtitle files (.srt) next to your video files with the same name.
Is Jellyfin safe to expose to the internet?
It’s safe if you use HTTPS and keep the software updated. However, any internet-facing service adds risk. Using a VPN is the safest remote access method. Never expose Jellyfin without a reverse proxy and strong passwords.
Related
General steps for current mainstream versions; menus can differ by device and version. See the disclaimer or report an error.
More in this bed
- TV vs Computer Monitor: Key Differences
- Fix iOS 13 Camera Not Working: 9 Real Fixes
- How to Fix a Frozen PC: 9 Steps That Work
- iPhone GPS Not Working? Fixes That Actually Help
- How to Create 3D Photos on Facebook
- Show the Developer Tab in Word: Step-by-Step