FedoraRHEL Based

How To Install Jellyfin on Fedora 42

Install Jellyfin on Fedora 42

Jellyfin stands as a premier open-source media server solution that empowers users to take control of their digital media libraries. Unlike proprietary alternatives, Jellyfin offers complete freedom with no premium tiers, subscriptions, or hidden fees. With the release of Fedora 42, Linux enthusiasts have an excellent platform to host this powerful media server. This comprehensive guide walks you through every step of installing and configuring Jellyfin on Fedora 42, ensuring you can stream your media collection seamlessly across all your devices.

Prerequisites for Installing Jellyfin

Before diving into the installation process, ensure your Fedora 42 system meets the necessary requirements for running Jellyfin efficiently. A system with at least 2GB RAM and a modern multi-core processor is recommended for optimal performance. Storage requirements depend on your media library size, but sufficient space for the application itself is minimal.

First, update your Fedora 42 system to ensure you have the latest packages:

sudo dnf update

Jellyfin relies on several dependencies, with FFmpeg being the most critical for media transcoding capabilities. You’ll need to install this and other essential components before proceeding.

System Preparation Tips:

  • Ensure at least 1GB free RAM for transcoding operations
  • Back up your system using Timeshift or a similar utility
  • Verify internet connectivity for repository access
  • Consider creating a separate partition for media storage

Installation Methods Comparison

Jellyfin offers multiple installation approaches on Fedora 42, each with distinct advantages. Understanding these options helps you choose the method best suited to your needs and experience level.

  • Official Repository Method provides the most straightforward approach with direct updates from the Jellyfin team. This method ensures compatibility and is officially supported.
  • COPR Repository Installation may offer more frequent updates and additional architecture support like aarch64. This community-maintained approach can sometimes include optimizations specific to Fedora.
  • Container-Based Installation using Docker or Podman provides excellent isolation and portability, making it easier to migrate your setup between systems or perform clean upgrades without affecting your media library.

Each method has its merits, but the official repository approach offers the best balance of simplicity and stability for most users.

Method 1: Official Jellyfin Repository Installation

The official repository method provides the most reliable path to installing Jellyfin on Fedora 42. Follow these detailed steps for a smooth installation:

  1. First, add the official Jellyfin repository to your system:
sudo wget -O /etc/yum.repos.d/jellyfin.repo https://repo.jellyfin.org/releases/server/fedora/jellyfin-10.repo
sudo dnf update
  1. Install RPM Fusion repositories for FFmpeg dependency support:
sudo dnf install https://download1.rpmfusion.org/free/fedora/rpmfusion-free-release-$(rpm -E %fedora).noarch.rpm
sudo dnf install https://download1.rpmfusion.org/nonfree/fedora/rpmfusion-nonfree-release-$(rpm -E %fedora).noarch.rpm
  1. Install FFmpeg and other required dependencies:
sudo dnf install -y ffmpeg wget htop curl
  1. Install the Jellyfin server package:
sudo dnf install jellyfin

This command installs both the Jellyfin server and web client components. The installation process automatically creates a jellyfin user and configures the basic service files needed to run the media server.

  1. Verify the installation was successful:
rpm -qa | grep jellyfin

Method 2: COPR Repository Installation

COPR repositories offer an alternative installation method with potential benefits for specific architectures or use cases:

  1. Enable the leo3418/jellyfin COPR repository:
sudo dnf copr enable leo3418/jellyfin
  1. Install RPM Fusion for FFmpeg dependencies if not already installed:
sudo dnf install https://download1.rpmfusion.org/free/fedora/rpmfusion-free-release-$(rpm -E %fedora).noarch.rpm
  1. Install Jellyfin and its dependencies:
sudo dnf install jellyfin

The COPR method may be particularly beneficial for users with ARM-based systems, as some COPR repositories provide better support for architectures like aarch64. Check the specific COPR repository documentation for details about architecture support and update frequency.

Method 3: Container-Based Installation

Container deployment provides excellent isolation and simplifies future updates. For Fedora 42 users preferring containers, Podman is the recommended approach:

  1. Install Podman if not already available:
sudo dnf install podman podman-compose
  1. Create directories for storing Jellyfin configuration and media:
mkdir -p ~/jellyfin/config
mkdir -p ~/jellyfin/cache
mkdir -p ~/media
  1. Create a container deployment using podman-compose by creating a file named docker-compose.yml:
version: '3'
services:
  jellyfin:
    image: jellyfin/jellyfin:latest
    container_name: jellyfin
    user: 1000:1000
    network_mode: 'host'
    volumes:
      - ~/jellyfin/config:/config
      - ~/jellyfin/cache:/cache
      - ~/media:/media
    restart: 'unless-stopped'
  1. Launch the container:
podman-compose up -d

The containerized approach offers enhanced security through isolation and simplifies the upgrade process. However, hardware acceleration configuration may require additional steps compared to native installation.

Post-Installation Service Configuration

