关于 plex
plex是一款优秀的媒体服务器
安装 Docker
群晖安装Docker很方便,直接在套件中心找到Docker安装即可
软解码安装
容器安装
1.在群晖Docker注册表中搜索plex,找到plexinc/pms-docker,双击加载,选择自己所需的版本,此处选择 latest 版本。
2.在群晖Docker映像中双击plexinc/pms-docker:latest
来创建一个容器
3.容器名称:plex
4.点击「高级选项」进行配置
「卷」选项卡
Local location | Container location | Usage |
---|---|---|
/docker/plex/database |
/config |
配置 |
/docker/plex/transcode/temp |
/transcode |
缓存 |
/share/plex/media |
/data |
媒体文件 |
「端口」选项卡
本地端口 | 容器端口 | 类型 |
---|---|---|
32400 | 32400 | tcp |
「环境变量」选项卡
默认即可
硬解码安装
由于硬解码必须要映射devices,所以需要在linux使用docker指令完成,但也不难一步一步跟上就行
- 需要DSM上开启ssh(建议不要用22,可以换个其他的,防止被爆破),然后确保关于这个端口的防火墙畅通,如果外网做好端口映射
- ssh登陆到群辉shell
sudo -i
获取root权限- docker 相关指令,参考下面部分
建议创建的目录
.../plex/database
.../plex/transcode/temp
.../plex/media
以上目录需要设置权限为Everyone
官方说明:http://hub.docker.com/r/plexinc/pms-docker
参考:
sudo -i
docker run \
-d \
--name plex \
-p 32400:32400/tcp \
-e TZ="<timezone>" \
-e PLEX_CLAIM="<claimToken>" \
-v <path/to/plex/database>:/config \
-v <path/to/transcode/temp>:/transcode \
-v <path/to/media>:/data \
--net=bridge \
--device /dev/dri/renderD128:/dev/dri/renderD128 \
--device /dev/dri/card0:/dev/dri/card0 \
plexinc/pms-docker
<timezone>
我这里填写Asia/Shanghai
参考:http://en.wikipedia.org/wiki/List_of_tz_database_time_zones<claimToken>
这里可以到plex获取
地址:http://www.plex.tv/claim
实际使用:
sudo -i
docker run \
-d \
--name plex \
-p 32400:32400/tcp \
-e PLEX_UID=1026 \
-e PLEX_GID=101 \
-e TZ="Asia/Shanghai" \
-e PLEX_CLAIM="claim-xxx" \
-v /volume1/docker/plex/database:/config \
-v /volume1/docker/plex/transcode/temp:/transcode \
-v /volume1/share/plex/media:/data \
--net=bridge \
--device=/dev/dri:/dev/dri \
plexinc/pms-docker
注意这里的 PLEX_UID
and PLEX_GID
可以通过以下语句得到
id `swack`
###
uid=1026(swack) gid=100(users) groups=100(users),101(administrators)
sudo -i
# 将显卡节点权限给管理员swack
chown -R swack:administrators /dev/dri
这里需要注意,权限在你升级DSM后会被重新恢复成root,可用上面指令再次设置即可,设置完成后重启plex容器
硬解码开启流程(仅当没有修改容器中显卡设备节点权限时适用)
plex想要开启硬解码,我反复尝试发现是有流程性的,不需要严格按照流程执行
我测试的Tag:plexinc/pms-docker:1.19.5.3112-b23ab3896
如果你已经安装过plex的docker请先清除/volume1/docker/plex/database
目录中的所有文件,注意做好备份
- 然后按照上述流程安装好容器
- 下来需要进入容器配置下GPU设备节点的使用权限(一定要在播放影片前进行权限操作,否则需要关闭容器,然后赋予权限,再打开容器,最后播放电影)
sudo docker exec -it plex /bin/bash chown -R plex:video /dev/dri chmod -R 777 /dev/dri
- 完成后我们就可以进入
http://localhost:32400/web
,记住一定要先配置硬件再初始化plex - 为了对比可以初始化先开打一个需要解码的视频。由于当前是软解码CPU占用会很高
- 配置硬解码
- 首先需要你开通
plex pass
- 登陆plex主界面
>
更多>
你自己的服务器(右边省略号)>
服务器管理>
设置>
转码器>
勾选 Use hardware acceleration when available>
保存修改 - 再打开一个需要解码的视频,硬解码生效
- 首先需要你开通
注意,以上操作确实可以硬解码了,但是如果你docker中plex容器重启的话,硬解码就失效了,你需要重新将上述步骤操作一遍才行
所以我们需要让赋值权限的操作可以自动化,跟着我去实现
首先需要将自启动脚本放到plex的/config
目录中,如果你按照我如上操作映射了,应该在群辉的/docker/plex/database
目录,两者是等效的
然后你可以试着测试下
docker stop plex
docker start plex
sudo docker exec -it plex /bin/bash
ls -la /dev/dri/
这样完成后,你可以无需担心nas重启后plex硬解码失效了
初始化操作
默认去尝试打开url:http://xxx.i234.me:
这显示是有点问题!
这里在群晖NAS上的初始化比较有技巧性,因为官方有这段说明
Running on a headless server with container using host networking
主要为了告诉我们如果想进入初始化服务器的界面,必须要在本地登录:http://localhost:32400/web
而使用例如:http://192.168.1.1:32400/web 或者 http://www.example.com:32400/web 的形式是无法触发配置界面的
而实际中群辉的DSM中并没有内嵌本地的浏览器,所以我们可以迂回下解决
使用如下语句来ssh映射本地端口
ssh -p 22 username@ip_of_server -L localhost:32400:localhost:32400 -N
然后再在本地的浏览器中敲入url:localhost:
这里你可能遇到如下错误:
SSH tunneling error: “channel 1: open failed: administratively prohibited: open failed”
解决的方法是将ssh配置中AllowTcpForwarding
改成yes
sudo vim /etc/ssh/sshd_config
# 修改文件
AllowTcpForwarding = yes
关于绑定账号
- 如果你之前没有没有填写正确的
PLEX_CLAIM
,那么可以如下补救措施
这下你能去设置了,这里最重要的一步是将你的服务器绑定到自己的plex账号
- 如果绑定了正确的
PLEX_CLAIM
(每个ID只有4分钟有效时间,所以需要四分钟内创建容器),那么plex会自动绑定
关于网络连接
实际测试,你完全可以用nginx反向代理后来使用web端的plex
而且我发现及时反向代理后Url:http://www.example.com:32400 但这并不影响plex的远程访问,唯一要做的的是手动指定端口
SSL相关
推荐方法
使用plex自带的ssl机制
除此之外,这里再介绍下如何使用群辉DDNS获取letsencrypt证书,并使用的方法
plex其实本身就有自己的ssl机制
获取pfx证书
获取 Let’s Encrypt 证书:
管理员身份进入DSM >
控制面板 >
安全性 >
证书 >
右击已有证书 >
导出证书 >
解压 archive.zip
下来需要openssl的支持,我这里是安装了WSL,直接在WSL中操作的(也可下载windows版本的openssl)
cd archive
openssl pkcs12 -export -in cert.pem -inkey privkey.pem -out archive.pfx
###
Enter Export Password:
Verifying - Enter Export Password:
这里输入的密码要记住,比如密码为123
,然后会在目录中得到archive.pfx
配置plex
首先在plex容器的root目录/volume1/docker/plex/database
中创建以下目录
cd /volume1/docker/plex/database
mkdir -p /volume1/docker/plex/database/ssl/swack.i234.me/
将archive.pfx
拷贝到/volume1/docker/plex/database/ssl/swack.i234.me/
登录plex >
打开设置 >
网络
这里需要注意,正如我们创建容器中映射的/volume1/docker/plex/database
对应着/config
这里的xxx.i234.me
替换为自己的域名
全部配置完成,需要重启容器来生效