Plex
Plex 是一个媒体播放器系统和软件包,包含多个用于 10 英尺用户界面 的播放器应用程序,以及一个关联的媒体服务器,用于组织存储在本地设备上的个人媒体。集成的 Plex 频道为用户提供访问不断增长的在线内容提供商的服务,例如 YouTube、Vimeo、TEDTalks 和 CNN 等。Plex 还为云服务提供集成,包括 Dropbox、Box、Google Drive 或 Copy。
Linux 版 Plex 分为闭源服务器 Plex Media Server 和开源客户端 Plex Home Theater,后者是流行的 Kodi 项目的一个分支。
Plex 媒体服务器 (PMS)
安装
安装 plex-media-serverAUR(稳定更新频道)或 plex-media-server-plexpassAUR(beta 更新频道)。后者仅适用于 Plex Pass 订阅者,可以提前访问改进和/或新功能,但也可能提前访问潜在的错误。即使 beta 更新频道通常非常稳定,也建议安装稳定版本,除非您需要特定的提前访问内容(发行说明)。
配置
启动/启用 plexmediaserver.service
systemd 单元。
要开始配置 Plex 媒体服务器,请浏览至 https://127.0.0.1:32400/web/。
要远程配置 Plex 媒体服务器,您可以首先创建一个 SSH 隧道(设置只能从 localhost
完成)
$ ssh ip.address.of.server -L 8888:localhost:32400
然后浏览至 https://127.0.0.1:8888/web/
。
或者,如果您正在运行 apache,并使用反向代理,可以通过在 httpd-vhosts.conf 中添加此配置
<VirtualHost *:80> ServerName ip.address.of.server ProxyPass / https://127.0.0.1:32400/ ProxyPassReverse / https://127.0.0.1:32400/ </VirtualHost>
自定义域名
Nginx 反向代理
下面给出了使用 Nginx 的反向代理的示例服务器配置,包括证书配置。
/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://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; proxy_set_header X-Forwarded-Proto $scheme; } } # HTTP redirect server { listen 80; listen [::]:80; server_name media.domain.com; include nginxconfig.io/letsencrypt.conf; location / { return 301 https://media.domain.com$request_uri; } }
插件
PMS 可以通过其他插件进行扩展。例如,PMS 可以与 IPTV 插件 一起用作 IPTV 客户端。
插件可以安装在 /var/lib/plex/Plex Media Server/Plug-ins
中。
Plex Live TV 和 DVR
Plex Live TV 需要 plexpass。
要使用 plex 启用直播电视观看和 DVR 支持,您必须拥有 支持页面 上列出的受支持调谐器之一。PMS 将自动识别任何连接的调谐器。
plex 用户需要成为 video 组的成员才能访问本地调谐器。可以通过运行 usermod -a -G video plex
来完成此操作
要通过 m3u 播放列表启用 IPTV 支持,请安装 xTeVeAUR。
Hauppauge
所有 Hauppauge 调谐器的驱动程序都已包含在 Linux 内核中一段时间了(例如,WinTV-DualHD 为 ~v4.7),但是默认情况下不加载固件。查找内核消息:firmware file ‘dvb-demod-siXXXX-YY.fw’ not found
,例如,通过使用 dmesg -w
启动 tail 并启用/插入 (USB) 调谐器设备。如果缺少,请下载相应的 固件文件 并将其复制到 /lib/firmware/
。
安全
建议将您的媒体文件存储在您的主目录之外,因为使其可供 PMS 访问意味着降低其安全性。拥有单独的 /media
或 /mnt/media
分区是与 PMS 一起使用的良好设置。
您可以通过 systemd 进一步提高安全性,方法是 编辑 plexmediaserver.service
如下所示
/etc/systemd/system/plexmediaserver.service.d/restrict.conf
[Service] ReadOnlyPaths=/ ReadWritePaths=/var/lib/plex /tmp
ReadOnlyDirectories
不适用于任何子挂载,您也必须列出它们。资源管理
最初,PMS 使用 ulimit 来限制其分配的资源,但是这与以普通用户身份运行不兼容。相反,您现在可以通过 systemd 再次设置最大内存量。例如,您可以添加
MemoryMax=4G
到上面提到的文件中。
网络
PMS 及其 DLNA 服务器需要打开多个端口
- Plex 媒体服务器:TCP 32400
- Plex DLNA 服务器:TCP 32469,UDP 1900
- 网络发现:UDP 32410、32412、32413、32414
- Bonjour/Avahi 网络发现(旧版):UDP 5353
一个使用 iptables 的简短示例
# iptables -A INPUT -p tcp -m multiport --dports 32400,32469 -j ACCEPT # iptables -A INPUT -p udp -m multiport --dports 1900,32410,32412,32413,32414 -j ACCEPT
为了通过标准 http 端口连接到 Plex,可以使用以下命令(对于端口 8080)
# iptables -t nat -A PREROUTING -p tcp --dport 8080 -j REDIRECT --to-port 32400
然后您可以直接连接到此端口上的 http://yourplexaddress:8080
UFW 规则
如果您使用 UFW 并想为 Plex 创建一个应用程序列表条目,请创建/编辑 /etc/ufw/applications.d/plexmediaserver
并确保它包含以下内容
[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) description=The Plex Media Server (with additional DLNA capability) ports=32400/tcp|3005/tcp|5353/udp|8324/tcp|32410:32414/udp|1900/udp|32469/tcp
保存文件后,使用以下命令重新加载 UFW 应用程序定义
# ufw app update plexmediaserver
然后最终使用以下命令允许 Plex 应用程序
# ufw allow plexmediaserver-all
媒体库更新
Plex 媒体服务器有一个设置“自动更新我的媒体库”,它可以检测下载到您的媒体库的新媒体文件。但是,随着您的媒体库增长,这些更新可能会停止可靠地工作。要修复此问题,您需要增加非 root 用户允许订阅的文件数量,通过 inotify。创建文件 /etc/sysctl.d/40-max-user-watches.conf
/etc/sysctl.d/40-max-user-watches.conf
fs.inotify.max_user_watches=524288
并运行
# sysctl --system
无需重启即可应用。现在 plex 应该可以看到任何新文件。
故障排除
日志位于 /var/lib/plex/Plex Media Server/Logs
中。
如果没有任何日志或它们没有帮助,您可能需要手动启动 PMS 以获取一些终端输出
[plex]$ source /etc/conf.d/plexmediaserver [plex]$ export LD_LIBRARY_PATH=/usr/lib/plexmediaserver [plex]$ /usr/lib/plexmediaserver/Plex\ Media\ Server
Plex 的 WebUI 返回 404
在更新 Plex 的 WebUI 时,可能会出现返回 404 Not Found 的情况。要解决此问题,您只需 重启 plexmediaserver.service
。
长时间运行的停止任务
当注销、关闭或手动停止 plexmediaserver.service
时,可能需要很长时间才能完成 systemd 停止任务。这可能是由于 Plex Tuner Service 中的一个 bug。[1]
如果您不使用 Plex 的 DVR 功能,可以阻止 Plex Tuner Service 运行。首先,停止 plexmediaserver.service
,然后重命名相关可执行文件
# mv '/usr/lib/plexmediaserver/Plex Tuner Service' '/usr/lib/plexmediaserver/Plex Tuner Service.disabled'
最后,再次启动 plexmediaserver.service
。
为了避免在每次更新后手动重复这些步骤,请使用 /etc/pacman.conf
中的 NoExtract 数组来阻止安装此文件。
Plex 未检测到文件夹或外部驱动器
为了让 Plex 看到文件夹,需要为其提供读取和执行权限。这是因为 Plex 以用户“plex”而不是您的用户身份运行。因此,默认情况下它将无法访问您的 /home/ 文件夹。最佳实践是将媒体放入根文件夹(例如 /PlexMedia/
)或外部驱动器中的文件夹。然后,您必须通过以下代码或通过文件资源管理器设置来为其提供读取和执行权限。
# chmod -R 775 path/to/media/folder
如果尚未设置,请将所有者/组设置为您的用户名。
# chown yourusername:yourusername /mediafolder
外部驱动器
如果您尚未为驱动器显式设置挂载配置,则当您尝试通过文件资源管理器访问驱动器时,您的桌面环境(例如 GNOME 或 KDE)可能会自动挂载它。Plex 将无法访问该驱动器。这是因为桌面环境将其挂载到您的用户(通过 FUSE),而 Plex 默认使用“plex”用户。
您需要手动挂载驱动器才能让 Plex 看到它们,方法是设置挂载点。有关更多详细信息,请参见 Fstab。您还可以使用诸如 KDE Partition Manager 或 GNOME Disks 之类的程序来设置分区的挂载点。确保为外部驱动器提供正确的用户权限。
Plex for Desktop
Plex Desktop 是 Plex 当前发布的桌面媒体客户端。它已正式取代 Plex Home Theater (PHT) 和 Plex Media Player (PMP),并包含 Plex Pass 用户的下载。PMP 在 2020 年 达到其 EOL,尽管它仍然保留“TV 模式”(已由 Plex HTPC 取代)。请记住,Plex 的桌面应用程序是闭源的。
安装
可以从 Snap 或 plex-desktopAUR 软件包安装 plex-desktop 软件包。
Kodi 和 PleXBMC
使用 PleXBMC 插件,Kodi 可以用作 PHT 的替代品。
安装
安装 kodi 软件包,然后按照 https://kodi.wiki/view/Add-on:PleXBMC 上的说明进行操作。