How to Install Plex Media Server on Fedora Linux

Last updated Friday, March 27, 2026 1:42 pm Joshua James 11 min read

Plex keeps your movies, TV shows, music, and photos on your own hardware while still giving you a polished streaming interface across TVs, phones, browsers, and streaming boxes. To install Plex Media Server on Fedora, use Plex’s official RPM repository so DNF can track the package and future updates without manual RPM downloads.

The same plexmediaserver package works on Fedora Workstation, Server, and trimmed installs, but the first-run setup still happens in a browser. Plex lists Linux server builds on its media server downloads page, yet on Fedora the repository route is the cleanest way to handle the install, verify the service and setup URL, finish the web wizard, fix media access, and manage remote access, updates, and removal.

Install Plex Media Server on Fedora

Plex’s live Fedora repository resolved at https://downloads.plex.tv/repo/rpm/x86_64/ during Fedora 43 validation. The repo file below still uses $basearch, but if you run Fedora on another architecture, confirm Plex publishes that branch on the official downloads page before you reuse the same configuration.

Refresh Fedora Packages for Plex

Start with a package refresh so Fedora sees the latest dependency and security updates before you add the Plex repository:

sudo dnf upgrade --refresh -y

These commands use sudo for system-wide changes. If your account does not have sudo access yet, follow our guide to add a user to sudoers on Fedora before you continue.

The -y flag accepts the confirmation prompt automatically. If Fedora installs a new kernel during this step, reboot before you move on so Plex starts against the updated system.

Add the Plex RPM Repository on Fedora

Create the repository file first, then import Plex’s signing key separately. Using sudo tee matters here because plain shell redirection with > does not inherit sudo privileges when the destination file is root-owned.

printf '%s\n' \
  '[Plexrepo]' \
  'name=Plexrepo' \
  'baseurl=https://downloads.plex.tv/repo/rpm/$basearch/' \
  'enabled=1' \
  'gpgkey=https://downloads.plex.tv/plex-keys/PlexSign.key' \
  'gpgcheck=1' | sudo tee /etc/yum.repos.d/plex.repo > /dev/null

sudo rpm --import https://downloads.plex.tv/plex-keys/PlexSign.key

The separate rpm --import step avoids an interactive OpenPGP import prompt during the first package install. Check that Fedora now sees the Plex repository before you install the server package:

sudo dnf repo list --enabled | grep -i plex

The grep -i plex filter keeps the repository check focused on the Plex entry. If you want to expand that kind of match later, our grep command guide covers other useful search patterns.

Plexrepo              Plexrepo

Install the plexmediaserver Package on Fedora

Once the repository is visible, install Plex with the package name Plex actually publishes for Fedora:

sudo dnf install -y plexmediaserver

Relevant output includes:

Installing:
 plexmediaserver x86_64 1.42.2.10156-f737b826c Plexrepo   208.4 MiB

[1/1] plexmediaserver-0:1.42.2.10156-f737b826c.x86_64 100% | 102.4 MiB | 00m02s

Complete!

The RPM creates the dedicated plex service account and, on Fedora 43, enables and starts plexmediaserver.service during the install script. That means the server is usually ready to answer on port 32400 as soon as DNF finishes.

Verify the Plex Service and Local Web Endpoint on Fedora

Check both the systemd unit and the local setup URL before you open a browser. This confirms that Plex is running and already redirecting requests to the web wizard:

systemctl status --no-pager plexmediaserver
curl -I -s http://127.0.0.1:32400/web

Relevant output includes:

● plexmediaserver.service - Plex Media Server
     Loaded: loaded (/usr/lib/systemd/system/plexmediaserver.service; enabled; preset: disabled)
     Active: active (running) since Fri 2026-03-27 12:48:51 AWST; 14s ago
   Main PID: 6392 (Plex Media Serv)

HTTP/1.1 302 Moved Temporarily
X-Plex-Protocol: 1.0
Location: http://127.0.0.1:32400/web/index.html#!/setup/3dc64025f6be5b314d14c69b52682418be7a4485

The silent curl -I -s form keeps the check focused on the HTTP headers instead of printing a transfer meter. For other header, download, and troubleshooting patterns, see our curl command guide.

