Unlock the full power of your home entertainment—learn how to install Jellyfin on Rocky Linux 9 in just minutes! Don’t miss out on owning your personal streaming server—follow this step-by-step guide and start watching your favorite content your way, today! #centlinux #linux #jellyfin
Table of Contents
Introduction
What is Jellyfin?
Jellyfin is a free and open-source media server that lets you organize, manage, and stream your personal media collection across multiple devices. Imagine having your own Netflix-style library with your favorite movies, TV shows, music, and photos—all hosted securely on your own server. Unlike services like Plex or Emby, Jellyfin is completely free with no hidden subscription fees or proprietary limitations. That makes it a top choice for privacy-focused users and open-source enthusiasts.
One of Jellyfin’s biggest selling points is its community-driven development. It supports a wide range of media formats and comes packed with features such as user account management, metadata fetching, hardware transcoding, and plugin support. Whether you’re streaming to a smart TV, tablet, smartphone, or even a game console, Jellyfin ensures seamless media access across your network and beyond—with the right configuration.
Jellyfin’s web-based interface is intuitive and easy to use, allowing even beginners to get started quickly. You can also install Jellyfin apps on Android, iOS, Roku, and more. It works beautifully out-of-the-box, but also allows extensive customization to match your unique preferences and hardware capabilities.

Why Choose Rocky Linux 9?
Rocky Linux 9 is a powerful and stable enterprise-grade operating system that serves as a drop-in replacement for CentOS, which was discontinued as a downstream release. Maintained by the Rocky Enterprise Software Foundation, it’s widely trusted in production environments due to its robust performance, long-term support, and compatibility with Red Hat Enterprise Linux (RHEL).
For users setting up a media server, stability is everything. You don’t want your server going down or behaving unpredictably during a late-night movie binge. That’s where Rocky Linux shines. It provides consistent performance with a secure, SELinux-enabled foundation that’s perfect for hosting services like Jellyfin.
Moreover, its compatibility with major repositories and software packages, combined with a strong and growing community, makes Rocky Linux a smart choice for self-hosters. Whether you’re running it on a local machine, a dedicated server, or a cloud VPS, Rocky Linux offers the reliability and control needed to build the ultimate home media center.
Prerequisites to Install Jellyfin
System Requirements
Before diving into the installation, it’s crucial to check if your hardware and system environment meet Jellyfin’s minimum requirements. Fortunately, Jellyfin is quite lightweight and can run on modest systems, but for optimal performance—especially with transcoding or large media libraries—a more powerful setup is beneficial.
Here’s a quick look at the recommended requirements:
- CPU: Dual-core (minimum), quad-core or better for transcoding
- RAM: 2 GB minimum, 4 GB+ recommended for heavy use
- Storage: Depends on media size; SSD for the OS is ideal
- Operating System: Rocky Linux 9 (64-bit)
- Network: Gigabit LAN for local streaming; stable internet for remote access
You’ll also need:
- A regular user account with sudo privileges
- Root or administrative access
- A static IP address (optional but recommended)
- Media files ready to be imported into Jellyfin
Optional, but helpful:
- A GPU for hardware-accelerated transcoding (NVIDIA/Intel supported)
- Firewall access if you’re planning to stream externally
Preparing Your Rocky Linux System
Before installing Jellyfin, let’s prepare your system. Start by updating your package index and installed packages. Use the following command:
sudo dnf update -y
This ensures that your system is up to date and ready to support new software. You’ll also want to install a few basic packages that help during installation:
sudo dnf install -y wget curl nano epel-release
We also recommend disabling SELinux temporarily if you encounter issues during setup. You can check the current status with:
sestatus
And disable it (not recommended for production environments) by editing /etc/selinux/config
and setting:
SELINUX=permissive
After making these changes, reboot the system:
sudo reboot
Your Rocky Linux 9 system is now ready to install Jellyfin.
Recommended Training: Linux Administration: The Complete Linux Bootcamp in 2025 from Andrei Dumitrescu, Crystal Mind Academy

