1. 安装开启 SMB 服务,在 Windows 和 Mac OS 上都可发现服务并挂载使用,但手机上扫描不到 SMB 服务
一直怀疑是 SMB 版本的问题,据说 OMV6 默认最低为 SMB2 协议,但各种测试开启 SMB1 仍旧无法找到,且手机是支持 SMB2 的。
最后意识到只是无法扫描到,手动填入地址可以连接,参见问题:https://forum.openmediavault.org/index.php?thread/44620-smb-server-not-showing-when-scanning/
开启 NetBIOS:
omv-env set OMV_SAMBA_NMBD_ENABLE "YES"
omv-salt stage run prepare
omv-salt stage run deploy
2. Jellyfin 转码问题
使用的 Portainer 安装的 Jellyfin ,其他都正常,想要使用显卡转码视频却发现始终没有成功。后单独建立 docker-compose.yml 创建服务,并按照 官方给的教程进行了配置:https://jellyfin.org/docs/general/administration/hardware-acceleration/#nvidia-hardware-acceleration-on-docker-linux
docker-compose.yml:
version: '3'
services:
jellyfin:
image: ghcr.io/linuxserver/jellyfin:amd64-latest
container_name: jellyfin
environment:
- TZ=Asia/Shanghai
- NVIDIA_DRIVER_CAPABILITIES=compute,video,utility
- NVIDIA_VISIBLE_DEVICES=all
volumes:
- /home/docker/jellyfin/config:/config
- /media/tvseries:/data/tvshows
- /media/movies:/data/movies
ports:
- 8096:8096
- 8920:8920 #optional
restart: unless-stopped
deploy:
resources:
reservations:
devices:
- driver: nvidia
count: 1
capabilities: [gpu]
启动服务后,开启硬件解码
发现转码成功,通过命令 nvidia-smi
打印可看到正在处理的队列
但更新后的 Portainer 已经支持显卡的配置,第一次使用时却没成功,单独配置时成功了,原因不明??
后因为默认启动 Jellyfin 的用户为 root,且每次重启后播放报错,原因在于 /dev/dri 权限的问题。将 root 用户加入 video 用户组即可访问。
后删除了容器,使用 Portainer 重新创建 Jellyfin,发现竟然成功调用了显卡。。但两次使用的 docker 镜像不同,失败的用的是 docker hub 官方镜像,后面成功的用的是
ghcr.io/linuxserver/jellyfin:amd64-latest
也有可能是镜像的问题。
总结下来,关键在于:
- 按照官方将教程安装 docker nvidia 相关组件
- 根据上面jellyfin给出的教程,配置 GPU 信息
- 如果使用 Portainer ,开启 GPU 相关设置即可,如下图
3. FileBrowser 使用
OMV系统的插件中有该插件可安装使用,不过测试下来当运行着 docker 服务的时候,FileBrowser 服务的端口只能在其本地访问,无法通过局域网访问。
貌似是两个有冲突,虽然自带的 FileBrowser 也是通过 docker 运行,但使用的是 podman ,这个问题没有很好的解决办法。因此选择在 docker 中手动安装 FileBrowser。
使用 Portainer 安装镜像,映射 要管理的磁盘到 /srv 目录,即可访问。这里同样有用户的问题,默认为 root 用户,因此通过 FileBrowser 创建的文件/文件夹都属于 root 用户。而 SMB 使用了非 root 用户登录,导致电脑挂载 SMB 磁盘后,无法修改 FileBrowser 创建的相关文件。
因此需要指定 FileBrowser 的用户。官方文档使用命令启动,指定了 PGID 和 PUID 启动。但在 Portainer 中指定环境变量无效。
还有人说通过 Label 指定,但同样无效。后发现 Portainer 的 Command & logging 设置中,有 User 一栏:
可以通过 用户名、 用户名:组名 、用户ID:组ID 等来指定用户。
一开始想过这是设置运行用户的,设置后创建容器就 400 错误了。后面才发现这是 Portainer 的问题,清除缓存,重新创建就行了。导致一直以为不是这里设置。。