Plex Media Server transforms your Fedora system into a centralized media hub, letting you organize movies, TV shows, music, and photos in one place and stream them to any device on your network or remotely over the internet. Whether you want to watch your movie collection on a smart TV, stream music to your phone while traveling, or share a photo library with family members, Plex handles the transcoding and delivery automatically.
This guide shows you how to install Plex Media Server on Fedora Linux from the official RPM repository, configure the systemd service for automatic startup, set up folder permissions so Plex can access your media, and optionally secure remote access with an Nginx reverse proxy and SSL. By the end, you will have a fully functional media server accessible from any device on your network, with automatic updates through the Plex repository.
Update Fedora Before Installation
Before beginning the installation process, it is essential to update your Fedora system to ensure all existing packages are up to date. This helps prevent potential conflicts and ensures a smooth installation experience.
To update your system, execute the following command:
sudo dnf upgrade --refresh
Import Plex RPM Repository
You must import the Plex RPM repository to install Plex Media Server directly from its official repositories. This method allows you to receive the latest version of Plex as soon as it is released without waiting for third-party maintainers to update their packages. The repository configuration uses the $basearch variable to automatically detect your system architecture (x86_64, aarch64, etc.). To import the Plex RPM repository, execute the following command:
sudo tee /etc/yum.repos.d/plex.repo<<EOF
[Plexrepo]
name=plexrepo
baseurl=https://downloads.plex.tv/repo/rpm/\$basearch/
enabled=1
gpgkey=https://downloads.plex.tv/plex-keys/PlexSign.key
gpgcheck=1
EOF
This command creates /etc/yum.repos.d/plex.repo with the repository URL and GPG key location. DNF will now check this repository when you install or upgrade packages.
Install Plex Media Server
With the repository in place, you can install Plex Media Server on your Fedora system. To do so, run the following command:
sudo dnf install plexmediaserver -y
DNF downloads the package from the Plex repository and installs it along with any dependencies. When installation completes, you should see output ending with:
Installed: plexmediaserver-1.x.x.xxxx-x.x86_64 Complete!
Verify and Configure Plex Media Server
Once the installation is complete, verifying that the Plex Media Server service has started correctly is crucial. To check the status of the Plex Media Server, use the following command:
systemctl status plexmediaserver
You should see output indicating the service is active:
● plexmediaserver.service - Plex Media Server
Loaded: loaded (/usr/lib/systemd/system/plexmediaserver.service; enabled; preset: disabled)
Active: active (running) since Wed 2025-11-27 10:30:00 UTC; 5s ago
Main PID: 12345 (Plex Media Serv)
Tasks: 85 (limit: 4915)
Memory: 120.5M
CPU: 2.500s

