跳转至内容

Plex

来自 ArchWiki

Plex 是一个媒体播放器系统和软件套件,包含许多用于10英尺用户界面的播放器应用程序,以及一个相关的媒体服务器,用于整理存储在本地设备上的个人媒体。集成的 Plex Channels 为用户提供了访问日益增长的在线内容提供商的途径,例如 YouTube、Vimeo、TEDTalks 和 CNN 等。Plex 还提供与云服务的集成,包括 Dropbox、Box、Google Drive 或 Copy。

Linux 版 Plex 分为闭源服务器 Plex Media Server,以及开源客户端 Plex Home Theater,后者是流行的Kodi项目的一个分支。

Plex Media Server (PMS)

安装

安装 plex-media-serverAUR(稳定更新频道)或 plex-media-server-plexpassAUR(Beta 更新频道)。后者仅供 Plex Pass 订阅者使用,可以提前获得改进和/或新功能,但也可能提前遇到潜在的 Bug。尽管 Beta 更新频道通常相当稳定,但建议安装稳定版本,除非您需要特定的早期访问内容(发布说明)。

配置

启动/启用 plexmediaserver.service systemd 单元。

要开始配置 Plex Media Server,请浏览至 https://:32400/web/

要远程配置 Plex Media Server,您可以先创建一个 SSH 隧道(设置只能从 localhost 进行)

$ ssh ip.address.of.server -L 8888:localhost:32400

然后浏览至 https://:8888/web/

或者,如果您正在运行 Apache 并使用反向代理,请在 httpd-vhosts.conf 中添加以下配置

 <VirtualHost *:80>
   ServerName ip.address.of.server
   ProxyPass        / https://:32400/
   ProxyPassReverse / https://: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://: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 直播电视与 DVR

Plex 直播电视需要 plexpass。

要启用 Plex 的直播电视观看和 DVR 支持,您必须拥有支持的调谐器之一,这些调谐器列在 支持页面上。PMS 将自动识别任何连接的调谐器。

Plex 用户需要属于 video 组才能访问本地调谐器。可以通过运行 usermod -a -G video plex 来完成此操作。

要通过 m3u 播放列表启用 IPTV 支持,请安装 xTeVeAUR

Hauppauge

所有 Hauppauge 调谐器的驱动程序已包含在 Linux 内核中一段时间(例如,WinTV-DualHD 的 ~v4.7),但固件默认不会加载。通过例如使用 dmesg -w 启动 tail 来查找内核消息:firmware file ‘dvb-demod-siXXXX-YY.fw’ not found,并启用/插入(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 同时支持 IPv4 和 IPv6。本节仅假定使用 IPv4。

PMS 及其 DLNA 服务器需要打开几个端口

  • Plex Media Server: TCP 32400
  • Plex DLNA Server: 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 Media Server 有一个“自动更新我的库”的设置,可以检测到您下载到库中的新媒体文件。但随着库的增长,这些更新可能不再可靠工作。要解决此问题,您需要增加非 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 应该能看到任何新文件。

故障排除

本文章或章节需要扩充。

原因: 查看 journalctl 是否可以等同于 SYSTEMD_LOG_LEVEL=debug,目前似乎不可靠,请参阅 User talk:Alucryd#Plex(在 Talk: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,尽管它仍然保留了“电视模式”(已被 Plex HTPC 取代)。请注意,Plex 的桌面应用程序是闭源的。

安装

Snapplex-desktopAUR 包可以从 Snap 安装。

Kodi 和 PleXBMC

使用 PleXBMC 插件,Kodi 可以作为 PHT 的替代品。

安装

安装 kodi 包,然后按照 https://kodi.wiki/view/Add-on:PleXBMC 上的说明进行操作。

© . This site is unofficial and not affiliated with Arch Linux.

Content is available under GNU Free Documentation License 1.3 or later unless otherwise noted.