8.2.20 Deploying the Jellyfin Media Server
Jellyfin is a free, open-source, cross-platform media server that allows you to create your own private streaming hub. With Jellyfin, you can store, organize, and stream videos, music, photos, and other media content without relying on third-party cloud services or paid subscriptions.
The application supports streaming to a wide range of devices — from smartphones and tablets to TVs and media players (via browser, dedicated apps, or protocols like DLNA). Jellyfin also allows you to create multiple user accounts, set access permissions, import metadata from online databases, automatically download cover art and subtitles, and extend functionality through plugins.
This guide will walk you through deploying Jellyfin on a server running Ubuntu and configuring convenient access to your media content.
Benefits for Users
- Free alternative to paid media servers
- High performance
- Easy to install and configure
- Wide support for devices and media formats
Server Preparation
Requirements
<$>[info]
[label Variables]
SERVER_IP
— your server’s IP addressUSER
— the server’s username <$>
Security
Configure firewall rules:
Warning: Ensure SSH port (22) is open before applying firewall rules.
UFW:
sudo ufw allow OpenSSH
sudo ufw allow 8096/tcp
sudo ufw enable
iptables:
sudo iptables -A INPUT -p tcp --dport 8096 -j ACCEPT
sudo iptables -A INPUT -p tcp --dport 22 -j ACCEPT
sudo iptables -P INPUT DROP
Installation Instructions
Update system packages:
sudo apt update && sudo apt upgrade -y
Install HTTPS transport and add the Jellyfin repository:
sudo apt install apt-transport-https curl gnupg -y
curl -fsSL https://repo.jellyfin.org/jellyfin_team.gpg.key | sudo gpg --dearmor -o /usr/share/keyrings/jellyfin.gpg
Add the Jellyfin repository:
echo "deb [arch=$( dpkg --print-architecture ) signed-by=/usr/share/keyrings/jellyfin.gpg] https://repo.jellyfin.org/ubuntu $(lsb_release -cs) main" | sudo tee /etc/apt/sources.list.d/jellyfin.list
Install Jellyfin:
sudo apt update && sudo apt install jellyfin -y
Enable and start Jellyfin:
sudo systemctl enable jellyfin
sudo systemctl start jellyfin
Jellyfin Configuration Overview
Most of Jellyfin’s configuration is done through the user-friendly web interface. After the initial launch, you’ll go through a basic setup wizard (language selection, user account creation, adding media libraries).
Once the initial setup is complete, you can access the administration dashboard, where advanced configuration options are available.
Examples of available sections:
-
Dashboard → Libraries Add new media libraries (e.g., movies, TV shows, music) from specific directories on the server.
-
Dashboard → Playback Configure streaming quality, bandwidth limits, and hardware acceleration (HW Transcoding).
-
Dashboard → Users & Access Manage user accounts, access levels, and parental controls.
-
Dashboard → Plugins Install and update plugins that extend the server’s functionality — for example, metadata importers, authentication providers, Trakt.tv integration, and more.
-
Dashboard → Networking Set up networking options, remote access, HTTPS, and proxy server settings.
Verifying the Installation
Check Jellyfin status:
sudo systemctl status jellyfin
Access the web interface: Open a browser and navigate to the following address, then follow the setup wizard:
http://SERVER_IP:8096
Common Errors
Error | Solution |
---|---|
Jellyfin web interface not accessible | Check firewall settings (port 8096 must be open); verify Jellyfin is running using sudo systemctl status jellyfin |
Repository addition error | Check for typos in commands and make sure required packages (apt-transport-https , gnupg ) are installed |
Jellyfin doesn’t start after reboot | Run sudo systemctl enable jellyfin to ensure the service starts automatically |
Official Documentation