Home Streaming media servers How To Setup Streaming Media Server Using Jellyfin In Linux

How To Setup Streaming Media Server Using Jellyfin In Linux

Install And Configure Jellyfin In Linux

By sk
35.8K views

This guide explains what is Jellyfin, how to install Jellyfin in Linux and how to setup streaming media server using Jellyfin in Linux.

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.

Jellyfin Welcome Screen
Jellyfin Welcome Screen

Create a new user for Jellyfin. You can add more users later from the Jellyfin Dashboard.

Create New User For Jellyfin
Create New User For Jellyfin

Net, choose the folders where you have saved the media files. To do so, click "Add Media Library" button:

Add Media Library In Jellyfin
Add Media Library In Jellyfin

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.

Choose Media Location In Jellyfin
Choose Media Location In Jellyfin

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.

Setup Your Media Libraries In Jellyfin
Setup Your Media Libraries In Jellyfin

Choose the Metadata language and click Next:

Select Metadata Language In Jellyfin
Select Metadata Language In Jellyfin

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:

Configure Remote Access To Jellyfin
Configure Remote Access To Jellyfin

You're all set! Click Finish to complete Jellyfin configuration.

Jellyfin Configuration Completed
Jellyfin Configuration Completed

You will now be redirected to Jellyfin login page.

Login To Jellyfin Web Dashboard

Enter the username and password which we created earlier.

Login To Jellyfin Dashboard
Login To Jellyfin Dashboard

This is how Jellyfin dashboard looks like.

Jellyfin Dashboard
Jellyfin Dashboard

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.

Playing Media In Jellyfin
Playing Media In Jellyfin

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.

Jellyfin Settings
Jellyfin 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:

You May Also Like

15 comments

ed peterson May 9, 2020 - 8:06 am

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!!!

Reply
Denis Sakac June 2, 2020 - 12:21 pm

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?

Reply
sk June 2, 2020 - 12:29 pm

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.

Reply
Mark June 10, 2020 - 9:47 am

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?

Reply
sk June 10, 2020 - 1:26 pm

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.

Reply
Sameer Chauhan June 20, 2020 - 12:36 am

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.

Reply
sk June 20, 2020 - 4:32 pm

May be you should create desktop shortcut for Jeyylfin URL and tell them to open it when they wanted to watch a movie.

Reply
Spuffler August 4, 2020 - 3:45 am

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.

Reply
Yvan October 9, 2020 - 3:14 am

Thanks, very interesting ! Is it also protecting the stream from being downloaded like on youtube or others with plugins ?
Thanks a lot

Reply
sk October 9, 2020 - 11:29 am

I don’t know. Please refer the official documentation.

Reply
Joe Zen December 7, 2020 - 10:21 am

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

Reply
Bob September 23, 2022 - 6:16 am

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).

Reply
sk September 26, 2022 - 3:32 pm

Thanks Bob. I have updated the installation steps for newer Debian and Ubuntu versions.

Reply
Paul January 5, 2023 - 7:21 pm

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

Reply
sk January 5, 2023 - 7:39 pm

Thanks for the heads up, Paul.

Reply

Leave a Comment

* By using this form you agree with the storage and handling of your data by this website.

This site uses Akismet to reduce spam. Learn how your comment data is processed.

This website uses cookies to improve your experience. By using this site, we will assume that you're OK with it. Accept Read More