Access Plex Web Setup on Fedora

Plex serves its first-run setup at http://127.0.0.1:32400/web. On a Fedora desktop, open that URL locally in your browser. On Fedora Server or any other headless host, create an SSH tunnel first so Plex still sees the connection as local.

Create an SSH Tunnel for Headless Plex Setup on Fedora

Keep this SSH session open while you finish the Plex wizard from your workstation browser:

ssh -L 8888:localhost:32400 username@SERVER_IP

The -L 8888:localhost:32400 mapping listens on port 8888 on your local machine and forwards that traffic to Plex on the remote Fedora host. Replace username and SERVER_IP with your own values, then browse to http://localhost:8888/web. If the SSH daemon is not ready yet, install it with our guide to enable SSH on Fedora first.

Sign In and Name the Plex Server on Fedora

Once the web interface loads, sign in with your Plex account and move through the welcome screens until Plex asks for a server name. Plex refreshes the wording in this wizard more often than it changes the package itself, so focus on the choices rather than the exact marketing copy.

Plex also advertises Plex Pass during this workflow. You can skip that offer and come back later if you decide you need hardware transcoding, intro detection, or other paid features.

Choose a server name that makes sense on your network, then decide whether to leave remote access enabled. Keeping it on lets Plex broker outside connections through your account, while turning it off makes more sense if you plan to stay local, use a VPN, or rely on your own reverse proxy.

Add Libraries and Finish the Plex Setup Wizard on Fedora

You can attach media folders during the wizard or skip them until your disks, mounts, or NAS shares are ready. Plex works better when your media is already organized before the first scan starts.

Pick the right library type first so Plex applies the correct metadata and matching rules:

Point Plex at the folders that actually contain your media. You can attach more than one path to the same library if your collection spans multiple drives.

Advanced library options can wait until the server is stable. Leave the defaults in place if you want the quickest first import, then adjust metadata and scanner behavior later.

Once the wizard finishes, Plex lands on the dashboard and starts scanning any libraries you already attached.

Once the wizard is finished and firewalld allows the port, other devices on your LAN can reach Plex at http://SERVER_IP:32400/web. Keep the Nginx section for custom hostnames and HTTPS rather than for basic local access.

Configure Plex Media Access on Fedora

Plex runs as its own plex system account, so it can only read files and directories that user can traverse. If your media lives on another disk, a NAS mount, or directories owned by another account, fix access before you blame the library scanner.

Grant Plex Read Access with ACLs on Fedora

ACLs are the safest default because they give Plex access without changing the main owner of the files. If setfacl is missing on a trimmed Fedora host, install the acl package first.

sudo dnf install -y acl
sudo setfacl -R -m u:plex:rx /srv/media
sudo setfacl -d -m u:plex:rx /srv/media

The recursive rule fixes the existing tree, while the default ACL keeps new files readable by Plex later. Verify the result from the plex account and confirm the default ACL entry exists:

sudo -u plex ls -la /srv/media
getfacl /srv/media

Relevant output includes:

total 0
drwxr-xr-x+ 1 root root 16 Mar 27 12:59 .
drwxr-xr-x. 1 root root 10 Mar 27 12:59 ..
-rw-r-xr--+ 1 root root  0 Mar 27 12:59 demo.mkv

# file: srv/media
# owner: root
# group: root
user::rwx
user:plex:r-x
group::r-x
mask::r-x
other::r-x
default:user::rwx
default:user:plex:r-x

Label /srv/media for Plex with SELinux on Fedora

If Plex still cannot scan a library after the ACL fix, Fedora’s SELinux policy is the next place to look. The semanage command comes from policycoreutils-python-utils, and ausearch comes from audit, so install those packages first if either command is missing on your system.

sudo semanage fcontext -a -t public_content_t '/srv/media(/.*)?'
sudo restorecon -RFv /srv/media
ls -Zd /srv/media
Relabeled /srv/media from unconfined_u:object_r:var_t:s0 to system_u:object_r:public_content_t:s0
Relabeled /srv/media/demo.mkv from unconfined_u:object_r:var_t:s0 to system_u:object_r:public_content_t:s0

system_u:object_r:public_content_t:s0 /srv/media

