Plex - ArchWiki
Plex - ArchWiki
org/title/plex
Plex
Plex (https://www.plex.tv/) is a media player system and software suite consisting of many player
applications for 10-foot user interfaces and an associated media server that organizes personal media stored
on local devices. Integrated Plex Channels provide users with access to a growing number of online content
providers such as YouTube, Vimeo, TEDTalks, and CNN among others. Plex also provides integration for
cloud services including Dropbox, Box, Google Drive, or Copy.
Plex for Linux is split into a closed-source server Plex Media Server, and an open-source client Plex Home
Theater, a fork of the popular Kodi project.
Contents
Plex Media Server (PMS)
Installation
Setup
Custom domain
Nginx reverse proxy
Plugins
Plex Live TV and DVR
Hauppauge
Security
Resource management
Network
UFW Rule
Library Updates
Troubleshooting
Plex's WebUI returns 404
Plex Home Theater (PHT)
Installation
Plex Media Player (PMP)
Installation
Kodi and PleXBMC
Installation
Installation
1 of 6 12/19/21, 14:25
Plex - ArchWiki https://wiki.archlinux.org/title/plex
only available to Plex Pass subscribers and can provide early access to improvements and/or new
functionalities, but also early access to potential bugs. Even though the beta update channel is typically quite
stable, it is recommended to install the stable release unless you require specific early access content (release
notes (https://forums.plex.tv/t/plex-media-server/30447/430)).
Setup
To configure Plex Media Server remotely, you can first create an SSH tunnel (setup can only be done from
localhost )
or if you are running apache, with a reverse proxy, by adding this configuration in httpd-vhosts.conf
<VirtualHost *:80>
ServerName ip.address.of.server
ProxyPass / http://localhost:32400/
ProxyPassReverse / http://localhost:32400/
</VirtualHost>
Custom domain
Below an example server configuration is given for a reverse proxy using Nginx, including certificate
configuration.
/etc/nginx/sites-available/domain.com.conf
server {
listen 443 ssl http2;
listen [::]:443 ssl http2;
server_name media.domain.com;
# SSL
ssl_certificate /etc/letsencrypt/live/media.domain.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/media.domain.com/privkey.pem;
ssl_trusted_certificate /etc/letsencrypt/live/media.domain.com/chain.pem;
# logging
access_log /var/log/nginx/media.domain.com.access.log;
error_log /var/log/nginx/media.domain.com.error.log warn;
# reverse proxy
location / {
proxy_pass https://localhost: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;
proxy_set_header X-Forwarded-Proto $scheme;
}
}
# HTTP redirect
server {
2 of 6 12/19/21, 14:25
Plex - ArchWiki https://wiki.archlinux.org/title/plex
listen 80;
listen [::]:80;
server_name media.domain.com;
include nginxconfig.io/letsencrypt.conf;
location / {
return 301 https://media.domain.com$request_uri;
}
}
Plugins
PMS can be expanded with additional plugins. For example, PMS can be used as an IPTV client with the
IPTV plugin (https://github.com/Cigaras/IPTV.bundle).
To enable live TV viewing and DVR support with plex, you must have one of the supported tuners listed on
the support page (https://support.plex.tv/hc/en-us/articles/225877427-Supported-DVR-Tuners-and-Ant
ennas). PMS will automatically recognize any connected tuners.
The plex user needs to be part of the video group in order to access local tuners. This can be done by running
usermod -a -G video plex
Hauppauge
The drivers for all Hauppauge tuners have been included in the Linux kernel for some time now (e.g. ~v4.7
for WinTV-DualHD), however the firmware isn’t loaded by default. Look for a kernel message:
firmware file ‘dvb-demod-siXXXX-YY.fw’ not found by e.g. starting a tail with
dmesg -w and enable/insert the (USB) tuner device. If missing, download the respective firmware file (ht
tps://github.com/OpenELEC/dvb-firmware/blob/master/firmware/) and copy it file to /var/lib/ .
Security
It is recommended to store your media files outside of your home directory, as making it accessible to PMS
would mean lowering its security. Having a separate /media or /mnt/media partition is a good setup
for use with PMS.
You can further increase security via systemd, by editing plexmediaserver.service as follows:
/etc/systemd/system/plexmediaserver.service.d/restrict.conf
[Service]
ReadOnlyPaths=/
ReadWritePaths=/var/lib/plex /tmp
3 of 6 12/19/21, 14:25
Plex - ArchWiki https://wiki.archlinux.org/title/plex
Note: Those mechanisms are currently limited. For instance, ReadOnlyDirectories do not apply to any
submount, you have to list them as well.
Resource management
Originally, PMS used ulimit to limit its allocated resources, however this is not compatible with running as a
regular user. Instead, you can now set a maximum amount of memory via, again, systemd. For example, you
can add:
MemoryMax=4G
Network
Note: PMS supports both IPv4 and IPv6. This section only assumes the use of IPv4.
In order to connect to Plex through on a standard http port, this command can be used (for port 8080):
UFW Rule
If you use UFW and would like to create an App List entry for Plex, create/edit
/etc/ufw/applications.d/plexmediaserver and ensure it contains the following content:
[plexmediaserver]
title=Plex Media Server (Standard)
description=The Plex Media Server
ports=32400/tcp|3005/tcp|5353/udp|8324/tcp|32410:32414/udp
[plexmediaserver-dlna]
title=Plex Media Server (DLNA)
description=The Plex Media Server (additional DLNA capability only)
ports=1900/udp|32469/tcp
[plexmediaserver-all]
title=Plex Media Server (Standard + DLNA)
4 of 6 12/19/21, 14:25
Plex - ArchWiki https://wiki.archlinux.org/title/plex
Once you have saved the file, reload the UFW application definitions with:
Library Updates
Plex Media Server has a setting "Update my library automatically" which can detect new media files as they
are downloaded to your library. But as your library grows, these updates might stop working reliably. To fix,
you need to increase the number of files non-root users are allowed to subscribe to via inotify. Create the file
/etc/sysctl.d/40-max-user-watches.conf
/etc/sysctl.d/40-max-user-watches.conf
fs.inotify.max_user_watches=524288
and run sudo sysctl --system to apply without rebooting. Now plex should see any new files.
Troubleshooting
Logs are located in:
In case there are no logs or they are not helpful, you might want to launch PMS manually to get some
terminal output:
There may be a situation when updating Plex's WebUI will return 404 Not Found. To fix this you just need
to restart plexmediaserver.service .
5 of 6 12/19/21, 14:25
Plex - ArchWiki https://wiki.archlinux.org/title/plex
Official support for Plex Home Theater (from Plex, Inc.) has been discontinued in favour of Plex Media
Player (based on MPV). However, Plex Home Theater was forked and has been developed further by the
Open Source community under the name OpenPHT (https://github.com/RasPlex/OpenPHT)
Installation
Plex Home Theater can be launched by running plexhometheater.sh from your terminal.
Installation
Installation
Content is available under GNU Free Documentation License 1.3 or later unless otherwise noted.
6 of 6 12/19/21, 14:25