If the service is not running or inactive, you can start it with the following command:
sudo systemctl start plexmediaserver
To ensure that Plex Media Server starts automatically upon system boot, execute the following command:
sudo systemctl enable plexmediaserver
This command configures the Plex Media Server to start automatically when your Fedora system boots, ensuring your media library is always available.
Configure SSH for Plex Media Server (Optional)
This SSH tunnel section applies to headless servers or remote initial setup scenarios. If you are installing Plex on a desktop system with a browser, you can skip to the firewall configuration section and access Plex directly at
http://localhost:32400/web.
Install OpenSSH Server on Fedora (if required)
Before configuring an SSH tunnel, ensure the OpenSSH server is installed on your remote Fedora server. If you are unfamiliar with SSH or unsure whether it is installed, see our guide on how to install and enable SSH on Fedora, or install it using the following command:
sudo dnf install openssh-server -y
After installing the OpenSSH server, start the SSH service and enable it to run at startup:
sudo systemctl enable sshd --now
Set Up an SSH Tunnel for the Initial Setup
To allow remote connections during the initial setup, create an SSH tunnel from your local computer to the remote Fedora server. Replace {server-ip-address} with the actual IP address of your remote server (for example, 192.168.50.1):
ssh {server-ip-address} -L 8888:localhost:32400
The -L flag creates a local port forward: traffic sent to port 8888 on your local machine tunnels through SSH and arrives at port 32400 on the remote server. This allows you to access the Plex web interface as if you were sitting at the server itself.
Access Plex Media Server via SSH Tunnel
With the SSH tunnel in place, you can access the Plex Media Server through your web browser using the following URL:
http://localhost:8888/web
If the above URL does not work, try the alternative URL:
http://localhost:32400/web/index.html#!/setup
These URLs redirect to http://localhost:32400/web on the remote server via the SSH tunnel, allowing you to complete the initial setup of your Plex Media Server.
Access Plex Media Server Remotely
After the initial setup, you can access your Plex Media Server remotely using your remote server’s IP address. Replace {server-ip-address} with the actual IP address of your remote server:
https://{server-ip-address}:32400
With remote access configured, you can now manage your Plex server from anywhere. The next sections cover firewall configuration and the web-based setup wizard.
Configure FirewallD for Plex Media Server
If you have FirewallD enabled on Fedora, you need to open port 32400 for Plex. For additional protection against brute-force attacks on your server, consider pairing FirewallD with Fail2Ban on Fedora. For media server setups that also require database backends, see our guides on installing Redis on Fedora or PostgreSQL on Fedora.
The simplest approach adds the port to your default zone (most home users can use this method and skip the dedicated zone section below):
sudo firewall-cmd --permanent --add-port=32400/tcp
sudo firewall-cmd --reload
Verify the port was added:
sudo firewall-cmd --list-ports
The output should display the open port:
32400/tcp
For more granular control, create a dedicated zone that restricts Plex access to specific IP addresses.
Create a Dedicated Zone for Plex (Optional)
A dedicated zone lets you manage Plex firewall rules separately from your default policy:
sudo firewall-cmd --permanent --new-zone=plex
Specify Allowed IP Addresses
Define which IP addresses can access your Plex Media Server. Replace 1.2.3.4 with the actual IP address you want to allow:
sudo firewall-cmd --permanent --zone=plex --add-source=1.2.3.4
Repeat this command for each IP address you want to grant access to your server.
Open the Plex Port
By default, Plex uses TCP port 32400 for communication. Open this port in the plex zone to allow incoming connections:
sudo firewall-cmd --permanent --zone=plex --add-port=32400/tcp
If you change the default port in your Plex configuration file, update the firewall port rule accordingly.
Reload the Firewall
After configuring the firewall rules, reload FirewallD to apply the new settings:
sudo firewall-cmd --reload
Complete Initial Setup Through Web Interface
Step 1: Access the WebUI
Open your preferred internet browser and navigate to http://127.0.0.1:32400/web or http://localhost:32400/web to access the Plex WebUI.

Log in using an existing social media account or register a new account with your email if you are new to Plex. Once logged in, you will begin the initial configuration setup.
If your browser seems unresponsive during first-time setup, refresh the page. This can happen while Plex initializes the database. For users managing multiple Linux systems, Plex is also available on Debian, Ubuntu, and Linux Mint with similar installation processes.
Step 2: Understand How Plex Works
The first configuration page provides an overview of Plex and its features.
Click “GOT IT!” to proceed to the next page.

Firefox users may see a prompt to enable DRM playback. Accept this prompt, as Plex requires DRM for protected content streaming. Chrome and Chromium-based browsers enable DRM by default.
Step 3: Consider Plex Pass (Optional)
During the web setup workflow, you may be prompted to upgrade to Plex Pass. This optional subscription offers benefits like HDR support, hardware transcoding (requires Intel Quick Sync or NVIDIA NVENC drivers on Fedora), and access to beta builds. You can always upgrade later, so click the “X” in the top right corner to skip this step.

Step 4: Server Setup
Configure your server name (you can choose any name) and decide whether to enable “Allow me to access my media outside my home.” By default, this option is enabled. If you do not plan on accessing your media remotely, disable this feature.
Click “NEXT” to proceed.

Step 5: Set Up Your Media Library
The Media Library page allows you to pre-add your media directories if you have a media drive or folder ready.
Click “ADD LIBRARY”.