If the rule already exists on your host, replace -a with -m and rerun the same command. The public_content_t label is a practical default for read-only media libraries that Plex needs to scan and stream.

Configure Firewalld for Plex Remote Access on Fedora

Plex Media Server listens on TCP port 32400 by default. Fedora Workstation already ships with firewalld, but Server and minimal installs may need it added first, so install firewalld on Fedora if firewall-cmd is missing. If you expect public exposure, pair the port rule with Fail2Ban with firewalld on Fedora instead of leaving the service wide open.

Open Plex’s Default Port on Fedora

Open Plex’s main web port first, then verify that firewalld now answers yes for the exact port rule you just added:

sudo firewall-cmd --permanent --add-port=32400/tcp
sudo firewall-cmd --reload
sudo firewall-cmd --query-port=32400/tcp
yes

Restrict Plex to Specific Source Addresses with Firewalld on Fedora

If Plex should answer only for a trusted workstation or subnet, move that rule into a dedicated zone instead of exposing it to every source. The example below uses the documentation address 192.0.2.10 as a placeholder.

sudo firewall-cmd --permanent --new-zone=plex
sudo firewall-cmd --permanent --zone=plex --add-source=192.0.2.10
sudo firewall-cmd --permanent --zone=plex --add-port=32400/tcp
sudo firewall-cmd --reload
sudo firewall-cmd --zone=plex --list-all
plex (active)
  target: default
  sources: 192.0.2.10
  services:
  ports: 32400/tcp
  forward: no
  masquerade: no

Set Up Nginx as a Reverse Proxy for Plex on Fedora

Use a reverse proxy when you want a clean hostname such as plex.example.com, TLS termination, or a single web server in front of several services. If you need the broader concept first, read our guide to create a reverse proxy in Nginx. For Fedora-specific package setup, install Nginx on Fedora, or use Apache on Fedora if that fits the rest of your stack better.

Install Nginx and Certbot on Fedora

Install the reverse proxy and the Certbot plugin in one pass so the web server and certificate workflow use the same package source:

sudo dnf install -y nginx python3-certbot-nginx

Create the Plex Reverse Proxy Server Block on Fedora

Write the Nginx server block into Fedora’s /etc/nginx/conf.d/ include path. This keeps Plex bound to 127.0.0.1:32400 while Nginx handles the public-facing hostname and the longer-lived WebSocket connection upgrades Plex uses:

sudo tee /etc/nginx/conf.d/plex.conf > /dev/null <<'EOF'
server {
    listen 80;
    server_name plex.example.com;

    location / {
        proxy_pass http://127.0.0.1:32400;
        proxy_http_version 1.1;
        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 Upgrade $http_upgrade;
        proxy_set_header Connection "upgrade";
        proxy_read_timeout 3600;
    }
}
EOF

Allow Nginx to Connect to Plex Through SELinux on Fedora

Fedora runs Nginx in the httpd_t SELinux domain, so a syntactically correct proxy can still fail with 502 Bad Gateway until HTTPD services are allowed to open outbound network connections. Enable the boolean and restart Nginx so the policy change takes effect immediately:

sudo setsebool -P httpd_can_network_connect 1
sudo systemctl restart nginx
getsebool httpd_can_network_connect
httpd_can_network_connect --> on

Test the Nginx Reverse Proxy on Fedora

Check the Nginx configuration, start the service, and then query the proxied /web path with the host header you plan to publish:

sudo nginx -t
sudo systemctl enable --now nginx
curl -I -s -H "Host: plex.example.com" http://127.0.0.1/web

Relevant output includes:

nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful

HTTP/1.1 302 Moved Temporarily
Server: nginx/1.28.2
Location: http://plex.example.com/web/index.html#!/setup/3dc64025f6be5b314d14c69b52682418be7a4485

Open HTTP and HTTPS in Firewalld on Fedora

The reverse proxy still needs the normal web service rules in firewalld before outside clients can reach it:

sudo firewall-cmd --permanent --add-service=http
sudo firewall-cmd --permanent --add-service=https
sudo firewall-cmd --reload
echo HTTP=$(sudo firewall-cmd --query-service=http) HTTPS=$(sudo firewall-cmd --query-service=https)
HTTP=yes HTTPS=yes

