在 Linux 上安装 Plex Media Server ( Docker/deb )

  linux干货


通过 DEB 安装
应该是最简单的方式了吧. 先在官方网站找到适配自己系统的软件包并下载. 测试时使用 Debian.
下载完成后, 在 Root 权限下运行: dpkg -i plexmediaserver*.deb 进行安装.
如果出现软件包依赖错误, 可以尝试运行 apt install -f.
如果需要卸载: dpkg --purge plexmediaserver 即可.

配置开机自启.

systemctl enable plexmediaserver.service && systemctl start plexmediaserver.service 
至此, 安装已经全部完成, 下面是 Docker 的安装方法.
通过 Docker 安装
Plex 官方提供了镜像 pms-docker
支持 Bridge Host MacVLAN 三种网络类型.
Bridge: 在主机内部创建完整的网络并运行容器. 通过内部路由器连接到物理网络.
Host: 使用主机的 IP 地址, 使容器的网络就像是主机本身.
MacVLAN: 在网络上将容器作为一个新的虚拟主机创建.
后两者配置方式类似且较为方便, 但是默认的桥接模式适用于某些特殊网络.

Host Networking

docker run \
-d \
--name plex \
--network=host \
-e TZ="" \
-e PLEX_CLAIM="" \
-v :/config \
-v :/transcode \
-v :/data \
plexinc/pms-docker

Macvlan Networking

docker run \
-d \
--name plex \
--network=physical \ #你可以改成喜欢的网络名
--ip=<ipaddress> \ #指定容器的IP地址, 非必填.
-e TZ="<timezone>" \
-e PLEX_CLAIM="<claimtoken>" \
-h <hostname> \ #设置 Docker 内的主机名.
-v <path>:/config \
-v <path>:/transcode \
-v <path media>:/data \
plexinc/pms-docker

Bridge Networking (最麻烦)

如果您希望 Plex Media Server 可以在公网进行访问,则必须在路由器上手动设置端口转发到指定的ADVERTISE_IP。 默认情况下,您可以转发端口32400,但如果选择使用其他端口,请确保在 Plex Media Server 的远程访问设置中进行配置。 使用这种类型的 docker 网络,Plex Media Server 实质上在两层路由器后,它无法自动设置端口转发。

docker run \
-d \
--name plex \
-p 32400:32400/tcp \ #管理界面端口
-p 3005:3005/tcp \
-p 8324:8324/tcp \
-p 32469:32469/tcp \
-p 1900:1900/udp \
-p 32410:32410/udp \
-p 32412:32412/udp \
-p 32413:32413/udp \
-p 32414:32414/udp \
-e TZ="<timezone>" \ #设置容器内时区, 参考维基百科中"TZ database name"
-e PLEX_CLAIM="<claimtoken>" \
-e ADVERTISE_IP="http://<hostipaddress>:32400/" \ #配置额外的IP
-h <hostname> \ #设置 Docker 内的主机名.
-v <path>:/config \ #储存配置文件的路径, 随着储存数量增加, 配置文件可能会变得很大.
-v <path>:/transcode \ #储存临时转码文件的目录, 需要约10G.
-v <path media>:/data \ #作为向容器提供媒体的范例目录. (笔者看不懂文档了.)
plexinc/pms-docker

[在以上三种运行模式中] 可配置的其他参数:
PLEX_UID: 在容器内部的 Plex 用户ID.
PLEX_GID: 在容器内部的 Plex 用户组ID.
CHANGE_CONFIG_DIR_OWNERSHIP:
修改配置文件目录所有权为 Plex 用户, 默认为 True. 如果已设置权限, 可改为 False 以加快首次运行.
ALLOWED_NETWORKS: 允许未经验证访问服务器的 IP段. 例如: 127.0.0.1/8.
[ 如果使用桥接网络, Docker网关的IP通常为 172.16.0.1 ]

用户与组

容器外部媒体文件的访问权限作用于在容器内部的 Plex 服务器.
但是 Plex 作为容器内部创建的用户, 可能不存在于容器外部.
如果想让 Plex 以和当前用户(外部) 相同的权限运行. 可以这么做:
运行id `whoami`, 得到的回显像这样: uid=1001(myuser) gid=1001(myuser) groups=1001(myuser)
将 PLEX_UID 和 PLEX_GID 设置成与你本地用户相同的即可.

配置目录

在 Docker 内部, 数据库被储藏于 config 目录下的 Library/Application Support/Plex Media Server
如果你想把通过其他方式安装的数据库迁移到这里, 可以先参考官方文档来找到数据库目录.
若配置文件被存在这里 /var/lib/plexmediaserver/Library/Application Support/Plex Media Server/, 配置目录将是 /var/lib/plexmediaserver.
如果配置目录不包含 Library/Application Support/Plex Media Server/ 或者文件夹 Library 内有与 Plex 无关的数据. 那你应该:

  • 创建新目录来储存配日志文件
  • 在配置文件目录中, 创建文件夹 Library/Application Support
  • 把 Plex Media Server 复制到 Library/Application Support
    注意: Plex 会获取配置文件目录的所有权, 所以目录中不应该有你认为它不该获得权限的文件.

控制方法

  • 启动容器 docker start plex
  • 停止容器 docker stop plex
  • 进入运行中的容器 docker exec -it plex /bin/bash
  • 实时查看脚本日志 docker logs -f plex
  • 重启并升级到最新版 docker restart plex

官方Docker 文档地址: https://hub.docker.com/r/plexinc/pms-docker