Select the type of media you want your folders to be organized into, such as TV shows, movies, or music.
Click “NEXT” to proceed to add folders.

Click “BROWSE FOR MEDIA FOLDER” and select the media directory.

Once the folder is added, advanced options will appear. Here, you can customize Plex further.
Click “ADD LIBRARY” to continue with the initial configuration setup.

Step 6: Complete the Setup
Click “NEXT” to finish the initial setup, with or without adding a media library.

The next screen will confirm that your setup is complete. Click “DONE” to proceed to the Plex Dashboard.

You will be prompted to set up pins. Leave them as default or edit them to your preference. You can adjust these settings later, and then you will arrive at your Plex Dashboard.

Configure Media Files & Folders Permissions
During initial setup, you may find that Plex cannot see your media files or that adding libraries fails silently. This typically happens because Plex runs as a dedicated system user named plex, which needs read and execute permissions on your media directories.
You can grant these permissions using either setfacl (which adds permissions without changing ownership) or chown (which transfers ownership to the plex user). Use setfacl when multiple applications need access to the same files, and use chown when Plex is the sole application accessing the media directory.
Configure Permissions Using setfacl
The setfacl command modifies a file or directory’s access control list (ACL), letting you grant the plex user read and execute permissions without changing file ownership:
sudo setfacl -R -m u:plex:rx /media/yourfolder/
sudo setfacl -R -m u:plex:rx /media/yourfolder/tv
sudo setfacl -R -m u:plex:rx /media/yourfolder/movies
Replace /media/yourfolder/ with the actual path to your media directories. Verify the ACL was applied correctly:
getfacl /media/yourfolder/
You should see the plex user listed with read and execute permissions:
# file: media/yourfolder/ # owner: yourusername # group: yourusername user::rwx user:plex:r-x group::r-x mask::r-x other::r-x
Configure Permissions Using chown
The chown command changes ownership of files and directories. Use this method if Plex is the only application that needs access to these files:
sudo chown -R plex:plex /media/yourfolder/
Replace /media/yourfolder/ with the path to your media directory.
If you have other folders within your hard drive that you do not want Plex to access, set the permissions for individual folders instead:
sudo chown -R plex:plex /media/yourfolder/tv
sudo chown -R plex:plex /media/yourfolder/movies
Replace /media/yourfolder/ with the path to your media directory.
Set up Nginx as a Reverse Proxy for Plex Media Server
A reverse proxy allows you to access Plex through a custom domain with SSL encryption, rather than exposing port 32400 directly. This section covers setting up Nginx on Fedora as the proxy server. Nginx provides WebSocket support for real-time updates and efficient proxy header handling for Plex streaming. For users preferring Apache, see our guide on installing Apache on Fedora.
Install Nginx on Fedora for Plex Media Server
First, install Nginx with the following command:
sudo dnf install nginx -y
If Nginx is not activated by default, start it using:
sudo systemctl start nginx
To enable Nginx to start on boot, run the following command:
sudo systemctl enable nginx
Now, check the status of Nginx to ensure it is active and free of errors:
systemctl status nginx
You should see output confirming the service is running:
● nginx.service - The nginx HTTP and reverse proxy server
Loaded: loaded (/usr/lib/systemd/system/nginx.service; enabled)
Active: active (running) since Wed 2025-11-27 14:30:00 UTC; 10s ago
Create a Nginx Server Block for the Plex Media Server
Next, create a new server block with the following command:
sudo nano /etc/nginx/conf.d/plex.conf
Add the following configuration to the file, replacing plex.example.com with your actual subdomain:
server {
listen 80;
server_name plex.example.com;
location / {
proxy_pass http://127.0.0.1:32400;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
#upgrade to WebSocket protocol when requested
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "Upgrade";
}
}
Replace plex.example.com with your own subdomain. Save the file by pressing Ctrl+O, then exit with Ctrl+X.
Test the Nginx Configuration
Before proceeding, perform a dry run to ensure there are no errors in your Nginx configuration or server block:
sudo nginx -t
A successful test produces output like this:
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok nginx: configuration file /etc/nginx/nginx.conf test is successful
If you see errors, check the server block file for typos in the domain name or proxy settings.
Reload Nginx
Reload Nginx for the changes to take effect:
sudo systemctl reload nginx
If you have not already opened HTTP and HTTPS ports in the firewall, add them now:
sudo firewall-cmd --permanent --add-service=http --add-service=https
sudo firewall-cmd --reload
After configuring your domain DNS records to point to your server IP, you can access your Plex Media Server at your subdomain (for example, plex.example.com). Test by opening the URL in your browser—you should see the Plex login page.
Secure Nginx with Let’s Encrypt SSL Free Certificate for Plex
You may want to run your Nginx on HTTPS for added security using an SSL certificate. One way to achieve this is by using Let’s Encrypt, a free, automated, and open certificate authority operated by the nonprofit Internet Security Research Group (ISRG).
Install the Certbot Package
First, install the certbot package with the following command:
sudo dnf install python3-certbot-nginx -y
Create the Certificate
Once the certbot package is installed, run the following command to create your certificate:
sudo certbot --nginx --agree-tos --redirect --hsts --staple-ocsp --email you@example.com -d plex.example.com
This command configures a secure configuration, including force HTTPS 301 redirects, a Strict-Transport-Security header, and OCSP Stapling. Be sure to replace the email address and domain name with your information.
With the certificate in place, your URL will now be https://plex.example.com instead of http://plex.example.com. The HTTP URL will automatically redirect to HTTPS.
Troubleshoot Common Plex Issues
This section covers the most common problems users encounter after installing Plex Media Server.
Media Files Not Appearing in Library
If Plex cannot find your media files after adding a library, the plex user lacks permission to read the directory. Verify permissions with:
sudo -u plex ls /path/to/your/media
If you see a “Permission denied” error, the output will look like this:
ls: cannot open directory '/path/to/your/media': Permission denied
Grant the plex user access using setfacl as shown in the permissions section above, then rescan the library from the Plex web interface (Settings > Library > Scan Library Files).
Plex Cannot Access Media in Home Directory
Fedora restricts home directory access by default with permissions set to drwxr-x--- (750), preventing the plex user from reading your media files. This affects users who store media in locations like /home/username/Movies.
Check your home directory permissions:
ls -ld /home/$USER
If you see output like this, Plex cannot traverse into your home directory:
drwxr-x---. 100 username username 12288 Nov 27 15:12 /home/username
The safest solution is to move your media library outside your home directory to a location like /srv/media, /mnt/media, or a dedicated external drive. This approach follows Linux filesystem hierarchy conventions and avoids security compromises:
sudo mkdir -p /srv/media/movies /srv/media/tv
sudo mv /home/$USER/Movies/* /srv/media/movies/
sudo chown -R plex:plex /srv/media/
If moving files is impractical, grant the plex user read and execute permissions on your home directory using setfacl:
sudo setfacl -m u:plex:rx /home/$USER
sudo setfacl -R -m u:plex:rx /home/$USER/Movies
Verify the ACL was applied:
getfacl /home/$USER
You should see the plex user listed with read and execute permissions:
# file: home/username # owner: username # group: username user::rwx user:plex:r-x group::r-x mask::r-x other::---
Avoid using
chmod o+rx /home/$USERto open home directory permissions to all users on your system. This grants read access to every user account, creating a security risk on multi-user systems. Thesetfaclapproach grants access only to theplexuser while preserving your home directory’s privacy from other accounts.
Plex Service Fails to Start
Check the service status and logs for error details:
systemctl status plexmediaserver
journalctl -xeu plexmediaserver
Common causes include port 32400 already in use or corrupted database files. If another service is using port 32400, check with:
sudo lsof -i :32400
The output will show the process ID and command name using the port:
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME PlexMedia 1234 plex 12u IPv4 45678 0t0 TCP *:32400 (LISTEN)
Stop the conflicting service before starting Plex.
Cannot Access Web Interface Remotely
If you can access Plex locally but not from other devices, verify the firewall allows port 32400:
sudo firewall-cmd --list-all --zone=plex
You should see output similar to:
plex (active) target: default sources: 192.168.1.100 ports: 32400/tcp
If using the simpler default zone approach, check your default zone instead:
sudo firewall-cmd --list-all
Look for 32400/tcp in the ports line. If missing, add the port rule as described in the firewall section above.
Transcoding Fails or Playback Buffers
If video playback stutters, fails to start, or shows “Conversion failed” errors, Plex may lack the resources to transcode. Check the transcode directory permissions:
ls -la /var/lib/plexmediaserver/Library/Application\ Support/Plex\ Media\ Server/Cache/Transcode/
The directory should be owned by the plex user. If transcoding still fails, check available disk space:
df -h /var/lib/plexmediaserver/
Plex needs several gigabytes of free space for transcoding temporary files. If disk space is low, consider moving the transcode directory to a larger partition or reducing video quality settings in the Plex web interface under Settings > Transcoder.
Reset Plex Database After Corruption
If Plex behaves erratically after a crash or power failure, the database may be corrupted. First, stop the service:
sudo systemctl stop plexmediaserver
Back up and remove the corrupted database files:
sudo mv /var/lib/plexmediaserver/Library/Application\ Support/Plex\ Media\ Server/Plug-in\ Support/Databases/ /var/lib/plexmediaserver/Databases-backup-$(date +%Y%m%d)
Restart Plex to rebuild the database:
sudo systemctl start plexmediaserver
Resetting the database removes watch history, custom metadata edits, and playlists. Your media files and library structure remain intact, but Plex will rescan all libraries. To preserve this data, back up
/var/lib/plexmediaserver/regularly usingrsyncortarbefore major changes.
Manage Plex Media Server
Once installed, you can update, remove, or manage the Plex repository using standard DNF commands.
Update Plex Media Server
Check your currently installed Plex version:
rpm -q plexmediaserver
This displays the installed version:
plexmediaserver-1.41.0.8994-f2c27da23.x86_64
Plex updates arrive through the repository you configured earlier. Run a standard system upgrade to pull the latest version:
sudo dnf upgrade --refresh
If an update was installed, restart the service to apply it:
sudo systemctl restart plexmediaserver
The Plex web interface also displays a notification banner when updates are available.
Remove Plex Media Server
To remove Plex from your Fedora system, first stop the service:
sudo systemctl stop plexmediaserver
sudo systemctl disable plexmediaserver
Remove the package:
sudo dnf remove plexmediaserver
The package removal preserves your library data in /var/lib/plexmediaserver/. This allows you to reinstall later without losing watch history, metadata, or playlists. To completely remove all Plex data:
sudo rm -rf /var/lib/plexmediaserver/
This permanently deletes all Plex configuration, watch history, and library metadata. Your actual media files remain untouched in their original locations.
Remove the Plex Repository
Remove the repository file to stop receiving Plex updates:
sudo rm /etc/yum.repos.d/plex.repo
Clean Up Nginx Reverse Proxy (If Configured)
If you set up the Nginx reverse proxy, remove the server block and reload the configuration:
sudo rm /etc/nginx/conf.d/plex.conf
sudo nginx -t && sudo systemctl reload nginx
If you obtained a Let’s Encrypt certificate for your Plex subdomain, you can revoke and delete it:
sudo certbot delete --cert-name plex.example.com
Replace plex.example.com with your actual subdomain.
Conclusion
You now have a fully functional Plex Media Server on Fedora that streams media to any device on your network, automatically updates through the official repository, and optionally provides secure remote access through SSL-encrypted domains. From here, you can expand your media infrastructure with Docker containerization for isolated service management, configure hardware transcoding acceleration for 4K HDR content through Intel Quick Sync or NVIDIA NVENC (requires Plex Pass and compatible graphics hardware), or automate library organization with custom scripts that trigger on media additions. For production environments, consider pairing Plex with scheduled backup routines targeting /var/lib/plexmediaserver/ to preserve watch history and metadata.