Request a Let’s Encrypt Certificate for Plex on Fedora

Once your DNS record already points plex.example.com at this Fedora host, let Certbot request and install the certificate through the Nginx plugin:

sudo certbot --nginx -d plex.example.com

Certbot will prompt for an email address, the Let’s Encrypt terms, and whether HTTP should redirect to HTTPS automatically. On Fedora 43 the certbot-renew.timer unit is already enabled after package installation, so later renewals reuse the same integration.

Manage Plex Media Server on Fedora

Start, Stop, and Restart Plex Media Server on Fedora

The package starts Plex automatically on a fresh install, but the usual systemd controls are still useful if you change configuration, update drivers, or need a clean restart after storage changes:

sudo systemctl start plexmediaserver
sudo systemctl stop plexmediaserver
sudo systemctl restart plexmediaserver
sudo systemctl enable plexmediaserver
sudo systemctl disable plexmediaserver

Update Plex Media Server on Fedora

Plex updates arrive through the same repository you added during installation, so the normal Fedora upgrade path is enough:

sudo dnf upgrade --refresh -y
rpm -q plexmediaserver
plexmediaserver-1.42.2.10156-f737b826c.x86_64

Remove Plex but Keep Library Data on Fedora

DNF5 already has clean_requirements_on_remove = 1 on Fedora 43, so a plain package removal is enough for the standard uninstall path. That removes the server package but keeps your metadata and the plex account for a later reinstall:

sudo dnf remove -y plexmediaserver

Verify that the package is gone while the server data still exists:

rpm -q plexmediaserver || true
test -d /var/lib/plexmediaserver && echo data_exists || echo data_missing
getent passwd plex || echo plex_user_missing
package plexmediaserver is not installed
data_exists
plex:x:972:1001:RPM Created PlexUser:/var/lib/plexmediaserver:/sbin/nologin

Remove Plex Data, the Service Account, and Repo Leftovers on Fedora

This reset permanently deletes Plex’s metadata database, artwork cache, and service account. Back up /var/lib/plexmediaserver first if you want to keep watch history, server settings, or library metadata.

Fedora’s RPM leaves cleanup artifacts behind after a normal package removal, so remove the account and the leftover repo files explicitly when you want a full reset:

sudo userdel -r plex
sudo rm -f /etc/yum.repos.d/plex.repo.rpmsave /etc/yum.repos.d/plex.repo.rpmnew

Confirm that the data directory, service account, and repo remnants are all gone:

test -d /var/lib/plexmediaserver && echo data_exists || echo data_missing
getent passwd plex || echo plex_user_missing
ls /etc/yum.repos.d | grep -i plex || echo plex_repo_files_missing
data_missing
plex_user_missing
plex_repo_files_missing

Troubleshoot Plex Media Server on Fedora

These checks cover the Fedora-specific problems most likely to stop Plex from loading, scanning libraries, or proxying cleanly after the package install succeeds.

Fix a Plex Web Interface That Will Not Load on Fedora

Check the service, the listening socket, and the local redirect before you spend time on firewalld, router rules, or a reverse proxy. If one of these fails, Plex itself is not healthy yet:

sudo systemctl status --no-pager plexmediaserver
sudo ss -ltnp | grep 32400
curl -I -s http://127.0.0.1:32400/web

Relevant output includes:

● plexmediaserver.service - Plex Media Server
     Active: active (running)

LISTEN 0      1024               *:32400            *:*

HTTP/1.1 302 Moved Temporarily
Location: http://127.0.0.1:32400/web/index.html#!/setup/3dc64025f6be5b314d14c69b52682418be7a4485

If the service is not active, inspect sudo journalctl -u plexmediaserver -n 50 next. If the socket or redirect is missing, fix that local problem first instead of treating it like a firewall or DNS issue.

Fix Plex Library Access in Home Directories on Fedora

Fedora often keeps home directories at 700 or 750, which blocks the plex user from even traversing into your media folder. Check the home-directory mode and then test the path as the Plex account:

stat -c '%A %n' /home/username
sudo -u plex ls -la /home/username/PlexTestMedia

Relevant output includes:

