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

也有可能是镜像的问题。

总结下来,关键在于:

  1. 按照官方将教程安装 docker nvidia 相关组件
  2. 根据上面jellyfin给出的教程,配置 GPU 信息
  3. 如果使用 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 的问题,清除缓存,重新创建就行了。导致一直以为不是这里设置。。