本文会介绍如何在威联通NAS上部署Emby,并演示如何调用独显进行转码,以我作为主力NAS的TS-673A为如果例。
碎碎念
V1500B这颗U虽然有点老,但对于NAS来说整体其实还不错,毕竟今年的群晖新品NAS还在继续用~由于没有集显因此Emby只能软解(CPU占用会直接干满),再加上家里的小水管以及我有高频外网看视频的需求,独显是必备的。除此之外,我还购买了Emby的终身Premiere服务。各种开心版用过不少,但当你的使用频率够高后,会发现还是正版授权来的更舒服。我最终的使用评价是:贵但香!
(当群友得知我入正后,便立马上车了)😂
这篇文章其实来的有些晚。从威联通TVS-675(兆芯处理器)发布这几年以来,虽然有在CHH等论坛看到大家讨论例如TS-675、TS-673A、TS-873A的PCIe扩展槽装什么显卡比较合适之类的话题,但却没有一篇完整的独显使用文章(可能大家NAS用独显的并不多吧!)。折腾的时候原本想着逃课抄作业,搜索一通却无作业可抄,不过最终捣鼓几下便成功了~
那么作为一个NAS重度患者,尤其是威联通NAS用户,就再来为NAS使用心得再添砖加瓦!
PS:NAS具备PCIe且插了独显的朋友,即便你不是威联通NAS,我认为仍可作为参考。核显相关的教程貌似已经不少了,因此并没有再去进行额外的测试。另外,Jellyfin的用户也可参考本文进行尝试。
显卡相关
我这块卡是1050Ti,将其插到NAS的任意一个PCie插槽。
开机后在威联通的App Center中安装最新的NVIDIA_GPU_DRV
后。
打开控制台,可以在「系统」-「硬件」-「硬件资源」中看到GPU信息。
资源使用一栏,将安装的显卡设置为Container Station模式
,重启设备。
部署EMBY
部署代码如下,但是先别着急部署,还有准备需要做!
services:
emby:
image: emby/embyserver:latest
container_name: embyserver
network_mode: host
runtime: nvidia-runtime # 匹配你的 docker info 中的 runtime 名称
restart: unless-stopped
environment:
- UID=0 # 设置容器内部的用户 ID 为 root 用户
- GID=0 # 设置容器内部的组 ID 为 root 组
- GIDLIST=0 # 设置其他需要的组 ID 列表
- PUID=0 # 设置容器内的用户 ID 为 root 用户
- PGID=0 # 设置容器内的组 ID 为 root 组
- NVIDIA_VISIBLE_DEVICES=all
- NVIDIA_DRIVER_CAPABILITIES=all
- LANG=zh_CN.UTF-8
- XDG_CACHE_HOME=/config/cache
- TZ=Asia/Shanghai
volumes:
- /share/Container/emby/config:/config
- /share/Media/Movies:/mnt/movies
- /share/Media/TVShows:/mnt/tvshows
- /share/Media/Anime:/mnt/anime
- /share/Media/Documentaries:/mnt/documentaries
ports:
- 8096:8096 # HTTP port
- 8920:8920 # HTTPS port
# devices:
# - /dev/dri:/dev/dri
privileged: true
已使用runtime: nvidia-runtime
,其实不再需要/dev/dri
映射(它适用于 VAAPI 核显,NVENC/NVDEC 不依赖它。)。
如上面的部署代码,系统在尝试启动 Emby 容器时,Docker 尝试使用名为 nvidia 的 runtime,但一般的NAS系统都并未配置该 runtime,因此我们并不能部署成功。
所以需要我们进行以下操作:
通过SSH工具连接NAS,直接将以下指令拷贝后输入。
# 编辑 daemon.json 并添加 nvidia runtime
sudo tee /etc/docker/daemon.json > /dev/null <<-'EOF'
{
"runtimes": {
"nvidia": {
"path": "/usr/bin/nvidia-container-runtime",
"runtimeArgs": []
}
}
}
EOF
sudo tee
:让写入文件的权限提升为 root
> /dev/null
:避免内容被打印出来,纯粹是为了美观
运行以下命令查看配置文件内容:
cat /etc/docker/daemon.json
如下图所示,跟上面编辑进去的内容一致即可。
重启完毕后,运行以下命令验证。
docker info | grep -i runtime
你应看到类似于以下的输出结果:
Runtimes: n
idia runc
Default Runtime: runc
我这里的输出结果如下图所示。
接着重启设备。
Docker 成功识别了 nvidia-runtime
,说明 daemon.json
文件配置已经生效。
runtime: nvidia-runtime
便是我们所需要的。
这与Emby给出的部署命令并不相同(如下图),要改成你自己的设备所得(如上文)。
修改完毕后如本节开头所示的代码,便是我这台TS-673A所使用的部署代码。
查看效果
Emby部署完毕后,进入控制台,左侧栏点击「正在转码」,选择高级硬件加速后便可看到独显相关了。
进行网页播放测试,完全没问题,会自动进行转码。
客户端也一样。
至此便已经配置完成。
评论区