Install Jellyfin Media Server on RHEL | Rocky | Alma | CentOS | Oracle Linux

Jellyfin is a free to use and open source media streaming server created to enable you build a powerful home media system. Jellyfin is a true alternative to the proprietary media streaming systems such Plex and Emby. With Jellyfin you can easily add and organize your media – Music, Movies, Books, Podcasts which can be accessed through a web interface from any place at any time. The media content can be accessed on mobile device, web browser or desktop application.

In this blog post you’ll learn to install and configure Jellyfin Media server on most of the RHEL-based Linux distributions for daily home media streaming operations. We assume you have a running RHEL-based Linux server ready for the installation. In the installation steps we’ll also capture the setup pre-requisites.

Step 1: Prepare the System

The first step will be to set SELinux in permissive mode by editing its configuration file using the commands below:

    sudo setenforce 0
    sudo sed -i 's/^SELINUX=.*/SELINUX=permissive/g' /etc/selinux/config

Then update your system packages and install required package dependencies:

sudo dnf upate -y
sudo dnf install -y dnf-utils device-mapper-persistent-data lvm2

Step 2: Install Docker CE

To install Docker on RHEL, run the following commands:

## Uninstall Older Versions
sudo dnf remove -y docker \
  docker-client \
  docker-client-latest \
  docker-common \
  docker-latest \
  docker-latest-logrotate \
  docker-logrotate \
  docker-engine

## Set up the Repository
sudo dnf -y install dnf-plugins-core
sudo dnf config-manager --add-repo https://download.docker.com/linux/rhel/docker-ce.repo

## Install the latest Docker Packages
sudo dnf install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin

## Starte the Docker Engine
sudo systemctl enable --now docker

## Add user to docker group
sudo usermod -aG docker $USER
sudo newgrp docker

To install Docker CE on CentOS Stream and all the other RHEL-based distributions, run the following commands:

## Unistall Older versions
sudo dnf remove docker \
  docker-client \
  docker-client-latest \
  docker-common \
  docker-latest \
  docker-latest-logrotate \
  docker-logrotate \
  docker-engine

## Set up the Repo
sudo dnf -y install dnf-plugins-core
sudo dnf config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo

## Install the Docker Packages
sudo dnf install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin

## Start Docker Engine
sudo systemctl enable --now docker

## Add user to docker group
sudo usermod -aG docker $USER
sudo newgrp docker

Step 3: Create Jellyfin Directory Structure

Choose a location to store Jellyfin configuration and media. A common approach is under /opt:

sudo mkdir -p /opt/jellyfin/{config,cache,media}
sudo chown -R $USER:$USER /opt/jellyfin

Place your movies, TV shows, and music inside the media directory.

Step 4: Create Docker Compose File

Create a docker-compose.yaml file inside the project directory:

cd /opt/jellyfin
sudo vim docker-compose.yaml

Place the following configurations inside the docker-compose.yaml file:

services:
  jellyfin:
    image: jellyfin/jellyfin
    container_name: jellyfin
    # Optional - specify the uid and gid you would like Jellyfin to use instead of root
    user: 1000:1000
    ports:
      - 8096:8096/tcp
      - 7359:7359/udp
    volumes:
      - ./config:/config
      - ./cache:/cache
      - type: bind
        source: ./media
        target: /media
    restart: 'unless-stopped'
    # Optional - alternative address used for autodiscovery
    environment:
      - TZ=Africa/Nairobi
    # Optional - may be necessary for docker healthcheck to pass if running in host network mode
    extra_hosts:
      - 'host.docker.internal:host-gateway'

Step 5: Start Jellyfin Media Server

To start the Jellyfin Media Server, run the following inside the directory that contains the docker-compose file:

docker compose up -d

Check the container status and the Jellyfin logs:

docker ps
docker logs jellyfin

Step 6: Allow Jellyfin through the firewall

If you have firewall enabled, you should allow connections to the server through the port 8096:

sudo firewall-cmd --permanent --add-port=8096/tcp
sudo firewall-cmd --permanent --add-port=8920/tcp  # Optional for HTTPS
sudo firewall-cmd --reload

Step 7: Configure Jellyfin Media Server

After installing Jellyfin Media server, launch your favorite web browser and browse to:

http://[serverIP_or_hostname]:8096

To start the configuration of Jellyfin Media server. Povide a Server Name and then click Next to continue.

You need to create a first account which will have Admin privileges for management purposes.

Setup your media library after admin user creation. Click Add Media Library and set media libraries for Music and Movies:

Set the content type in the next screen.

To allow for remote connections to your media server check the box like below under “Configure Remote Access” section.

Upon complete configurations of Jellyfin Media Server, click Finish and you’ll be redirected to the sign in page. Sign in with the user you created earlier:

You’ve successfully installed Jellyfin Media Server and initiated configurations to start streaming your media files from anywhere.

Happy Streaming with Jellyfin.

Join our Linux and open source community. Subscribe to our newsletter for tips, tricks, and collaboration opportunities!

Recent Post

Unlock the Right Solutions with Confidence

At CloudSpinx, we don’t just offer services - we deliver clarity, direction, and results. Whether you're navigating cloud adoption, scaling infrastructure, or solving DevOps challenges, our seasoned experts help you make smart, strategic decisions with total confidence. Let us turn complexity into opportunity and bring your vision to life.

Leave a Comment

Your email address will not be published. Required fields are marked *

Related Post

osTicket is a free and open-source commercial customer support ticketing system. It is a simple lightweight web-based application that allows […]

CiviCRM is a powerful, web-based constituent relationship management (CRM) system that allows organizations to record and manage all the information […]

Squid is free open-source software and a Web caching proxy that supports HTTP, HTTPS, FTP, and other protocols. By caching […]

Let's Connect

Unleash the full potential of your business with CloudSpinx. Our expert solutions specialists are standing by to answer your questions and tailor a plan that perfectly aligns with your unique needs.
You will get a response from our solutions specialist within 12 hours
We understand emergencies can be stressful. For immediate assistance, chat with us now

Contact CloudSpinx today!

Download CloudSpinx Profile

Discover the full spectrum of our expertise and services by downloading our detailed Company Profile. Simply enter your first name, last name, and email address.