After installing Jellyfin, you’ll need to configure the service for automatic startup and proper operation.

  1. Start the Jellyfin service immediately:
sudo systemctl start jellyfin
  1. Enable the service to start automatically at system boot:
sudo systemctl enable jellyfin
  1. Verify the service is running correctly:
sudo systemctl status jellyfin

If you encounter issues with the service not starting properly, you might be experiencing SELinux-related problems that are common with media servers on Fedora. We’ll cover troubleshooting these issues in a dedicated section.

The default service file locations for Jellyfin on Fedora 42 are:

  • Service definition: /usr/lib/systemd/system/jellyfin.service
  • Default configuration: /etc/jellyfin/
  • Media and data: /var/lib/jellyfin/

Firewall Configuration

Fedora 42’s default firewall settings will block external access to Jellyfin. Configure the firewall to allow Jellyfin traffic:

  1. Allow the default Jellyfin port through the firewall:
sudo firewall-cmd --permanent --add-port=8096/tcp
  1. If you plan to use HTTPS, allow port 8920 as well:
sudo firewall-cmd --permanent --add-port=8920/tcp
  1. For DLNA functionality, allow UDP port 1900:
sudo firewall-cmd --permanent --add-port=1900/udp
  1. Apply the changes:
sudo firewall-cmd --reload
  1. Verify the new firewall rules:
sudo firewall-cmd --list-all

These firewall configurations ensure your Jellyfin server is accessible from other devices on your network while maintaining security.

Initial Jellyfin Setup

With Jellyfin installed and running, it’s time to perform the initial configuration:

  1. Open a web browser and navigate to http://localhost:8096 (or use your server’s IP address if accessing from another device).Install Jellyfin on Fedora 42
  2. You’ll be greeted by the Jellyfin setup wizard. First, choose your preferred display language.
  3. Create an administrator account with a secure password. This account will have full access to all Jellyfin settings and media.
  4. Set up your media libraries by clicking “Add Media Library” and follow these steps for each library:
    • Select the content type (Movies, TV Shows, Music, etc.)
    • Choose the folder containing your media files
    • Configure metadata fetchers and other options as preferred
    • Click “Add” to create the library
  5. Configure network settings according to your needs, including:
    • Remote access preferences
    • DLNA server settings
    • Device discovery options
  6. Review additional settings like transcoding options, users, and display preferences.

The initial setup process creates default libraries and configures metadata agents to fetch information about your media. Take time to explore the extensive customization options available through the web interface.

Advanced Configuration

For users seeking enhanced functionality and performance, several advanced configurations are worth exploring:

Hardware Acceleration Setup

Enable hardware transcoding to significantly improve performance:

  1. Navigate to Admin Dashboard > Playback > Transcoding
  2. Set “Hardware acceleration” to your GPU type (VAAPI for Intel, NVENC for NVIDIA, etc.)
  3. Ensure the required packages are installed:
# For Intel GPUs
sudo dnf install libva libva-intel-driver

# For NVIDIA GPUs
sudo dnf install cuda nvidia-driver-cuda

Custom Transcoding Parameters

  1. Under Advanced in the transcoding settings, adjust buffer size and thread counts
  2. For systems with limited resources, reduce the transcoding thread count
  3. Set appropriate temporary path to a fast storage location

Remote Access Configuration

  1. Configure port forwarding on your router (port 8096)
  2. Set up a reverse proxy with NGINX or Apache
  3. Implement HTTPS with Let’s Encrypt certificates
  4. Configure Jellyfin’s remote access settings in the web interface

File Permissions Management

Ensure Jellyfin can access your media files:

sudo usermod -aG your_user_group jellyfin
sudo chmod -R 755 /path/to/media

These advanced configurations enhance Jellyfin’s capabilities and provide a more tailored experience for your specific setup and requirements.

Troubleshooting Common Issues

Even with careful installation, you might encounter some issues. Here are solutions to common problems:

Service Fails to Start

If Jellyfin service fails to start, SELinux is often the culprit on Fedora systems. Try these solutions:

  1. Check the service status for specific errors:
sudo systemctl status jellyfin
journalctl -u jellyfin
  1. Create appropriate SELinux policy exceptions:
sudo ausearch -c 'jellyfin' --raw | audit2allow -M jellyfin
sudo semodule -i jellyfin.pp
  1. If necessary, temporarily disable SELinux to test if it’s causing the issue:
sudo setenforce 0

Remember to re-enable SELinux after testing:

sudo setenforce 1

Media Scanning Issues

If Jellyfin isn’t detecting your media:

  1. Verify file permissions allow the jellyfin user to read your media:
sudo -u jellyfin ls -la /path/to/media
  1. Check for compatible media formats and correct folder structure
  2. Manually trigger a library scan from the web interface

Network Access Problems