drwx------ /home/joshua
ls: cannot access '/home/joshua/PlexTestMedia': Permission denied

Grant execute permission on the home directory itself, then add ACLs on the media folder so Plex can traverse the path and read the files:

sudo setfacl -m u:plex:x /home/username
sudo setfacl -R -m u:plex:rx /home/username/PlexTestMedia
sudo setfacl -d -m u:plex:rx /home/username/PlexTestMedia
sudo -u plex ls -la /home/username/PlexTestMedia

Relevant output includes:

total 0
drwxr-xr-x+ 1 joshua joshua  16 Mar 27 12:50 .
drwx--x---+ 1 joshua joshua 682 Mar 27 12:50 ..
-rw-r-xr--+ 1 joshua joshua   0 Mar 27 12:50 demo.mkv

If you do not want special ACLs inside /home, move the library to a path such as /srv/media and use the main media-access section above instead.

Fix Nginx 502 Bad Gateway Errors with Plex on Fedora

A working Nginx config can still fail with 502 Bad Gateway on Fedora when SELinux blocks Nginx from connecting to Plex’s local port. The error log shows the problem clearly:

sudo tail -n 5 /var/log/nginx/error.log

Relevant output includes:

2026/03/27 12:55:23 [crit] 8280#8280: *1 connect() to 127.0.0.1:32400 failed (13: Permission denied) while connecting to upstream, client: 127.0.0.1, server: plex.example.com, request: "HEAD / HTTP/1.1", upstream: "http://127.0.0.1:32400/", host: "plex.example.com"

Enable the SELinux boolean, restart Nginx, and then retest the proxied /web path:

sudo setsebool -P httpd_can_network_connect 1
sudo systemctl restart nginx
curl -I -s -H "Host: plex.example.com" http://127.0.0.1/web
HTTP/1.1 302 Moved Temporarily
Server: nginx/1.28.2
Location: http://plex.example.com/web/index.html#!/setup/3dc64025f6be5b314d14c69b52682418be7a4485

Plex Media Server on Fedora FAQ

Can I install Plex Media Server on Fedora Server or a minimal Fedora host?

Yes. The same plexmediaserver package works on Fedora Workstation, Server, and minimal installs, but the first-run setup still happens in a browser. On a headless host, create an SSH tunnel with ssh -L 8888:localhost:32400 username@SERVER_IP and finish the setup at http://localhost:8888/web from your workstation.

Do I need a standalone RPM download to install Plex on Fedora?

No. Plex’s media server downloads page lists the Linux server builds, but the official RPM repository is the cleaner Fedora path. Add the repo, import PlexSign.key, and install plexmediaserver through DNF so updates stay inside the package manager.

What port does Plex Media Server use on Fedora by default?

Plex Media Server uses TCP port 32400 for its web interface by default. Open that port in firewalld for direct remote access, or keep Plex bound locally and let Nginx proxy /web over HTTP or HTTPS.

Does dnf remove plexmediaserver delete my library data on Fedora?

No. A normal dnf remove plexmediaserver removes the package but leaves /var/lib/plexmediaserver and the plex service account behind. For a full reset, remove the package first, then run userdel -r plex and delete any leftover plex.repo.rpmsave or plex.repo.rpmnew files.

Conclusion

Plex Media Server is now running on Fedora from Plex’s RPM repository, with the setup URL reachable locally or through an SSH tunnel and the server ready to scan your libraries. Next, install firewalld on Fedora before you expose port 32400, or install Docker on Fedora if you want the rest of your home-server stack isolated alongside Plex.

Search LinuxCapable

Need another guide?

Search LinuxCapable for package installs, commands, troubleshooting, and follow-up guides related to what you just read.

Found this guide useful?

Support LinuxCapable to keep tutorials free and up to date.

Buy me a coffee Buy me a coffee

Before commenting, please review our Comments Policy.
Formatting tips for your comment

You can use basic HTML to format your comment. Useful tags currently allowed in published comments:

You type Result
<code>command</code> command
<strong>bold</strong> bold
<em>italic</em> italic
<blockquote>quote</blockquote> quote block

Got a Question or Feedback?

We read and reply to every comment - let us know how we can help or improve this guide.

Let us know you are human: