This guide explains how to setup streaming media server using Jellyfin in Linux. 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 packages are available for most popular Linux distributions, such as Arch Linux, Debian, CentOS, Fedora and Ubuntu.
Jellyfin is available in AUR. On Arch Linux and its derivatives like Antergos, Manjaro Linux, you can install Jellyfin using any AUR helper tools, for example YaY.
$ yay -S jellyfin
On CentOS/RHEL:
Download the latest Jellyfin rpm package from here and install it as shown below.
$ wget https://repo.jellyfin.org/releases/server/centos/stable/jellyfin-10.5.5-1.el7.x86_64.rpm
$ sudo yum localinstall jellyfin-10.5.5-1.el7.x86_64.rpm
On Fedora:
Download Jellyfin for Fedora from here.
$ wget https://repo.jellyfin.org/releases/server/fedora/jellyfin-10.5.5-1.fc31.x86_64.rpm
$ sudo dnf install jellyfin-10.5.5-1.fc31.x86_64.rpm
On Debian:
Install HTTPS transport for APT if it is not installed already:
$ sudo apt install apt-transport-https
Import Jellyfin GPG signing key:
$ wget -O - https://repo.jellyfin.org/debian/jellyfin_team.gpg.key | sudo apt-key add -
Add Jellyfin repository:
$ sudo touch /etc/apt/sources.list.d/jellyfin.list
$ echo "deb [arch=$( dpkg --print-architecture )] https://repo.jellyfin.org/debian $( lsb_release -c -s ) main" | sudo tee /etc/apt/sources.list.d/jellyfin.list
Finally, update Jellyfin repository and install Jellyfin using commands:
$ sudo apt update
$ sudo apt install jellyfin
On Ubuntu 20.04 LTS and older versions:
Install HTTPS transport for APT if it is not installed already:
$ sudo apt install apt-transport-https
Enable [Universe] repository:
$ sudo add-apt-repository universe
Import and add Jellyfin GPG signing key:
$ wget -O - https://repo.jellyfin.org/ubuntu/jellyfin_team.gpg.key | sudo apt-key add -
Add the Jellyfin repository:
$ sudo touch /etc/apt/sources.list.d/jellyfin.list
$ 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
Finally, update Jellyfin repository and install Jellyfin using commands:
$ sudo apt update
$ sudo apt install jellyfin
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 Wed 2020-06-10 06:34:32 UTC; 6min ago Main PID: 2893 (jellyfin) Tasks: 16 (limit: 2283) Memory: 76.8M CGroup: /system.slice/jellyfin.service └─2893 /usr/bin/jellyfin --restartpath=/usr/lib/jellyfin/restart.sh --ffmpeg=/usr/lib/jellyfin-ffmpeg/ffmpeg Jun 10 06:34:45 ubuntuserver jellyfin[2893]: [06:34:45] [INF] Registering publisher for urn:schemas-upnp-org:device:MediaServer:1 on 192.168.225.52 Jun 10 06:34:45 ubuntuserver jellyfin[2893]: [06:34:45] [INF] Registering publisher for urn:schemas-upnp-org:device:MediaServer:1 on 192.168.225.60 Jun 10 06:34:45 ubuntuserver jellyfin[2893]: [06:34:45] [INF] Registering publisher for urn:schemas-upnp-org:device:MediaServer:1 on 192.168.225.51 Jun 10 06:34:46 ubuntuserver jellyfin[2893]: [06:34:46] [INF] Executed all post-startup entry points in 0:00:01.0366093 Jun 10 06:34:46 ubuntuserver jellyfin[2893]: [06:34:46] [INF] Startup complete 0:00:12.7912482 Jun 10 06:34:47 ubuntuserver jellyfin[2893]: [06:34:47] [INF] StartupTrigger fired for task: Update Plugins Jun 10 06:34:47 ubuntuserver jellyfin[2893]: [06:34:47] [INF] Queueing task PluginUpdateTask Jun 10 06:34:47 ubuntuserver jellyfin[2893]: [06:34:47] [INF] Executing Update Plugins Jun 10 06:34:49 ubuntuserver jellyfin[2893]: [06:34:49] [INF] Update Plugins Completed after 0 minute(s) and 2 seconds Jun 10 06:34:49 ubuntuserver jellyfin[2893]: [06:34:49] [INF] ExecuteQueuedTasks
If you see an output something, congratulations! Jellyfin service has been started.
Next, we should do some initial configuration.
Setup Streaming Media Server Using Jellyfin In Linux
Once jellyfin is installed, open the browser and navigate to - http://<domain-name>:8096 or http://<IP-Address>:8096 URL.
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 everything to stream, 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. 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 of your choice and start watching 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.
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 Ubuntu 20.04 LTS server. 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 a definitely good choice.
Related read:
Resource:
Thanks for stopping by!
Help us to help you:
- Subscribe to our Email Newsletter : Sign Up Now
- Support OSTechNix : Donate Via PayPal
- Download free E-Books and Videos : OSTechNix on TradePub
- Connect with us: Reddit | Facebook | Twitter | LinkedIn | RSS feeds
Have a Good day!!
11 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