Jellyfin is the volunteer-built media solution that streams to any device from your own media server. In this guide, you will learn how to install Jellyfin Media Server on CentOS 8.
Table of Contents:
What is Jellyfin?:
Jellyfin is a suite of multimedia applications designed to organize, manage, and share digital media files to networked devices. Jellyfin consists of a server application installed on a machine running Microsoft Windows, macOS, Linux or in a Docker container, and another application running on a client device such as a smart phone, tablet, smart TV, streaming media player, game console or in a web browser. Jellyfin also can serve media to DLNA and Chromecast-enabled devices. It is a free and open-source software fork of Emby.
Jellyfin follows a client–server model that allows for multiple users and clients to connect, even simultaneously, and stream digital media remotely. A fully self-contained server, there is no subscription-based consumption model that exists, and Jellyfin does not utilize an external connection nor third-party authentication for any of its functionality. This enables Jellyfin to work on an isolated intranet in much the same fashion as it does over the Internet. Because it shares a heritage with Emby, some clients for that platform are unofficially compatible with Jellyfin, however as Jellyfin's code-base diverges from Emby, this becomes less possible. Jellyfin does not support a direct migration path from Emby. (Source: Wikipedia)
Jellyfin is open source and distributed under GPLv2 license. The source code is available at Jellyfin Github repository.
Environment Specification:
We are using a minimal CentOS 8 virtual machine with following specifications.
- CPU - 3.4 Ghz (2 cores)
- Memory - 4 GB
- Storage - 40 GB
- Operating System - CentOS 8.3
- Hostname – jellyfin-server.centlinux.com
- IP Address - 192.168.116.230 /24
Update Software Package in CentOS 8:
Connect with jellyfin-server.centlinux.com as root user by using a ssh client.
It is a best practice to always update your Linux server packages before installing a new software.
Use dnf command to update your Linux server as follows.
[root@jellyfin-server ~]# dnf update -y
Last metadata expiration check: 0:01:42 ago on Mon 04 Jan 2021 10:28:15 PM PKT.
Dependencies resolved.
Nothing to do.
Complete!
Our CentOS 8 server is already up-to-date. The output may vary on your Linux server.
Check the Linux operating system and Kernel versions, that are being used in this installation guide.
[root@jellyfin-server ~]# cat /etc/redhat-release
CentOS Linux release 8.3.2011
[root@jellyfin-server ~]# uname -r
4.18.0-240.1.1.el8_3.x86_64
Install EPEL yum Repository on CentOS 8:
Some of the software packages, that are required by Jellyfin media server, are not available in standard yum repositories.
Therefore, you are required to install EPEL (Extra Packages for Enterprise Linux) on your CentOS 8 server before installing Jellyfin software.
[root@jellyfin-server ~]# dnf install -y epel-release
Last metadata expiration check: 0:03:17 ago on Mon 04 Jan 2021 10:28:15 PM PKT.
Dependencies resolved.
================================================================================
Package Architecture Version Repository Size
================================================================================
Installing:
epel-release noarch 8-8.el8 extras 23 k
Transaction Summary
================================================================================
Install 1 Package
Total download size: 23 k
Installed size: 32 k
Downloading Packages:
epel-release-8-8.el8.noarch.rpm 13 kB/s | 23 kB 00:01
--------------------------------------------------------------------------------
Total 5.8 kB/s | 23 kB 00:03
Running transaction check
Transaction check succeeded.
Running transaction test
Transaction test succeeded.
Running transaction
Preparing : 1/1
Installing : epel-release-8-8.el8.noarch 1/1
Running scriptlet: epel-release-8-8.el8.noarch 1/1
Verifying : epel-release-8-8.el8.noarch 1/1
Installed:
epel-release-8-8.el8.noarch
Complete!
Install RPM Fusion Yum Repository on CentOS 8:
RPM Fusion repository provides add-on packages for Fedora and Red Hat based Linux distributions. It provides both free and commercial software packages.
Jellyfin media server requires some software packages from RPM Fusion repository, therefore you have to install it by executing following command at Linux bash prompt.
[root@jellyfin-server ~]# dnf install -y https://mirrors.rpmfusion.org/free/el/rpmfusion-free-release-8.noarch.rpm https://mirrors.rpmfusion.org/nonfree/el/rpmfusion-nonfree-release-8.noarch.rpm
Last metadata expiration check: 0:00:02 ago on Mon 04 Jan 2021 10:34:43 PM PKT.
rpmfusion-free-release-8.noarch.rpm 2.8 kB/s | 11 kB 00:03
rpmfusion-nonfree-release-8.noarch.rpm 2.5 kB/s | 11 kB 00:04
Dependencies resolved.
================================================================================
Package Arch Version Repository Size
================================================================================
Installing:
rpmfusion-free-release noarch 8-0.1 @commandline 11 k
rpmfusion-nonfree-release noarch 8-0.1 @commandline 11 k
Transaction Summary
================================================================================
Install 2 Packages
Total size: 22 k
Installed size: 7.6 k
Downloading Packages:
Running transaction check
Transaction check succeeded.
Running transaction test
Transaction test succeeded.
Running transaction
Preparing : 1/1
Installing : rpmfusion-free-release-8-0.1.noarch 1/2
Installing : rpmfusion-nonfree-release-8-0.1.noarch 2/2
Verifying : rpmfusion-free-release-8-0.1.noarch 1/2
Verifying : rpmfusion-nonfree-release-8-0.1.noarch 2/2
Installed:
rpmfusion-free-release-8-0.1.noarch rpmfusion-nonfree-release-8-0.1.noarch
Complete!
Enable PowerTools Yum Repository in CentOS 8:
PowerTools repository is not enabled by default in CentOS 8 operating system. However, there are some software that have dependencies in PowerTools yum repository.
Execute following Linux command, to enable PowerTools repository.
[root@jellyfin-server ~]# dnf config-manager --enable powertools
Build cache for newly installed yum repositories.
[root@jellyfin-server ~]# dnf makecache
CentOS Linux 8 - AppStream 2.3 kB/s | 4.3 kB 00:01
CentOS Linux 8 - BaseOS 5.3 kB/s | 3.9 kB 00:00
CentOS Linux 8 - Extras 1.2 kB/s | 1.5 kB 00:01
CentOS Linux 8 - PowerTools 6.1 kB/s | 4.3 kB 00:00
Extra Packages for Enterprise Linux Modular 8 - 5.7 kB/s | 9.1 kB 00:01
Extra Packages for Enterprise Linux 8 - x86_64 20 kB/s | 9.7 kB 00:00
RPM Fusion for EL 8 - Free - Updates 1.2 kB/s | 3.7 kB 00:02
RPM Fusion for EL 8 - Nonfree - Updates 1.9 kB/s | 3.7 kB 00:01
Metadata cache created.
Install Jellyfin Prerequisite Packages:
If you have correctly setup the third party yum repositories on your Linux server then you can install the Jellyfin prerequisite packages very easily.
Jellyfin media server requires Simple DirectMedia Layer (SDL), which is a cross-platform software development library designed to provide a hardware abstraction layer for computer multimedia hardware components.
SDL2 software is available in PowerTools yum repository, therefore execute dnf command and install it on your Linux server.
[root@jellyfin-server ~]# dnf install -y SDL2
Last metadata expiration check: 0:00:30 ago on Mon 04 Jan 2021 10:50:01 PM PKT.
Dependencies resolved.
================================================================================
Package Architecture Version Repository Size
================================================================================
Installing:
SDL2 x86_64 2.0.10-2.el8 powertools 465 k
Transaction Summary
================================================================================
Install 1 Package
Total download size: 465 k
Installed size: 1.3 M
Downloading Packages:
SDL2-2.0.10-2.el8.x86_64.rpm 94 kB/s | 465 kB 00:04
--------------------------------------------------------------------------------
Total 79 kB/s | 465 kB 00:05
Running transaction check
Transaction check succeeded.
Running transaction test
Transaction test succeeded.
Running transaction
Preparing : 1/1
Installing : SDL2-2.0.10-2.el8.x86_64 1/1
Running scriptlet: SDL2-2.0.10-2.el8.x86_64 1/1
Verifying : SDL2-2.0.10-2.el8.x86_64 1/1
Installed:
SDL2-2.0.10-2.el8.x86_64
Complete!
Jellyfin media server also requires ffmpeg software packages.
FFmpeg is a free and open-source software project consisting of a large suite of libraries and programs for handling video, audio, and other multimedia files and streams. At its core is the FFmpeg program itself, designed for command-line-based processing of video and audio files.
Install ffmpeg by using dnf command.
[root@jellyfin-server ~]# dnf install -y ffmpeg ffmpeg-devel
...
Installed:
alsa-lib-1.2.3.2-1.el8.x86_64
cairo-1.15.12-3.el8.x86_64
dejavu-fonts-common-2.35-6.el8.noarch
dejavu-sans-fonts-2.35-6.el8.noarch
ffmpeg-4.2.4-1.el8.x86_64
ffmpeg-devel-4.2.4-1.el8.x86_64
ffmpeg-libs-4.2.4-1.el8.x86_64
flac-libs-1.3.2-9.el8.x86_64
fontconfig-2.13.1-3.el8.x86_64
fontpackages-filesystem-1.44-22.el8.noarch
fribidi-1.0.4-8.el8.x86_64
gdk-pixbuf2-2.36.12-5.el8.x86_64
glibmm24-2.56.0-1.el8.x86_64
graphite2-1.3.10-10.el8.x86_64
gsm-1.0.17-5.el8.x86_64
harfbuzz-1.7.5-3.el8.x86_64
jack-audio-connection-kit-1.9.14-4.el8.x86_64
lame-libs-3.100-6.el8.x86_64
libICE-1.0.9-15.el8.x86_64
libSM-1.2.3-1.el8.x86_64
libX11-1.6.8-3.el8.x86_64
libX11-common-1.6.8-3.el8.noarch
libX11-xcb-1.6.8-3.el8.x86_64
libXau-1.0.9-3.el8.x86_64
libXdamage-1.1.4-14.el8.x86_64
libXext-1.3.4-1.el8.x86_64
libXfixes-5.0.3-7.el8.x86_64
libXft-2.3.3-1.el8.x86_64
libXi-1.7.10-1.el8.x86_64
libXrender-0.9.10-7.el8.x86_64
libXtst-1.2.3-7.el8.x86_64
libXxf86vm-1.1.4-9.el8.x86_64
libaom-1.0.0-8.20190810git9666276.el8.x86_64
libass-0.14.0-4.el8.x86_64
libasyncns-0.8-14.el8.x86_64
libatomic-8.3.1-5.1.el8.x86_64
libavdevice-4.2.4-1.el8.x86_64
libbluray-1.0.2-3.el8.x86_64
libcdio-2.0.0-3.el8.x86_64
libcdio-paranoia-10.2+0.94+2-3.el8.x86_64
libconfig-1.5-9.el8.x86_64
libdatrie-0.2.9-7.el8.x86_64
libdav1d-0.5.2-1.el8.x86_64
libffado-2.4.3-2.el8.x86_64
libglvnd-1:1.2.0-6.el8.x86_64
libglvnd-glx-1:1.2.0-6.el8.x86_64
libiec61883-1.2.0-18.el8.x86_64
libjpeg-turbo-1.5.3-10.el8.x86_64
libmfx-1.25-4.el8.x86_64
libmodplug-1:0.8.9.0-9.el8.x86_64
libogg-2:1.3.2-10.el8.x86_64
libraw1394-2.1.2-5.el8.x86_64
librsvg2-2.42.7-4.el8.x86_64
libsamplerate-0.1.9-1.el8.x86_64
libsigc++20-2.10.0-5.el8.x86_64
libsndfile-1.0.28-10.el8.x86_64
libthai-0.1.27-2.el8.x86_64
libtheora-1:1.1.1-21.el8.x86_64
libv4l-1.14.2-3.el8.x86_64
libva-2.5.0-2.el8.x86_64
libvdpau-1.4-2.el8.x86_64
libvmaf-1.3.15-2.el8.x86_64
libvorbis-1:1.3.6-2.el8.x86_64
libvpx-1.7.0-8.el8.x86_64
libwayland-client-1.17.0-1.el8.x86_64
libxcb-1.13.1-1.el8.x86_64
libxml++-2.40.1-10.el8.x86_64
libxshmfence-1.3-2.el8.x86_64
mesa-filesystem-20.1.4-1.el8.x86_64
mesa-libGL-20.1.4-1.el8.x86_64
mesa-libglapi-20.1.4-1.el8.x86_64
ocl-icd-2.2.12-1.el8.x86_64
openal-soft-1.18.2-7.el8.x86_64
opencore-amr-0.1.5-7.el8.x86_64
openjpeg2-2.3.1-6.el8.x86_64
opus-1.3-0.4.beta.el8.x86_64
pango-1.42.4-6.el8.x86_64
pixman-0.38.4-1.el8.x86_64
pugixml-1.11-1.el8.x86_64
pulseaudio-libs-13.99.1-1.el8.x86_64
soxr-0.1.3-4.el8.x86_64
speex-1.2.0-1.el8.x86_64
srt-libs-1.4.1-3.el8.x86_64
vapoursynth-libs-48-7.el8.x86_64
vid.stab-1.1.0-12.20190213gitaeabc8d.el8.x86_64
vo-amrwbenc-0.1.3-8.el8.x86_64
x264-libs-0.157-12.20190717git34c06d1.el8.x86_64
x265-libs-3.1.2-1.el8.x86_64
xvidcore-1.3.7-1.el8.x86_64
zimg-2.9.3-1.el8.x86_64
zvbi-0.2.35-9.el8.x86_64
Complete!
Install Jellyfin Media Server on CentOS 8:
Jellyfin is a free software, therefore you can download Jellyfin software from their official website.
By using wget command, download the Jellyfin server RPM on your Linux server.
[root@jellyfin-server ~]# wget https://repo.jellyfin.org/releases/server/centos/stable/server/jellyfin-server-10.7.0~rc2-1.el7.x86_64.rpm
--2021-01-04 23:03:08-- https://repo.jellyfin.org/releases/server/centos/stable/server/jellyfin-server-10.7.0~rc2-1.el7.x86_64.rpm
Resolving repo.jellyfin.org (repo.jellyfin.org)... 68.183.204.194, 2604:a880:cad:d0::cf3:f001
Connecting to repo.jellyfin.org (repo.jellyfin.org)|68.183.204.194|:443... connected.
HTTP request sent, awaiting response... 302 Found
Location: https://sgp1.mirror.jellyfin.org/releases/server/centos/versions/stable/server/10.7.0~rc2/jellyfin-server-10.7.0~rc2-1.el7.x86_64.rpm [following]
--2021-01-04 23:03:11-- https://sgp1.mirror.jellyfin.org/releases/server/centos/versions/stable/server/10.7.0~rc2/jellyfin-server-10.7.0~rc2-1.el7.x86_64.rpm
Resolving sgp1.mirror.jellyfin.org (sgp1.mirror.jellyfin.org)... 128.199.73.36, 2400:6180:0:d0::ecb:5001
Connecting to sgp1.mirror.jellyfin.org (sgp1.mirror.jellyfin.org)|128.199.73.36|:443... connected.
HTTP request sent, awaiting response... 200 OK
Length: 41886592 (40M) [application/x-redhat-package-manager]
Saving to: âjellyfin-server-10.7.0~rc2-1.el7.x86_64.rpmâ
jellyfin-server-10. 100%[===================>] 39.95M 185KB/s in 9m 16s
2021-01-04 23:12:28 (73.5 KB/s) - âjellyfin-server-10.7.0~rc2-1.el7.x86_64.rpmâ saved [41886592/41886592]
Similarly, download the Jellyfin web client package by using wget command. This package provides the Web UI for Jellyfin.
[root@jellyfin-server ~]# wget https://repo.jellyfin.org/releases/server/centos/stable/web/jellyfin-web-10.7.0~rc2-1.el7.noarch.rpm
--2021-01-04 23:14:21-- https://repo.jellyfin.org/releases/server/centos/stable/web/jellyfin-web-10.7.0~rc2-1.el7.noarch.rpm
Resolving repo.jellyfin.org (repo.jellyfin.org)... 68.183.204.194, 2604:a880:cad:d0::cf3:f001
Connecting to repo.jellyfin.org (repo.jellyfin.org)|68.183.204.194|:443... connected.
HTTP request sent, awaiting response... 302 Found
Location: https://sgp1.mirror.jellyfin.org/releases/server/centos/versions/stable/web/10.7.0~rc2/jellyfin-web-10.7.0~rc2-1.el7.noarch.rpm [following]
--2021-01-04 23:14:22-- https://sgp1.mirror.jellyfin.org/releases/server/centos/versions/stable/web/10.7.0~rc2/jellyfin-web-10.7.0~rc2-1.el7.noarch.rpm
Resolving sgp1.mirror.jellyfin.org (sgp1.mirror.jellyfin.org)... 128.199.73.36, 2400:6180:0:d0::ecb:5001
Connecting to sgp1.mirror.jellyfin.org (sgp1.mirror.jellyfin.org)|128.199.73.36|:443... connected.
HTTP request sent, awaiting response... 200 OK
Length: 36060156 (34M) [application/x-redhat-package-manager]
Saving to: âjellyfin-web-10.7.0~rc2-1.el7.noarch.rpmâ
jellyfin-web-10.7.0 100%[===================>] 34.39M 415KB/s in 8m 26s
2021-01-04 23:22:50 (69.5 KB/s) - âjellyfin-web-10.7.0~rc2-1.el7.noarch.rpmâ saved [36060156/36060156]
Install Jellyfin server package on your CentOS 8 operating system by using following dnf command.
[root@jellyfin-server ~]# dnf localinstall -y jellyfin-server-10.7.0~rc2-1.el7.x86_64.rpm
Last metadata expiration check: 0:34:26 ago on Mon 04 Jan 2021 10:50:01 PM PKT.
Dependencies resolved.
================================================================================
Package Arch Version Repository Size
================================================================================
Installing:
jellyfin-server x86_64 10.7.0~rc2-1.el7 @commandline 40 M
Installing dependencies:
at x86_64 3.1.20-11.el8 baseos 81 k
lttng-ust x86_64 2.8.1-11.el8 appstream 259 k
userspace-rcu x86_64 0.10.1-2.el8 baseos 101 k
Transaction Summary
================================================================================
Install 4 Packages
Total size: 40 M
Total download size: 442 k
Installed size: 127 M
Downloading Packages:
(1/3): userspace-rcu-0.10.1-2.el8.x86_64.rpm 66 kB/s | 101 kB 00:01
(2/3): at-3.1.20-11.el8.x86_64.rpm 50 kB/s | 81 kB 00:01
(3/3): lttng-ust-2.8.1-11.el8.x86_64.rpm 88 kB/s | 259 kB 00:02
--------------------------------------------------------------------------------
Total 95 kB/s | 442 kB 00:04
Running transaction check
Transaction check succeeded.
Running transaction test
Transaction test succeeded.
Running transaction
Preparing : 1/1
Installing : userspace-rcu-0.10.1-2.el8.x86_64 1/4
Running scriptlet: userspace-rcu-0.10.1-2.el8.x86_64 1/4
Installing : lttng-ust-2.8.1-11.el8.x86_64 2/4
Running scriptlet: lttng-ust-2.8.1-11.el8.x86_64 2/4
Installing : at-3.1.20-11.el8.x86_64 3/4
Running scriptlet: at-3.1.20-11.el8.x86_64 3/4
Running scriptlet: jellyfin-server-10.7.0~rc2-1.el7.x86_64 4/4
Installing : jellyfin-server-10.7.0~rc2-1.el7.x86_64 4/4
Running scriptlet: jellyfin-server-10.7.0~rc2-1.el7.x86_64 4/4
Verifying : lttng-ust-2.8.1-11.el8.x86_64 1/4
Verifying : at-3.1.20-11.el8.x86_64 2/4
Verifying : userspace-rcu-0.10.1-2.el8.x86_64 3/4
Verifying : jellyfin-server-10.7.0~rc2-1.el7.x86_64 4/4
Installed:
at-3.1.20-11.el8.x86_64 jellyfin-server-10.7.0~rc2-1.el7.x86_64
lttng-ust-2.8.1-11.el8.x86_64 userspace-rcu-0.10.1-2.el8.x86_64
Complete!
Similarly, install Jellyfin web package on your Linux server.
[root@jellyfin-server ~]# dnf localinstall -y jellyfin-web-10.7.0~rc2-1.el7.noarch.rpm
Last metadata expiration check: 0:35:41 ago on Mon 04 Jan 2021 10:50:01 PM PKT.
Dependencies resolved.
================================================================================
Package Arch Version Repository Size
================================================================================
Installing:
jellyfin-web noarch 10.7.0~rc2-1.el7 @commandline 34 M
Transaction Summary
================================================================================
Install 1 Package
Total size: 34 M
Installed size: 46 M
Downloading Packages:
Running transaction check
Transaction check succeeded.
Running transaction test
Transaction test succeeded.
Running transaction
Preparing : 1/1
Installing : jellyfin-web-10.7.0~rc2-1.el7.noarch 1/1
Verifying : jellyfin-web-10.7.0~rc2-1.el7.noarch 1/1
Installed:
jellyfin-web-10.7.0~rc2-1.el7.noarch
Complete!
Enable and start Jellyfin service.
[root@jellyfin-server ~]# systemctl enable --now jellyfin.service
Created symlink /etc/systemd/system/multi-user.target.wants/jellyfin.service â /usr/lib/systemd/system/jellyfin.service.
Verify the status of Jellyfin service.
[root@jellyfin-server ~]# systemctl status jellyfin.service
â jellyfin.service - Jellyfin is a free software media system that puts you in >
Loaded: loaded (/usr/lib/systemd/system/jellyfin.service; enabled; vendor pr>
Drop-In: /etc/systemd/system/jellyfin.service.d
ââoverride.conf
Active: active (running) since Mon 2021-01-04 23:26:30 PKT; 19s ago
Main PID: 10849 (jellyfin)
Tasks: 24 (limit: 12262)
Memory: 108.3M
CGroup: /system.slice/jellyfin.service
ââ10849 /usr/lib64/jellyfin/jellyfin --webdir=/usr/share/jellyfin-we>
Jan 04 23:26:35 jellyfin-server.centlinux.com jellyfin[10849]: [23:26:35] [INF]>
Jan 04 23:26:35 jellyfin-server.centlinux.com jellyfin[10849]: [23:26:35] [INF]>
Jan 04 23:26:35 jellyfin-server.centlinux.com jellyfin[10849]: [23:26:35] [INF]>
Jan 04 23:26:36 jellyfin-server.centlinux.com jellyfin[10849]: [23:26:36] [INF]>
Jan 04 23:26:36 jellyfin-server.centlinux.com jellyfin[10849]: [23:26:36] [INF]>
Jan 04 23:26:37 jellyfin-server.centlinux.com jellyfin[10849]: [23:26:37] [INF]>
Jan 04 23:26:37 jellyfin-server.centlinux.com jellyfin[10849]: [23:26:37] [INF]>
Jan 04 23:26:37 jellyfin-server.centlinux.com jellyfin[10849]: [23:26:37] [INF]>
Jan 04 23:26:44 jellyfin-server.centlinux.com jellyfin[10849]: [23:26:44] [INF]>
Jan 04 23:26:44 jellyfin-server.centlinux.com jellyfin[10849]: [23:26:44] [INF]>
Configure Linux Firewall for Jellyfin Media Server:
Jellyfin service listens on default port 8096/tcp.
To allow incoming traffic to your Jellyfin media server. You are required to allow the Jellyfin service port in Linux firewall.
[root@jellyfin-server ~]# firewall-cmd --permanent --add-port=8096/tcp
success
[root@jellyfin-server ~]# firewall-cmd --reload
success
Web Configuration of Jellyfin Media Server:
Open URL http://jellyfin-server.centlinux.com:8096 in a web browser.
Select your preferred display language and click on "Next".
Provide username/password to create a Jellyfin admin user. Click on "Next".
Add your required Media directories, We are adding three different type of media directories in our Jellyfin media server.
Click on "Next".
Choose Preferred Metadata Language and click on "Next".
Click on "Next".
Click on "Finish".
Click on "Sign In".
Click on a library to view the content therein.
Click on dashboard, to view the details about your Jellyfin media server.
The Jellyfin media server has been installed and configured on CentOS 8. If you have faced difficulty in understanding the above installation guide, then you may read CentOS 8 Essentials: Learn to install, administer and deploy CentOS 8 systems by Neil Smyth.
Conclusion:
In this guide, you have learned how to install Jellyfin media server on CentOS 8.
No comments:
Post a comment