Jellyfin is a powerful open-source media server that allows users to organize, manage, and stream their media collections while maintaining full control and customization. Unlike proprietary platforms, Jellyfin is entirely free with no premium tiers, making it a privacy-respecting choice for media enthusiasts. Its open-source nature aligns perfectly with Debian’s stability and security, making it a popular option for users on Debian 12 and 11.
This guide provides step-by-step instructions to help you install Jellyfin Media Server on Debian 12 and 11, ensuring you end up with a fully functional and personalized media server capable of live TV streaming, advanced metadata management, and multi-user profiles tailored to your needs.
Key Features of Jellyfin
Jellyfin provides a robust set of features that cater to media enthusiasts and privacy-conscious users alike:
- Completely Free and Open Source
Access every feature without premium tiers or subscription fees, ensuring everyone has equal access. - Cross-Platform Compatibility
Install Jellyfin on Linux, Windows, macOS, and NAS devices, providing flexibility for any setup. - Live TV and DVR Functionality
Stream live TV and schedule recordings directly through your server, turning it into a complete entertainment system. - Extensive Metadata Management
Automatically retrieve metadata for movies, TV shows, music, and more, enriching your browsing experience with detailed information. - Customization and Plugins
Personalize your server with a wide range of plugins and themes, tailoring it to your preferences. - Multi-User Profiles
Create unique profiles with personalized libraries and viewing histories, perfect for families or shared environments. - Remote Access
Securely stream your media from anywhere with internet access, keeping your library always within reach.
Refreshing Debian System Before Installation
Before installing Jellyfin, it’s essential to ensure your Debian system is fully updated. This minimizes compatibility issues and helps avoid conflicts during installation.
Step 1: Update System Packages
Begin by refreshing the package list and upgrading all installed packages. Open a terminal and run:
sudo apt update && sudo apt upgrade -y
sudo apt update
: Updates the package index with the latest version information from repositories.sudo apt upgrade -y
: Upgrades all installed packages to their latest available versions.
Keeping your system updated ensures you have the latest security patches and software improvements, creating a stable foundation for Jellyfin.
Step 2: Clean Unused Packages (Optional)
To optimize system performance and free up disk space, remove any unused packages and dependencies with the following command:
sudo apt autoremove -y
This command removes orphaned packages that are no longer required by the system, keeping your installation lean and efficient.
Installing Required Packages for Jellyfin Installation
To ensure a smooth Jellyfin installation, you need to install a few prerequisite packages. These packages enable secure downloads and repository management.
Step 1: Install Prerequisite Packages
Run the following command in the terminal to install the required tools:
sudo apt install software-properties-common apt-transport-https ca-certificates curl -y
What Each Package Does:
software-properties-common
: Adds tools for managing software sources on Debian.apt-transport-https
: Enables secure downloading of packages over HTTPS.ca-certificates
: Provides trusted SSL certificates required for secure communications.curl
: A command-line tool for fetching files from URLs.
These packages are essential for setting up and managing the Jellyfin repository securely.
Step 2: Verify Installation (Optional)
To confirm that the required packages are installed and functioning correctly, you can check the version of curl
:
curl --version
If version information is displayed, it indicates that curl
and other prerequisites were successfully installed. This step is optional but useful for troubleshooting or ensuring everything is working properly.
Importing the Jellyfin Repository and GPG Key
Since Jellyfin is not included in Debian’s default repositories, you need to add the official Jellyfin repository and import its GPG key to ensure secure installations.
Step 1: Import the GPG Key
The GPG key verifies the authenticity of the Jellyfin packages. Run the following command to import it:
curl -fsSL https://repo.jellyfin.org/debian/jellyfin_team.gpg.key | sudo gpg --dearmor -o /usr/share/keyrings/jellyfin.gpg > /dev/null
What the Command Does:
curl
: Fetches the GPG key from the Jellyfin repository.gpg --dearmor
: Converts the key into a format compatible with APT.- The key is stored in
/usr/share/keyrings
to securely verify the Jellyfin repository.
Step 2: Add the Jellyfin Repository
Next, add the Jellyfin repository to your system. You can choose between the stable or unstable branch depending on your requirements.
Stable Version (Recommended)
For a reliable and well-tested experience, add the stable repository:
echo "deb [arch=$( dpkg --print-architecture ) signed-by=/usr/share/keyrings/jellyfin.gpg] https://repo.jellyfin.org/debian $(lsb_release -cs) main" | sudo tee /etc/apt/sources.list.d/jellyfin.list
Unstable Version (Optional)
If you want early access to the latest features (which may not be fully tested), add the unstable repository:
echo "deb [arch=$( dpkg --print-architecture ) signed-by=/usr/share/keyrings/jellyfin.gpg] https://repo.jellyfin.org/debian $(lsb_release -cs) unstable" | sudo tee /etc/apt/sources.list.d/jellyfin.list
Step 3: Update the Package Index
Finally, refresh your system’s package index to recognize the newly added Jellyfin repository:
sudo apt update
This step ensures that your system can locate and install Jellyfin packages from the repository.
Installing Jellyfin Media Server
With the Jellyfin repository added, you can now proceed to install the Jellyfin Media Server on your Debian system.
Step 1: Install Jellyfin
Run the following command to install Jellyfin and its dependencies:
sudo apt install jellyfin jellyfin-ffmpeg7 jellyfin-server jellyfin-web
This command ensures all core components of Jellyfin are installed, including:
jellyfin
: The main server application.jellyfin-ffmpeg7
: A custom FFmpeg build for Jellyfin to handle transcoding tasks.jellyfin-server
: The backend server processes.jellyfin-web
: The frontend web interface.
Troubleshooting FFmpeg Installation
If jellyfin-ffmpeg7
is not available or doesn’t work, you can search for the latest compatible FFmpeg package provided by Jellyfin. Use the following command to locate available versions:
apt search jellyfin-ffmpeg
Review the list of available packages and note the version numbers. Then, replace jellyfin-ffmpeg7
in the installation command with the appropriate version, such as jellyfin-ffmpeg8
or any newer version:
sudo apt install jellyfin jellyfin-ffmpeg<latest-version> jellyfin-server jellyfin-web
Replace <latest-version>
with the actual version number listed in the output of the apt search
command.
Step 2: Verify Installation
Once installed, check the status of the Jellyfin service to ensure it’s running:
systemctl status jellyfin
Look for an Active: running status to confirm the service is operational.
Step 3: Enable Jellyfin on Boot
To ensure Jellyfin starts automatically when your system boots, enable the service with the following command:
sudo systemctl start jellyfin --now
At this juncture, the Jellyfin Media Server should be successfully installed and set to run automatically during system boot. You can now use Jellyfin to organize, manage, and stream your media content in a customized and efficient way.
Initial Setup of the Jellyfin Media Server
After installing Jellyfin, you can configure the server through its intuitive web interface. Follow these steps to complete the initial setup.
Step 1: Access the Jellyfin Web Interface
Open a web browser and navigate to the following URL:
http://<server-ip>:8096
- Replace
<server-ip>
with the IP address of your server. - If you’re accessing Jellyfin locally, use this URL instead:
http://127.0.0.1:8096
The default port for Jellyfin is 8096.
Step 2: Select Display Language
On the first setup screen, choose your preferred display language from the dropdown menu.
- Tip: Ensure the language matches your media metadata preferences for a unified experience.
Click Next to proceed.
Step 3: Create an Administrator Account
Create your admin account, which has full control over the Jellyfin server.
- Enter a username for the admin account.
- Set a strong password combining uppercase, lowercase, numbers, and symbols.
- Confirm the password.
Security Tip: Use a unique password to protect your media server.
Click Next to proceed.
Step 4: Configure Media Libraries
This step involves adding your media files to Jellyfin:
- Click Add Media Library.
- Select the media type (e.g., Movies, TV Shows, or Music).
- Provide the directory path where your media files are stored (e.g.,
/media/movies
). - Adjust additional settings, such as metadata language or folder scanning options.
Repeat these steps to add more media libraries.
Click Next once all libraries are configured.
Step 5: Configure Metadata Language
Specify your preferred metadata language. Metadata provides rich details for your media files, such as cast information, album artwork, and descriptions.
- Select your desired metadata language from the dropdown.
- Review and confirm other metadata preferences.
Click Next to proceed.
Step 6: Enable or Skip Remote Access
Decide whether to enable remote access to your Jellyfin server:
- Enable Remote Access: Allows you to stream media from anywhere with an internet connection.
- Turn on Automatic Port Mapping: Ensures external traffic routes correctly to your Jellyfin server.
If you don’t need remote access, leave these options disabled and click Next.
Step 7: Finalize Setup
Review the configuration summary on the final screen:
- Check that all settings, such as language, admin credentials, and media libraries, are correct.
- If everything looks good, click Finish to complete the setup.
You’ll be redirected to the Jellyfin login page.
Step 8: Log in to the Admin Dashboard
Log in to the Jellyfin server with your administrator credentials. The dashboard allows you to:
- Monitor server performance and activity.
- Manage media libraries and user accounts.
- Configure plugins and advanced settings.
Step 9: Logging into the Jellyfin Server
After the setup, it’s time to step into your media server. Navigate to the Jellyfin Web UI, and enter the username and password you set up during the initial configuration.
Hit the “Sign in” button and dive into your personal media world.
Step 10: Explore the Jellyfin Media Server Dashboard
The dashboard is your control center for managing the Jellyfin server. From here, you can:
- Add More Media Libraries:
Enrich your media server by adding new libraries. Go to Libraries and click + Add Media Library. - Manage User Accounts:
Create new user accounts or modify existing ones under Users. Assign specific permissions or viewing restrictions for different profiles. - Customize Settings:
Tailor your Jellyfin experience by adjusting settings such as themes, metadata preferences, and server options. Access these settings from the Dashboard tab. - Install Plugins:
Enhance your server’s functionality with plugins. Navigate to Plugins in the settings menu to browse and install plugins for themes, live TV, or additional metadata sources.
Troubleshooting: Resetting Jellyfin Media Server Initial Setup
If you encounter issues during the initial setup or need to restart the configuration process, you can reset the Jellyfin Media Server’s setup wizard by modifying its configuration file.
Step 1: Open the Configuration File
Use the nano
text editor to open the system.xml
file located in the Jellyfin configuration directory:
sudo nano /etc/jellyfin/system.xml
Step 2: Modify the Setup Wizard Setting
Inside the file, locate the line controlling whether the setup wizard is marked as complete. Update the value as follows:
- Find line:
<IsStartupWizardCompleted>true</IsStartupWizardCompleted>
- Change to:
<IsStartupWizardCompleted>false</IsStartupWizardCompleted>
This change resets the wizard, signaling that the initial setup is incomplete.
Step 3: Save and Exit the File
To save your changes in nano
:
- Press
CTRL + O
and thenENTER
to write the changes. - Press
CTRL + X
to exit the editor.
Step 4: Restart the Jellyfin Service
Apply the changes by restarting the Jellyfin service:
sudo systemctl restart jellyfin
Step 5: Access the Setup Wizard
Once the service restarts, open your web browser and navigate to:
http://<server-ip>:8096
Replace <server-ip>
with the IP address of your server. The setup wizard will reappear, allowing you to reconfigure the server from the beginning.
Setting Permissions for Jellyfin Media Drives
To ensure Jellyfin can access your media directories, you need to configure the appropriate permissions. This step allows Jellyfin to read and manage your media files effectively.
Step 1: Install the ACL Package
Jellyfin uses the Access Control List (ACL) system to set detailed file permissions. First, ensure the setfacl
command is available by installing the ACL package:
sudo apt install acl -y
This installs the necessary tools to configure advanced permissions.
Step 2: Grant Permissions to Jellyfin
Assign the required read and execute permissions to Jellyfin for your media directory. Replace /media/mymediadrive
with the actual path to your media files:
sudo setfacl -R -m u:jellyfin:rx /media/mymediadrive
-R
: Applies permissions recursively to all files and subdirectories.-m u:jellyfin:rx
: Grants thejellyfin
user read (r
) and execute (x
) permissions.
This ensures Jellyfin can access all content within the specified directory.
Step 3: Verify Permissions (Optional)
To confirm that the permissions were applied correctly, check the current ACL settings for your media directory:
getfacl /media/mymediadrive
The output should display the jellyfin
user with the rx
permissions.
Additional Permission Examples
Grant Access to Multiple Directories
If you need Jellyfin to access multiple media directories, list them all in a single command, separated by spaces:
sudo setfacl -m u:jellyfin:rx /media/movies /media/music /media/tvshows
Remove Access from a Directory
To revoke Jellyfin’s access to a specific directory, use the -x
flag:
sudo setfacl -x u:jellyfin /media/mymediadrive
This removes the jellyfin
user’s permissions for the specified directory.
Further Commands for Jellyfin Media Server
This section focuses on configuring Secure Shell (SSH) for remote access and ensuring secure management of your Jellyfin Media Server.
Setting Up SSH for Remote Access
SSH (Secure Shell) allows you to securely manage your Jellyfin server remotely, providing flexibility and security for administrators.
Install SSH Server for Jellyfin Access
To enable SSH on your Debian server, install the openssh-server
package by running the following command:
sudo apt install openssh-server
sudo
: Executes the command with superuser permissions.apt install
: Installs the specified package.openssh-server
: Provides the SSH server required for remote access.
Once installed, the SSH server will automatically start.
Connect to the Jellyfin Media Server via SSH
To remotely connect to your Jellyfin server and forward the necessary ports, use the following SSH command. Replace {server-ip-address}
with your server’s IP address:
ssh {server-ip-address} -L 8096:localhost:8096
ssh
: Initiates a secure connection to the remote server.-L 8096:localhost:8096
: Creates an SSH tunnel that forwards local port8096
to the Jellyfin server, enabling secure access through your browser.
Access Jellyfin via SSH Tunnel
Once the SSH tunnel is established, open a web browser on your local machine and navigate to:
http://localhost:8096/web/index.html#/wizardstart.html
This redirects HTTP requests to the Jellyfin server through the SSH tunnel.
Direct Access to Jellyfin
After the initial setup is complete, you can access your Jellyfin media server directly from a browser. Replace {server-ip-address}
with your server’s IP address:
https://{server-ip-address}:8096
This allows you to securely manage and stream your media library from any location with internet access.
Configuring the UFW Firewall for Jellyfin
The Uncomplicated Firewall (UFW) is a user-friendly tool for managing network traffic. Configuring UFW ensures that Jellyfin operates securely by allowing necessary connections while blocking unauthorized access.
Step 1: Install and Enable UFW
If UFW is not already installed on your Debian system, install it using the following command:
sudo apt install ufw
After installation, enable the firewall to start managing network traffic:
sudo ufw enable
This step ensures that UFW is actively protecting your system.
Step 2: Allow Incoming Traffic on Port 8096
By default, Jellyfin uses port 8096
for its web interface. To allow connections through this port, run the following command:
sudo ufw allow 8096
This rule enables Jellyfin to accept connections from your local network or the internet, depending on your setup. Be sure to configure your router or NAT settings if you plan to access Jellyfin remotely.
Configuring a Reverse Proxy for Jellyfin
Setting up a reverse proxy with Apache enhances Jellyfin’s accessibility and security. This configuration allows you to serve Jellyfin through a web server while enabling HTTPS for secure access.
Setting Up Apache as a Reverse Proxy
Step 1: Install Apache Web Server
Install Apache with the following command:
sudo apt install apache2 -y
If Apache doesn’t start automatically after installation, you can manually start it using:
sudo systemctl start apache2
Step 2: Enable Required Apache Modules
To handle reverse proxy traffic and WebSocket connections, enable the necessary Apache modules:
sudo a2enmod proxy proxy_http headers proxy_wstunnel
These modules are essential for proxy functionality and ensuring Jellyfin communicates properly with WebSocket-based features.
Step 3: Create a Virtual Host Configuration File
Create a new configuration file for Jellyfin by running:
sudo nano /etc/apache2/sites-available/jellyfin.conf
This command opens a blank configuration file for editing.
Step 4: Configure the Virtual Host with a Subdomain
To configure Jellyfin with a subdomain, you’ll need a domain name. Providers like NameCheap or Cloudflare can help you purchase and manage domains.
Add the following configuration to the jellyfin.conf
file, replacing jellyfin.example.com
with your actual domain name:
<VirtualHost *:80>
ServerName jellyfin.example.com
Redirect permanent / https://jellyfin.example.com
ErrorLog /var/log/apache2/jellyfin-error.log
CustomLog /var/log/apache2/jellyfin-access.log combined
</VirtualHost>
<IfModule mod_ssl.c>
<VirtualHost *:443>
ServerName jellyfin.example.com
DocumentRoot /var/www/html/jellyfin/public_html
ProxyPreserveHost On
ProxyPass "/socket" "ws://localhost:8096/socket"
ProxyPassReverse "/socket" "ws://localhost:8096/socket"
ProxyPass "/" "http://localhost:8096/"
ProxyPassReverse "/" "http://localhost:8096/"
SSLEngine on
SSLCertificateFile /etc/letsencrypt/live/jellyfin.example.com/fullchain.pem
SSLCertificateKeyFile /etc/letsencrypt/live/jellyfin.example.com/privkey.pem
Protocols h2 http/1.1
SSLCipherSuite HIGH:RC4-SHA:AES128-SHA:!aNULL:!MD5
SSLHonorCipherOrder on
SSLProtocol all -SSLv2 -SSLv3 -TLSv1 -TLSv1.1
ErrorLog /var/log/apache2/jellyfin-error.log
CustomLog /var/log/apache2/jellyfin-access.log combined
</VirtualHost>
</IfModule>
Save and exit the editor:
- Press
CTRL + O
, thenENTER
to save the changes. - Press
CTRL + X
to exit.
Step 5: Validate the Apache Configuration
Check for syntax errors in the configuration file by running:
sudo apache2ctl configtest
If the output shows Syntax OK
, the configuration is valid.
Step 6: Enable the Virtual Host
Enable the Jellyfin configuration by running:
sudo a2ensite jellyfin.conf
This activates the configuration, allowing Apache to serve Jellyfin.
Step 7: Restart Apache
Restart Apache to apply the changes:
sudo systemctl restart apache2
Jellyfin is now accessible via your configured subdomain. Use your browser to navigate to https://jellyfin.example.com
to test the setup.
Setting Up Nginx as a Reverse Proxy for Jellyfin
Nginx is a lightweight and high-performance web server that is widely used for reverse proxying. Configuring Nginx as a reverse proxy for Jellyfin allows you to serve your media server through a domain name and optionally secure it with HTTPS.
Step 1: Install Nginx
Install Nginx on your Debian system by running:
sudo apt install nginx -y
This command installs the required Nginx packages and dependencies.
Step 2: Start the Nginx Service
Ensure the Nginx service is running with the following command:
sudo systemctl start nginx
This command starts the Nginx service, making it ready for use.
Step 3: Enable Nginx to Start on Boot
To ensure Nginx starts automatically after a system reboot, enable the service:
sudo systemctl enable nginx
This guarantees that Nginx is always available when your server restarts.
Step 4: Verify Nginx is Running
Check the status of Nginx to ensure it is active and running:
systemctl status nginx
If the output confirms the service is active, you can proceed to configure it as a reverse proxy.
Step 5: Configuring Nginx as a Reverse Proxy
Create a new server block configuration file for Jellyfin by opening the nano
text editor:
sudo nano /etc/nginx/conf.d/jellyfin.conf
Add the following configuration to the file, replacing jellyfin.example.com
with your actual domain name:
server {
listen 80;
server_name jellyfin.example.com;
access_log /var/log/nginx/jellyfin.access;
error_log /var/log/nginx/jellyfin.error;
set $jellyfin jellyfin;
resolver 127.0.0.1 valid=30;
# Security / XSS Mitigation Headers
add_header X-Frame-Options "SAMEORIGIN";
add_header X-XSS-Protection "1; mode=block";
add_header X-Content-Type-Options "nosniff";
location = / {
return 302 https://$host/web/;
}
location / {
proxy_pass http://$jellyfin: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;
proxy_set_header X-Forwarded-Protocol $scheme;
proxy_set_header X-Forwarded-Host $http_host;
# Disable buffering for smoother streaming
proxy_buffering off;
}
location = /web/ {
proxy_pass http://$jellyfin:8096/web/index.html;
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;
proxy_set_header X-Forwarded-Protocol $scheme;
proxy_set_header X-Forwarded-Host $http_host;
}
location /socket {
proxy_pass http://$jellyfin:8096/socket;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
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;
proxy_set_header X-Forwarded-Protocol $scheme;
proxy_set_header X-Forwarded-Host $http_host;
}
}
Save the file:
- Exit by pressing
CTRL + X
. - Press
CTRL + O
to write the changes. - Press
ENTER
to confirm.
Step 6: Verify the Nginx Configuration
Test the Nginx configuration for syntax errors with:
sudo nginx -t
If the output shows no errors, your configuration is valid.
Step 7: Reload Nginx to Apply Changes
Reload Nginx to activate the new configuration:
sudo systemctl reload nginx
This ensures the configuration changes take effect without disrupting active connections.
Step 8: Test the Proxy Configuration
Visit your Jellyfin server using the domain name you configured in the server block, such as:
http://jellyfin.example.com
Ensure your DNS records point the domain to your server’s IP address. If everything is configured correctly, the Jellyfin web interface will load through your domain.
Securing Jellyfin with HTTPS Using Let’s Encrypt
Securing your Jellyfin server with HTTPS is crucial to protect data exchanged between the server and clients. Let’s Encrypt provides free SSL certificates, and Certbot simplifies obtaining and managing them. This process applies to both Apache and Nginx configurations.
Installing Certbot and Web Server Plugins
Certbot is the recommended tool for obtaining SSL certificates. Install Certbot with the appropriate plugin for your web server:
- For Apache:
sudo apt install python3-certbot-apache
- For Nginx:
sudo apt install python3-certbot-nginx
These commands install Certbot and configure it for use with your chosen web server.
Obtaining and Installing an SSL Certificate
Run Certbot to generate and configure an SSL certificate for your Jellyfin server:
- For Apache:
sudo certbot --apache --agree-tos --redirect --hsts --staple-ocsp --email you@example.com -d yourdomain.com
- For Nginx:
sudo certbot --nginx --agree-tos --redirect --hsts --staple-ocsp --email you@example.com -d yourdomain.com
- Replace
jellyfin.example.com
with your actual domain name. - Certbot will guide you through domain ownership verification and configure your web server for HTTPS automatically.
Once complete, your Jellyfin server will be accessible securely via HTTPS.
Testing the SSL Configuration
Test your Jellyfin server by navigating to:
https://jellyfin.example.com
Look for the padlock icon in the browser’s address bar, indicating a secure connection. If issues arise, verify that your DNS records correctly point to your server’s IP address.
Automating SSL Certificate Renewal
Let’s Encrypt certificates are valid for 90 days, so automating the renewal process ensures uninterrupted HTTPS coverage for your Jellyfin server.
To begin, test the renewal process to verify that everything is functioning correctly. Use the following command to perform a dry run:
sudo certbot renew --dry-run
This command simulates the certificate renewal process without making any actual changes. If the dry run completes successfully, your setup is correctly configured for automatic renewal.
Next, set up a cron job to automate the renewal process. Open the crontab editor with this command:
sudo crontab -e
Add the following line to schedule Certbot to check for renewals daily at 2:30 AM:
30 2 * * * /usr/bin/certbot renew --quiet
This line schedules the Certbot command to run silently, renewing certificates when necessary and reloading the web server automatically. After editing, save and close the crontab file to activate the scheduled task.
Certbot will now manage the SSL certificate renewals in the background, ensuring your Jellyfin server remains secure without requiring manual intervention.
Additional Commands for Jellyfin Media Server
Proper maintenance is critical for ensuring your Jellyfin Media Server remains secure, stable, and up-to-date. This section explains how to update or remove Jellyfin using APT, the Advanced Packaging Tool on Debian systems. Whether you want to keep your server current or remove it entirely, these commands will guide you.
Updating the Jellyfin Media Server
Keeping your Jellyfin server updated ensures access to the latest features, bug fixes, and security improvements.
To begin, update your system’s package index to fetch the latest information from the repositories:
sudo apt update
This synchronizes your system’s package cache with the repository data, enabling you to check for available updates.
If an update is available, upgrade Jellyfin by running the following command:
sudo apt upgrade
This command upgrades all eligible packages on your system, including Jellyfin, while maintaining proper dependency handling.
Removing Jellyfin Media Server
If you decide to uninstall Jellyfin, you have two options: retain its configuration files for potential reinstallation or remove all traces, including the repository.
To remove Jellyfin while preserving configuration files, execute:
sudo apt remove jellyfin
This removes the Jellyfin application but retains configuration files, allowing for easier reinstallation in the future.
If you want to delete the Jellyfin repository and prevent future updates or accidental reinstallations, remove the repository file located in /etc/apt/sources.list.d/
:
sudo rm /etc/apt/sources.list.d/jellyfin.list
Finally, refresh the system’s package index to reflect the removal of the Jellyfin repository:
sudo apt update
These commands ensure Jellyfin is fully removed from your system, leaving no unnecessary files or configurations behind.
Useful Links
Explore these valuable resources to optimize your Jellyfin Media Server setup and enhance your management experience:
- Let’s Encrypt Documentation
Learn how to secure your Jellyfin server with free SSL certificates for encrypted connections. - Cloudflare Registrar
An affordable option for registering and managing domain names, ideal for setting up subdomains for Jellyfin. - Namecheap Domains
A reliable and cost-effective choice for purchasing and managing domain names. - Jellyfin Official Website
The central hub for Jellyfin’s features, downloads, and the latest news. - Jellyfin Documentation
Comprehensive official guides for configuring, managing, and troubleshooting your Jellyfin Media Server. - Jellyfin Community Forum
Engage with the Jellyfin community to find support, share tips, and participate in discussions. - Jellyfin GitHub Repository
Access Jellyfin’s source code, report issues, or contribute to its open-source development.
Frequently Asked Questions (FAQs)
Jellyfin supports a wide range of video and audio formats, including MP4, MKV, AVI, MP3, AAC, FLAC, and more. It also supports subtitle formats like SRT and ASS.
Hardware acceleration is not required but can significantly improve performance during transcoding. Jellyfin supports hardware acceleration on GPUs from Intel, NVIDIA, and AMD.
Yes, Jellyfin is designed to manage large media libraries efficiently. Performance may vary depending on your server hardware and storage configuration.
Yes, Jellyfin supports a wide range of plugins and themes to extend its functionality and customize its appearance.
Jellyfin uses protocols such as DLNA, HTTP, and HTTPS for media streaming. It also supports secure connections when HTTPS is enabled.
Yes, the Jellyfin Web UI can be customized using themes and CSS tweaks. Plugins are also available to extend the server’s functionality.
Jellyfin supports live TV and DVR through compatible tuners and plugins. You can configure recording schedules and access live channels directly from the server.
Jellyfin supports all standard Linux file systems, including EXT4, XFS, and Btrfs. Choose a file system based on your storage needs and performance preferences.
Yes, Jellyfin allows integration with external metadata providers like TheMovieDB and TVDB for enhanced media organization.
Jellyfin supports multiple user profiles, each with its own libraries, preferences, and watch histories. This is useful for shared family or group setups.
Wrapping Up the Jellyfin Server Installation
Congratulations! You’ve successfully installed and configured Jellyfin Media Server on Debian, including setting up a reverse proxy and securing your connection with HTTPS using Let’s Encrypt. With these steps complete, your server is now ready to deliver a secure and reliable media streaming experience.
To keep your server running smoothly, remember to perform regular updates. Staying up-to-date ensures you benefit from the latest features, stability improvements, and security fixes. Jellyfin’s flexibility also opens the door to customization, with plugins and advanced settings available to enhance your media experience.
By maintaining your Jellyfin server and securing it properly, you’ll enjoy a seamless, personalized media platform that aligns with your specific needs.
We Would Love to Hear From You
Have questions, tips, or insights about setting up and managing Jellyfin on Debian? Share your thoughts in the comments section below. Your feedback helps us refine this guide and fosters a community of Jellyfin enthusiasts who can learn from one another. Let’s work together to make this resource even more valuable for everyone!
sudo apt install jellyfin jellyfin-ffmpeg7 jellyfin-server jellyfin-web
Hi Martial,
Thank you for pointing that out! You’re absolutely correct that the article initially referenced
jellyfin-ffmpeg5
, which has since become outdated as the stable version is now 10.10.*. I’ve updated the guide to usejellyfin-ffmpeg7
.For future reference, here’s how Jellyfin handles FFMpeg version requirements:
FFmpeg 5.x (Jellyfin 10.8.z)
FFmpeg 6.x (Jellyfin 10.9.z)
FFmpeg 7.x (Jellyfin 10.10.z)
Thanks again for catching this and helping refine the content for the community!