This guide explains what is Jellyfin, how to install Jellyfin in Linux and how to setup streaming media server using Jellyfin in Linux.
Table of Contents
What Is Jellyfin?
Jellyfin is a free, cross-platform and open source alternative to propriety media streaming applications such as Emby and Plex.
The main developer of Jellyfin forked it from Emby after the announcement of Emby transitioning to a proprietary model.
Jellyfin doesn't include any premium features, licenses or membership plans. It is completely free and open source project supported by hundreds of community members.
Using jellyfin, we can instantly setup Linux media server in minutes and access it via LAN/WAN from any devices using multiple apps. Jellyfin supports GNU/Linux, Mac OS and Microsoft Windows operating systems.
Install Jellyfin On Linux
As of writing this guide, Jellyfin is packaged for most popular Linux distributions, such as Arch Linux, Debian, Fedora, CentOS, and Ubuntu.
Jellyfin is available in AUR. On Arch Linux and its derivatives like EndeavourOS, and Manjaro Linux, you can install Jellyfin using any AUR helper tools, for example Paru or YaY.
$ paru -S jellyfin
Or,
$ yay -S jellyfin
On Debian, Ubuntu, ElementaryOS, and Pop OS, run the following commands one by one to add Jellyfin repository and install Jellyfin media server:
$ sudo apt install curl gnupg
$ curl -fsSL https://repo.jellyfin.org/ubuntu/jellyfin_team.gpg.key | sudo gpg --dearmor -o /etc/apt/trusted.gpg.d/jellyfin.gpg
$ echo "deb [arch=$( dpkg --print-architecture )] https://repo.jellyfin.org/$( awk -F'=' '/^ID=/{ print $NF }' /etc/os-release ) $( awk -F'=' '/^VERSION_CODENAME=/{ print $NF }' /etc/os-release ) main" | sudo tee /etc/apt/sources.list.d/jellyfin.list
$ sudo apt update
$ sudo apt install jellyfin
On RHEL, CentOS, AlmaLinux, Rocky Linux:
First, you must install and enable RPM Fusion repository. The RPM fusion repository provides FFmpeg package, which is the main dependency of Jellyfin.
Download the latest Jellyfin server and web client rpm packages from here.
$ wget https://repo.jellyfin.org/releases/server/centos/stable/server/jellyfin-server-10.8.5-1.el7.x86_64.rpm
$ wget https://repo.jellyfin.org/releases/server/centos/stable/web/jellyfin-web-10.8.5-1.el7.noarch.rpm
The Jellyfin server package provides the core Jellyfin server, service definitions, and related items. And the Jellyfin web client package provides the WebUI for Jellyfin.
Install Jellyfin server and web client using commands:
$ sudo dnf localinstall jellyfin-server-10.8.5-1.el7.x86_64.rpm
$ sudo dnf localinstall jellyfin-web-10.8.5-1.el7.noarch.rpm
On Fedora:
Make sure you have installed and enabled RPM Fusion repository.
Download Jellyfin server and web client for Fedora from here.
$ wget https://repo.jellyfin.org/releases/server/fedora/stable/server/jellyfin-server-10.8.5-1.fc36.x86_64.rpm
$ wget https://repo.jellyfin.org/releases/server/fedora/stable/web/jellyfin-web-10.8.5-1.fc36.noarch.rpm
Install Jellyfin server and web client in Fedora using commands:
$ sudo dnf localinstall jellyfin-server-10.8.5-1.fc36.x86_64.rpm
$ sudo dnf localinstall jellyfin-web-10.8.5-1.fc36.noarch.rpm
Start Jellyfin Service
Run the following commands to enable and start jellyfin service on every reboot:
$ sudo systemctl enable jellyfin
$ sudo systemctl start jellyfin
To check if the service has been started or not, run:
$ sudo systemctl status jellyfin
Sample output:
● jellyfin.service - Jellyfin Media Server Loaded: loaded (/lib/systemd/system/jellyfin.service; enabled; vendor preset: enabled) Drop-In: /etc/systemd/system/jellyfin.service.d └─jellyfin.service.conf Active: active (running) since Mon 2022-09-26 15:04:20 IST; 9s ago Main PID: 3868 (jellyfin) Tasks: 19 (limit: 9468) Memory: 77.1M CPU: 2.466s CGroup: /system.slice/jellyfin.service └─3868 /usr/bin/jellyfin --webdir=/usr/share/jellyfin/web --restartpath=/usr/lib/jellyfin/restart.sh --ffmpeg=/usr/lib/jellyfin-ffmp> Sep 26 15:04:22 ubuntu2204 jellyfin[3868]: [15:04:22] [INF] ServerId: dced11e4e1e046f883a98103ba0193e1 Sep 26 15:04:22 ubuntu2204 jellyfin[3868]: [15:04:22] [INF] Executed all pre-startup entry points in 0:00:00.0502454 Sep 26 15:04:22 ubuntu2204 jellyfin[3868]: [15:04:22] [INF] Core startup complete Sep 26 15:04:22 ubuntu2204 jellyfin[3868]: [15:04:22] [INF] Executed all post-startup entry points in 0:00:00.0784174 Sep 26 15:04:22 ubuntu2204 jellyfin[3868]: [15:04:22] [INF] Startup complete 0:00:01.9103439 Sep 26 15:04:24 ubuntu2204 jellyfin[3868]: [15:04:24] [INF] StartupTrigger fired for task: Update Plugins Sep 26 15:04:24 ubuntu2204 jellyfin[3868]: [15:04:24] [INF] Queuing task PluginUpdateTask Sep 26 15:04:24 ubuntu2204 jellyfin[3868]: [15:04:24] [INF] Executing Update Plugins Sep 26 15:04:26 ubuntu2204 jellyfin[3868]: [15:04:26] [INF] Update Plugins Completed after 0 minute(s) and 1 seconds Sep 26 15:04:26 ubuntu2204 jellyfin[3868]: [15:04:26] [INF] ExecuteQueuedTasks
As you see in the above output, the Jellyfin service is loaded and running!
Next, we should do the initial configuration.
Setup Streaming Media Server With Jellyfin
Once Jellyfin is installed, open the browser and navigate to - http://<domain-name>:8096 or http://<IP-Address>:8096 URL.
Jellyfin Initial Configuration
You will see the Jellyfin welcome screen. Select your preferred language and click Next.
Create a new user for Jellyfin. You can add more users later from the Jellyfin Dashboard.
Net, choose the folders where you have saved the media files. To do so, click "Add Media Library" button:
Choose the content type (i.e. audio, video, movies etc.), enter display name and click plus (+) sign next to the Folders icon to choose the location where you kept your media files. You can further choose other library settings such as the preferred download language, country etc. Click OK after choosing the preferred options.
Similarly, add all of the media files. You can also create multiple media libraries by clicking on the "Add Media Library" button. Once you have chosen all media folders, click Next.
Choose the Metadata language and click Next:
Next, you need to configure whether you want to allow remote connections to this media server. Make sure you have allowed the remote connections. Also, enable automatic port mapping and click Next:
You're all set! Click Finish to complete Jellyfin configuration.
You will now be redirected to Jellyfin login page.
Login To Jellyfin Web Dashboard
Enter the username and password which we created earlier.
This is how Jellyfin dashboard looks like.
As you see in the screenshot, all of your media files are shown in the dashboard itself under My Media section. Just click on the any media file to play it.
You can access this Jellyfin media server from any systems or devices such as mobile phone, tablet pc, on the network using URL - http://ip-address:8096. You don't need to install any extra apps. All you need is a modern web browser.
If you want to change anything or reconfigure, click on the three horizontal bars from the Home screen. Here, you can add users, media files, change playback settings, add TV/DVR, install plugins, change default port no and a lot more settings.
For more details, check out Jellyfin official documentation page.
Conclusion
And, that's all for now. As you can see setting up a streaming media server on Linux is no big-deal. I tested it on my Debian 11 Bullseye, Ubuntu 22.04 and 20.04 LTS server editions. It worked just fine out of the box. I can be able to watch the movies from other systems and mobile devices in my LAN.
If you're looking for an easy, quick and free solution for hosting a media server, Jellyfin is definitely a good choice.
Resource:
15 comments
WOW!! Thanks so much! I have spent …days… attempting to find some player to add to a VM containing my music. Unfortunately, MOST of the install instruction and install scripts are very buggy, so I’ve had less than ~10% success rate. Over coffee this Am I found your page and decided to make another try, I’m very happy I did, this installed as you documented, and also ran as you detail in your instructions. I’m playing music + uploading my library as I’m sending this to you. The only thing left to do is add more users. GREAT JOB, THANKS!!!
Hi, nice tutorial…but my mkv files won’t play. My naming of files is ok and everything others sims ok…maybe you know what could be?
Does your mkv file play in media player like VLC or SMPlayer? Then you should check file permissions restriction in your media storage directory. This is probably due to permission issue.
I had an issue where some of my files that i setup in a Movie library weren’t discovered by Jellyfin. I had to change the ownership of the files so that they’d be found when Jellyfin scanned the library. Then i saw that changing file ownership in my home directory wasnt a good idea. The suggestion was to put my files in a directory off of the root. (Umbutu by the way). I made a directory off the root and moved a movie in there to test. When i tried adding this folder to my Jellyfin server via the add media button, when i go to save the setup, it never completes. Its like content off the root is allowed. Any idea?
Today I tested Jellyfin on my Ubuntu 20.04 LTS. I created a new media directory in my root (/) directory and I can able to play media files without any problems. I think your user doesn’t not have read permission for the media library folder. I believe it is permission issue.
Well, it’s not a new thing u can set-up a samba server on your system, but still, it is GREAT! by providing great skins and interactive UI.
I hope they soon make an app for it bcz my parents don’t know what a browser is and how to go to that specific site they can just open up an app and click on the movie they want to stream.
May be you should create desktop shortcut for Jeyylfin URL and tell them to open it when they wanted to watch a movie.
2020 08 03, current default fmpeg version installed from Ubuntu 18.04 repos is 3.4.8, but jellyfin wants >= 4.2.1-2. I found a ppa for ffmpeg 4.3.1, and installed that version but gdebi still finds a version mismatch for ffmpeg 4.3.1 and jellyfin 10.6.2-1 So, as of today, 2 errors to correct.
Thanks, very interesting ! Is it also protecting the stream from being downloaded like on youtube or others with plugins ?
Thanks a lot
I don’t know. Please refer the official documentation.
Thank you for the helpful tutorial. It was quick and easy and I really enjoy Jellyfin!
My movie collection is on an external drive, which was a problem until I ran “sudo mount -o bind /path/to/external/drive /path/to/local/Videos” These are example paths, of course.
Some of my older encodings won’t play audio, this can be worked around by lower the Quality, which forces a transcode that fixes the audio in most cases. I will likely use Handbrake to re-encode these files at a later time.
I hope my experience may help others find solutions to their problems.
Thanks again – Joe
This is a great writeup but it is outdated for Ubuntu 22.04 , as well as for Debian and earlier versions of ubuntu, mainly because apt-key is deprecated (with trusted.gpg.d suggested instead).
Thanks Bob. I have updated the installation steps for newer Debian and Ubuntu versions.
On fedora 37 one only has to ‘dnf install jellyfin-server|web’ from rpmfusion-free-updates – one does not have to download the rpm packages with wget- if you do so dnf gets confused about some incomptaible files
Thanks for the heads up, Paul.