Install Jellyfin on Rocky Linux 9
Step 1 – Update System Packages
Keeping your system updated is the first and most important step before installing any new software. If your system packages are outdated, it can cause conflicts, compatibility issues, or even installation failures.
To update, run:
sudo dnf update -y
This will fetch the latest versions of all installed packages and dependencies from the configured repositories. It ensures security patches and performance updates are in place.
It’s a good habit to regularly update your server, not just for Jellyfin but for overall system health. Once done, it’s smart to reboot:
sudo reboot
This helps apply any kernel updates or important service changes.
Step 2 – Enable EPEL Repository
The EPEL (Extra Packages for Enterprise Linux) repository offers additional packages not included in the default Rocky Linux repos. Jellyfin requires some dependencies that are easier to manage through EPEL.
To enable EPEL, run:
sudo dnf install epel-release -y
After that, update the repository cache:
sudo dnf update -y
Once the EPEL repository is active, your system has access to a broader range of useful packages—especially helpful for media-related tools, codecs, and dependencies required by Jellyfin.
Acer USB C Docking Station Dual HDMI Monitor, Laptop Multiport Adapter with 4K HDMI, USB A&C 3.0 Ports, SD/Micro SD, 100W PD Charging, USBC Dock Compatible with Mac/Acer/Dell XPS/HP/Surface etc
$39.99 (as of May 15, 2025 16:15 GMT +00:00 – More infoProduct prices and availability are accurate as of the date/time indicated and are subject to change. Any price and availability information displayed on [relevant Amazon Site(s), as applicable] at the time of purchase will apply to the purchase of this product.)Step 3 – Add Jellyfin Repository
Now that your system is updated and the EPEL repository is enabled, the next step is to add the official Jellyfin repository. Since Jellyfin is not available in Rocky Linux’s default repositories, you’ll need to manually configure it.
First, import the GPG key used to verify the Jellyfin packages:
sudo rpm --import https://repo.jellyfin.org/jellyfin_team.gpg.key
Next, create a new repository file for Jellyfin:
sudo nano /etc/yum.repos.d/jellyfin.repo
Then paste the following contents into the file:
[jellyfin]
name=Jellyfin Repository
baseurl=https://repo.jellyfin.org/centos/9/server/stable/x86_64/
enabled=1
gpgcheck=1
gpgkey=https://repo.jellyfin.org/jellyfin_team.gpg.key
Save and close the file (in Nano, press CTRL+X
, then Y
, and hit Enter
).
This will enable access to the official Jellyfin repository, tailored for CentOS/RHEL-compatible systems like Rocky Linux 9. Run a quick update to refresh your package list with the new repo:
sudo dnf makecache
Now you’re all set to install Jellyfin from its official and most up-to-date source. This approach ensures you get the latest stable release and the ability to easily update your server when newer versions are released.
Step 4 – Install Jellyfin Media Server
With the repository added, the installation of Jellyfin itself is simple. Use the DNF package manager to download and install Jellyfin and all of its dependencies:
sudo dnf install jellyfin -y
This command will pull in the core server components, including the web dashboard and background services needed to manage your media library.
The installation usually takes just a few minutes depending on your system speed and network connection. Once done, you’ll have Jellyfin’s services installed in your system under standard directories such as:
/usr/lib/jellyfin/
– Core binaries and files/etc/jellyfin/
– Configuration files/var/lib/jellyfin/
– Media metadata and user data/var/log/jellyfin/
– Log files for debugging
You don’t need to modify any of these manually unless you’re troubleshooting or applying advanced customizations.
At this point, Jellyfin is installed but not yet running. Before launching it, let’s set it up as a service so it can run in the background and start automatically after reboots.
Read Also: How to install Jellyfin Server on CentOS 8
Step 5 – Start and Enable Jellyfin Service
To make Jellyfin operational, you need to start its systemd service. Use the following command:
sudo systemctl start jellyfin
To verify that Jellyfin is running:
sudo systemctl status jellyfin
You should see an active (running) status in green. If there’s an error, check the logs with:
sudo journalctl -u jellyfin
Next, enable Jellyfin to start at system boot:
sudo systemctl enable jellyfin
This step ensures your media server is always online, even after your server reboots or crashes.
If you ever need to restart Jellyfin:
sudo systemctl restart jellyfin
Now that Jellyfin is running in the background, it’s time to make sure your firewall settings allow external devices to access the server, especially if you’re planning to stream to other devices on your home network.
WolfLawS Wireless Gaming Headset for Xbox Series X|S, Xbox One, PS5, PC, Mac, Nintendo Switch, Bluetooth Over Ear Gaming Headphones with Noise Canceling Microphone, Surround Sound, Low Latency
$34.99 (as of May 15, 2025 16:15 GMT +00:00 – More infoProduct prices and availability are accurate as of the date/time indicated and are subject to change. Any price and availability information displayed on [relevant Amazon Site(s), as applicable] at the time of purchase will apply to the purchase of this product.)Configuring Firewall for Jellyfin
Open Required Ports
By default, Jellyfin uses port 8096 for HTTP access. If you’re planning to use HTTPS later, it also uses port 8920. To allow access to Jellyfin through your firewall, you’ll need to open these ports.
Use the firewalld
commands below:
sudo firewall-cmd --permanent --add-port=8096/tcp
sudo firewall-cmd --permanent --add-port=8920/tcp
sudo firewall-cmd --reload
These commands add the rules permanently and reload the firewall to apply changes. This ensures devices in your network can reach the Jellyfin server via the correct ports.
If you want to verify that the ports have been successfully opened, use:
sudo firewall-cmd --list-ports
You should see both 8096/tcp
and 8920/tcp
in the list.
It’s also a good idea to check your network IP using:
ip a
Look for your server’s IP address under the eth0
or ens
interface—something like 192.168.1.100
. You’ll use this IP to access the Jellyfin interface from a browser.
Once your firewall is configured, you’re ready to launch Jellyfin’s web UI and complete the initial setup wizard.
Verify Firewall Settings
Even though you’ve opened the necessary ports, it’s wise to confirm that the Jellyfin server is actually reachable from another device. Try accessing the web UI using a browser on another machine within the same network:
http://<your-server-ip>:8096
Replace <your-server-ip>
with your actual IP address.
If you see the Jellyfin setup screen, congrats! Everything’s working. If not, make sure:
- Your firewall ports are correctly set.
- Jellyfin is running.
- You’re using the correct IP address.
- No other service is using the same port (use
ss -tuln
to check open ports).
If needed, temporarily disable the firewall for testing (not recommended long-term):
sudo systemctl stop firewalld
Then refresh the browser. If it works, the firewall was blocking the connection—go back and double-check your rules.
Read Also: How to install FFmpeg on Rocky Linux 9
Accessing the Jellyfin Web Interface
First-Time Setup Wizard
Now that Jellyfin is running and your firewall is configured, it’s time to complete the initial setup. Open a web browser on any device connected to the same network and visit:
http://<your-server-ip>:8096
Replace <your-server-ip>
with the actual IP address of your Rocky Linux server. When the page loads, you’ll be greeted with Jellyfin’s sleek setup wizard.
The wizard walks you through essential configurations in a few simple steps:
- Language Selection – Pick your preferred language for the interface.
- Admin User Creation – Create the admin account you’ll use to manage the server.
- Set Password – Choose a strong password. Avoid weak ones, especially if you plan to open remote access.
- Media Library Setup – You’ll have the chance to add folders for movies, shows, music, and other media. You can skip this and do it later too.
- Metadata Preferences – Choose your metadata sources and language. These determine how Jellyfin fetches posters, titles, summaries, and more.
- Remote Access Settings – Decide if you want Jellyfin to allow remote connections.
After completing the wizard, click Finish. Jellyfin will load the admin dashboard where you can begin fine-tuning everything from libraries to plugins and streaming quality.
Remember, all these settings can be revisited and modified later from the dashboard. The setup process is designed to get you up and running quickly without overwhelming you with too many options.
Creating Your Admin Account
The admin account you create during setup is the cornerstone of your Jellyfin server. This account has full control: adding libraries, configuring metadata sources, setting user permissions, and more.
Here are a few tips when setting it up:
- Username: Choose something unique. Avoid common names like “admin” or “root” to reduce the risk of brute-force attacks.
- Password: Use a complex mix of letters, numbers, and special characters. For example:
Jf!n2025$Media
. - Email (optional): If you enable email notifications later, this field will come in handy for alerts and updates.
Once created, you can always go into Dashboard > Users to manage your account or add more users—ideal if you’re sharing the server with family or roommates. You can set different access levels for each user, including restricting access to certain libraries or features.
The admin account will also allow you to install plugins, configure scheduled tasks, monitor activity logs, and access debug tools. It’s your all-in-one control panel.
Don’t forget to log out and test the login with the new account credentials to ensure everything works as expected.
Post-Installation Configuration
Adding Media Libraries
Once Jellyfin is installed and set up, it’s time to do the fun part—adding your media! Media libraries are the backbone of Jellyfin. They let you organize movies, TV shows, music, audiobooks, photos, and more into structured, searchable collections.
To add a library:
- Navigate to the Dashboard from the left sidebar.
- Click on Libraries > Add Media Library.
- Choose a content type (Movies, TV Shows, Music, etc.).
- Set a display name like “My Movies” or “Family Music”.
- Browse to your media folder on the server using the folder picker.
Ensure your media is organized neatly. For example:
/mnt/media/Movies/Interstellar (2014)/Interstellar.mp4
/mnt/media/TVShows/Game of Thrones/Season 1/S01E01.mp4
/mnt/media/Music/Linkin Park/Hybrid Theory/01 - Papercut.mp3
You can also specify metadata settings, language preferences, and whether to enable real-time monitoring (Jellyfin watches the folder and updates the library automatically when files change).
Once added, Jellyfin will start scanning and organizing the content. This might take a few minutes, depending on your library size. You’ll see thumbnails, summaries, ratings, and more—thanks to metadata providers like The Movie Database (TMDb) and MusicBrainz.
Customizing Metadata and User Profiles
Metadata is the info that makes your media library shine—cover art, descriptions, cast lists, release dates, and even subtitles. Jellyfin pulls this data from online sources, but you have full control over how it’s managed.
To customize metadata settings:
- Go to Dashboard > Metadata.
- Choose your preferred sources for each media type.
- Decide whether to allow automatic updates or manual editing.
For example, if you have rare or non-mainstream content, you might want to disable auto-fetching and upload custom metadata files (.nfo
, .jpg
, etc.).
Beyond metadata, Jellyfin supports multiple user profiles—great if your server is shared. You can create guest or kid-friendly accounts, each with customized libraries, playback restrictions, and themes.
To create a new user:
- Go to Dashboard > Users > + Add User.
- Assign a username and password.
- Toggle access to certain libraries or server features.
- Set a parental control level, playback quality limit, or device restrictions.
You can even track watch history separately for each user. No more arguments over who watched the last episode or skipped ahead!
CompTIA Linux+ Practice Tests: Exam XK0-005
$27.28 (as of May 16, 2025 16:09 GMT +00:00 – More infoProduct prices and availability are accurate as of the date/time indicated and are subject to change. Any price and availability information displayed on [relevant Amazon Site(s), as applicable] at the time of purchase will apply to the purchase of this product.)Securing Your Jellyfin Server
Setting Up HTTPS with a Reverse Proxy
If you plan to access Jellyfin from outside your local network, security is essential. Exposing your media server to the internet without encryption could allow unauthorized access or interception of your data. To protect your Jellyfin server, one of the best practices is to use HTTPS via a reverse proxy with Nginx.
Here’s how to set it up:
- Install Nginx:
sudo dnf install nginx -y
- Install Certbot and the Nginx plugin for Let’s Encrypt SSL:
sudo dnf install certbot python3-certbot-nginx -y
- Configure a basic Nginx reverse proxy. Create a new configuration file:
sudo nano /etc/nginx/conf.d/jellyfin.conf
Paste the following (replace yourdomain.com
with your actual domain):
server {
listen 80;
server_name yourdomain.com;
location / {
proxy_pass http://localhost:8096;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
}
- Enable HTTPS using Certbot:
sudo certbot --nginx -d yourdomain.com
This sets up free SSL certificates from Let’s Encrypt and redirects HTTP to HTTPS automatically. With this, all connections to your Jellyfin server will be securely encrypted.
Always remember to renew your certificates regularly (Certbot does this automatically via cron). You can also enable a firewall rule to only allow port 443 and 80 for added protection.
Creating Secure User Accounts
User account security is crucial if you’re running Jellyfin in a shared household or over the internet. Weak passwords and open permissions are a hacker’s playground. To lock things down:
- Use strong passwords for every account.
- Avoid sharing accounts between users.
- Enable PIN or password protection for sensitive user profiles (especially admin).
- Limit library access—for example, don’t let kids browse your entire movie collection.
- Disable remote access for users who don’t need it.
Go to Dashboard > Users, and for each user, you can:
- Require password for access.
- Restrict what libraries they see.
- Set parental controls.
- Apply playback restrictions (e.g., max streaming quality).
You can even monitor user activity logs to see who watched what and when. Jellyfin gives you complete control and visibility over server usage, helping you catch issues before they become problems.
Managing Jellyfin Service
Starting, Stopping, and Restarting
Managing Jellyfin on Rocky Linux is simple thanks to systemctl
, which interacts with systemd services. Here are some essential commands:
- Start Jellyfin:
sudo systemctl start jellyfin
- Stop Jellyfin:
sudo systemctl stop jellyfin
- Restart Jellyfin:
sudo systemctl restart jellyfin
- Enable on boot:
sudo systemctl enable jellyfin
- Disable auto-start:
sudo systemctl disable jellyfin
If you encounter any weird issues, restarting the service often helps. If you’re automating updates or changing configs, restarting ensures everything takes effect.
Checking Logs and Troubleshooting
Logs are your best friends when Jellyfin isn’t acting right. If playback fails, metadata isn’t loading, or users can’t log in, logs will give you the answers.
To view logs:
sudo journalctl -u jellyfin -f
This gives a live feed of what’s going on. You can also check log files directly:
/var/log/jellyfin/
Common things to look for:
- Permission errors (Jellyfin can’t access media folders)
- Network binding issues (wrong IP/port config)
- Metadata scraping failures (connectivity or plugin issues)
Fixing most problems involves checking permissions, ensuring ports are open, or reconfiguring the libraries. And if you’re ever truly stuck, the Jellyfin GitHub and forums are a goldmine of help.
Frequently Asked Questions (FAQs)
Is Jellyfin Free to Use?
Yes! Jellyfin is 100% free and open-source, with no premium tiers, subscriptions, or locked features.
Can I Stream Media Outside My Network?
Absolutely. With proper HTTPS setup and port forwarding, you can stream remotely just like Netflix or Plex.
Does Jellyfin Support Live TV?
Yes, with compatible TV tuners and the Live TV plugin, Jellyfin can stream and even record live television.
What Devices Can Access Jellyfin?
Jellyfin supports web browsers, mobile apps (Android, iOS), smart TVs, Roku, Kodi, and more.
Is Jellyfin Better Than Plex?
That depends on your needs. If you value open-source software, privacy, and no fees—Jellyfin is the winner.
Conclusion
Install Jellyfin on Rocky Linux 9 isn’t just about spinning up another software—it’s about taking control of your digital entertainment, organizing your media your way, and doing it all without a subscription or cloud dependency. From setting up the base system and opening the right ports to configuring HTTPS and customizing libraries, every step we walked through builds a robust, secure, and enjoyable home streaming experience.
Whether you’re hosting family movie nights, streaming your music collection from anywhere, or building a Plex alternative out of sheer open-source love, Jellyfin delivers. And with Rocky Linux 9’s stability under the hood, your media server is set to run reliably for years to come.
The best part? You now have full ownership and privacy over your media. No more ads, no tracking, and no paying to unlock features you should already own.
Take some time to explore Jellyfin’s plugins, add-ons, and mobile apps next. And if you’re up for it, try integrating it with a smart home setup or remote access for streaming on the go.
Struggling with AWS or Linux server issues? I specialize in configuration, troubleshooting, and security to keep your systems performing at their best. Check out my Fiverr profile for details.
Leave a Reply
You must be logged in to post a comment.