If you can’t access Jellyfin from other devices:

  1. Verify the server is running: systemctl status jellyfin
  2. Check firewall settings: sudo firewall-cmd --list-all
  3. Confirm network settings in the Jellyfin web interface
  4. Test local access first: curl http://localhost:8096

When troubleshooting, the Jellyfin logs located at /var/log/jellyfin/ offer valuable insight into issues and errors that may be occurring.

Maintenance and Updates

Proper maintenance ensures your Jellyfin server remains secure and performs optimally:

  1. Update Jellyfin regularly using your package manager:
sudo dnf update jellyfin
  1. Back up your Jellyfin configuration regularly:
sudo cp -r /etc/jellyfin /path/to/backup/location
sudo cp -r /var/lib/jellyfin/data /path/to/backup/location
  1. Monitor system resource usage:
htop
  1. Set up log rotation to prevent log files from growing too large:
sudo nano /etc/logrotate.d/jellyfin

Add the following configuration:

/var/log/jellyfin/*.log {
    weekly
    rotate 3
    compress
    missingok
    notifempty
}

Establishing a regular maintenance schedule helps prevent issues before they occur and ensures your media server continues to run smoothly.

Performance Optimization

Optimize your Jellyfin installation for better performance:

CPU and Memory Management

  1. Adjust the number of transcoding threads in the web interface based on your CPU capabilities
  2. Consider increasing system swap space for memory-intensive operations:
sudo dnf install zram-generator
sudo systemctl enable --now systemd-zram-setup@zram0.service

Storage Optimization

  1. Use fast storage (SSD) for the Jellyfin application and database
  2. Place large media libraries on separate, larger capacity drives
  3. Consider using XFS filesystem for media storage for better large file handling

Network Throughput

  1. Use wired connections where possible for server and client devices
  2. Configure QoS on your router to prioritize Jellyfin traffic
  3. For wireless clients, use 5GHz networks when available

These optimizations significantly improve both server responsiveness and streaming performance, especially when handling multiple simultaneous streams.

Mobile and TV Client Setup

Jellyfin’s ecosystem includes clients for various platforms:

Mobile Applications

  1. Android and iOS clients are available in their respective app stores
  2. Configure the client by entering your server address (e.g., http://server-ip:8096)
  3. Enable “Allow remote connections” in server settings for external access

Smart TV Integration

  1. Jellyfin clients are available for Android TV, Fire TV, and Roku
  2. Some smart TVs support Jellyfin through the built-in browser
  3. DLNA/UPnP can provide compatibility with older devices

Kodi Integration

  1. Install the Jellyfin for Kodi addon
  2. Configure server connection in the addon settings
  3. Enjoy the Kodi interface with your Jellyfin content

Having clients configured correctly ensures you can access your media from any device, maximizing the utility of your Jellyfin server.

Security Best Practices

Securing your Jellyfin server is crucial, especially if accessible from the internet:

  1. Implement strong password policies for all user accounts
  2. Set up a reverse proxy with HTTPS using Let’s Encrypt certificates:
sudo dnf install nginx certbot python3-certbot-nginx
  1. Limit failed login attempts by configuring fail2ban:
sudo dnf install fail2ban
  1. Keep your Fedora system updated with security patches:
sudo dnf upgrade --security
  1. Consider network segmentation to isolate your media server from critical systems
  2. Regularly audit user accounts and remove unused ones

Following these security practices significantly reduces the risk of unauthorized access and potential data breaches.

Useful Commands Reference

Service Management

sudo systemctl start jellyfin     # Start the service
sudo systemctl stop jellyfin      # Stop the service
sudo systemctl restart jellyfin   # Restart the service
sudo systemctl status jellyfin    # Check service status

Firewall Management

sudo firewall-cmd --add-port=8096/tcp --permanent   # Allow Jellyfin web interface
sudo firewall-cmd --reload                          # Apply firewall changes

Log Access

journalctl -u jellyfin                  # View jellyfin service logs
tail -f /var/log/jellyfin/jellyfin.log  # Follow the main jellyfin log

Troubleshooting

sudo -u jellyfin ls -la /path/to/media  # Test jellyfin access to media
ausearch -c 'jellyfin' --raw            # Search for SELinux issues

Congratulations! You have successfully installed Jellyfin. Thanks for using this tutorial for installing Jellyfin Media Server on your Fedora 42 Linux system. For additional help or useful information, we recommend you check the official Jellyfin website.

VPS Manage Service Offer
If you don’t have time to do all of this stuff, or if this is not your area of expertise, we offer a service to do “VPS Manage Service Offer”, starting from $10 (Paypal payment). Please contact us to get the best deal!

r00t

r00t is an experienced Linux enthusiast and technical writer with a passion for open-source software. With years of hands-on experience in various Linux distributions, r00t has developed a deep understanding of the Linux ecosystem and its powerful tools. He holds certifications in SCE and has contributed to several open-source projects. r00t is dedicated to sharing her knowledge and expertise through well-researched and informative articles, helping others navigate the world of Linux with confidence.
Back to top button