Updated by Linode Written by The Linux Gamer
Use promo code DOCS10 for $10 credit on a new account.
Jellyfin is an open source media library management and streaming platform, similar to Plex. This document will guide you through the process of installing and configuring Jellyfin on your Linode running Ubuntu 18.04.
In this guide you will complete the following:
Before you Begin
If you have not set up your Linode yet, check out our Getting Started guide and complete the steps for setting your Linode’s hostname and timezone.
Follow up with our Securing Your Server guide to create a standard user account with
Run the following command to upgrade your packages:
sudo apt-get update && sudo apt-get upgrade
NoteThis guide is written for a non-root user. Commands that require elevated privileges are prefixed with
sudo. If you’re not familiar with the
sudocommand, see the Users and Groups guide.
Install and enable HTTPS transport for APT:
sudo apt install apt-transport-https
Enable the Universe repository for all of the
sudo add-apt-repository universe
Import the GPG signing keys from the Jellyfin team:
wget -O - https://repo.jellyfin.org/ubuntu/jellyfin_team.gpg.key | sudo apt-key add -
Create a new file located at
sudo touch /etc/apt/sources.list.d/jellyfin.list
Add the Jellyfin
aptrepo to your Linode.
echo "deb [arch=$( dpkg --print-architecture )] https://repo.jellyfin.org/ubuntu $( lsb_release -c -s ) main" | sudo tee /etc/apt/sources.list.d/jellyfin.list
Current supported releases are
disco. Since we’re using Ubuntu 18.04,
The output, and the content of the
/etc/apt/sources.list.d/jellyfin.list, should look something like this:
deb [arch=amd64] https://repo.jellyfin.org/ubuntu bionic main
Finally, update your packages and install Jellyfin
sudo apt update && sudo apt install jellyfin
Now that Jellyfin is successfully installed, it needs to be configured and pointed to our media.
Setting up Jellyfin is done through the web interface. Before you can access the web interface, disconnect from SSH and create a secure tunnel via SSH from your local host to your Linode.
ssh [email protected] -L 8888:localhost:8096
sudo useron your Linode, and
192.0.2.1with your Linode’s IP address.
Open your browser and navigate to
http://localhost:8888/. You should now see the Jellyfin first-time configuration screen. Start by selecting your preferred language from the drop down menu. Then click the Next button to continue.
Create your user account and password. Then click the Next button to continue.
Now you’ll create the directories to store your media on your Linode. For example, if you want to have music and movies on your server, you would create a directory to store them by using the following command in your terminal:
cd ~/ sudo mkdir -p jellyfin-media/music && sudo mkdir jellyfin-media/movies
Back in your browser, now that your account is created, we can add your media. Click on the Add Media Library button to begin this process.
Each kind of content type provides a different set of options for you to configure, such as where you would like your metadata retrieved from, etc.
Content in Jellyfin is organized into Libraries. Libraries can have multiple directories from which they aggregate their media. You can specify directories using the Folders plus (+) button. Click the (+) button to add the folder you created earlier.
In the Folders field, enter the full path to your folder (
/home/username/jellyfin-media/movies) then click the Ok button.
You can add as many libraries as you’d like both now and later through your dashboard Click the blue Next button to proceed to the next sections.
Select your preferred metadata Language, then click on the Next button.
Disable port mapping by unchecking the Enable automatic port mapping option as this feature can pose a security risk in a cloud environment. Port Mapping is generally enabled in a local environment behind a home router, where you may want your Jellyfin server to be able to seamlessly connect to other devices.
Click the Next button. Your setup is now complete and you’ll be required to sign in as the user with the password you setup earlier.
Disable Unneeded Features (Recommended)
DLNA is a protocol that incorporates Universal Plug and Play (or UPnP) standards for digital media sharing across devices. As port
1900 will be openly available and any DLNA device or application can have full unrestricted access to your content, we recommend disabling DLNA if you won’t be using it.
Click the “hamburger” menu in the top left corner of Jellyfin, choose Dashboard, and on the left side of the screen choose DLNA, then disable and save your DLNA settings.
Add and Organize Media
You can add as many libraries as you’d like through the Dashboard under Libraries at any time.
Media can be added to individual folders from inside your Linode using various file transfer tools and download methods.
Once files in a folder are added to your Jellyfin server, they can be accessed from your Home Menu by clicking on the Home icon at top left of the page after selecting the hamburger menu.
Create a Reverse Proxy for Jellyfin
Jellyfin primarily works as a web frontend for your media. That means you’ll generally want to proxy the default Jellyfin websocket to requests. Jellyfin supports a large number of server software solutions for this purpose, though in this guide, the example will be Apache.
Install Apache with the following command:
sudo apt install apache2
Enable proxy settings for Apache with the following commands:
sudo a2enmod proxy sudo a2enmod proxy_http
Open a new virtual host file for your configuration. Replace “example.com” in this example with the domain name you’ll be using:
sudo nano /etc/apache2/sites-available/jellyfin.example.com.conf
Although nano is used in this example, feel free to use the text editor of your choice.
Use the following Apache virtual host configuration to create your reverse proxy. Replace
jellyfin.example.comwith your domain/subdomain.
1 2 3 4 5 6 7 8 9 10 11 12 13
<VirtualHost *:80> ServerName jellyfin.example.com ErrorLog /var/log/apache2/jellyfin-error.log CustomLog /var/log/apache2/jellyfin-access.log combined ProxyPreserveHost On ProxyPass "/embywebsocket" "ws://127.0.0.1:8096/embywebsocket" ProxyPassReverse "/embywebsocket" "ws://127.0.0.1:8096/embywebsocket" ProxyPass "/" "http://127.0.0.1:8096/" ProxyPassReverse "/" "http://127.0.0.1:8096/" </VirtualHost>
Enable your new website:
sudo a2ensite jellyfin.example.com.conf
Restart Apache to fully enable your settings:
sudo systemctl restart apache2
You may also want to set up SSL encryption for this virtual host. For more information regarding this configuration, see Jellyfin’s reverse proxy documentation
Find answers, ask questions, and help others.
This guide is published under a CC BY-ND 4.0 license.