一个主要用于 nas 场景的集成了迅雷, 百度网盘等软件的 docker ubuntu vnc 镜像 - 适用于 x86 环境

本贴最后更新于 975 天前,其中的信息可能已经天翻地覆

Screen Shot 2021-03-03 at 10.32.25 PM### 安装软件

  • 百度云
  • 迅雷
  • 网易云音乐
  • 网易云音乐-Unblock
  • 搜狗拼音输入法
  • xnview-图片浏览器
  • SMPlayer-视频播放
  • dupeguru-重复文件检索
  • Chromium
  • UI 中文语言支持
    ...
    考虑镜像体积,只装了个人觉得必要的部分,有其他需求可以进入容器内自行安装
    个人试过 nextcloud 客户端,vlc,wps,mega,都可以安装成功并运行

镜像

Docker Hub

https://github.com/cclient/ubuntu-vnc-xfce-chromium-g3

启动命令

vnc 客户端访问

docker run --user root -d --name vnc -e VNC_PW=headless -e LIBVA_DRIVER_NAME=iHD -v /root/headless_config_baidunetdisk:/home/headless/.config/baidunetdisk -v /root/headless_cache:/home/headless/.cache -v /root/headless_ThunderNetwork:/home/headless/ThunderNetwork --device /dev/dri:/dev/dri -p 5901:5901 cclient/ubuntu-vnc-xfce-chromium-g3:vnc

浏览器访问

docker run --user root -d --name vnc -e VNC_PW=headless -e LIBVA_DRIVER_NAME=iHD -v /root/headless_config_baidunetdisk:/home/headless/.config/baidunetdisk -v /root/headless_cache:/home/headless/.cache -v /root/headless_ThunderNetwork:/home/headless/ThunderNetwork --device /dev/dri:/dev/dri -p 6901:6901 cclient/ubuntu-vnc-xfce-chromium-g3:vnc-novnc

参数说明

通用参数

--user headless / root 以指定用户身份访问,root 其实方便一些,不过有些软件例如 vlc, nextcloud 无法以 root 用户执行,需要以 headless 运行,或更改设置,若直接以 headless 启动,则因为部分目录权限问题,不可保存登录状态,需以 root 进入容器,更改相关目录的权限

-e VNC_PW=headless vnc 密码

-e LANG='zh_CN.utf8' 指定 UI 为中文,默认英语,建议对英文环境不熟悉的先用中文进入熟悉环境,然后以英语启动,中文环境下终端的字体比较诡异

视频硬解显卡相关参数-实际并不生效,未解决

--device /dev/dri:/dev/dri 显卡,映射显卡,硬解使用,虽然查看显卡信息正常,但我个人硬解并不生效

-e LIBVA_DRIVER_NAME=iHD 显卡名称,需根据不同的显卡调整,我个人的 U 集显为 hd630 LIBVA_DRIVER_NAME 设置为 iHD,hd610 可能是 i915 其他显卡需要自行测试

支持 `i915,i965,iHD,iris,kms_swrast,nouveau,nouveau_vieux,r200,r300,r600,radeon,radeonsi,swrast,virtio_gpu,vmwgfx,zink 这些参数,可以查询相应的显卡设置值,或更改 env 测试

测试方法如下,更改环境变量后执行 vainfo

export LIBVA_DRIVER_NAME=iHD
vainfo

匹配成功则输出

root@83e7992ab44a:~# vainfo
error: XDG_RUNTIME_DIR not set in the environment.
libva info: VA-API version 1.7.0
libva info: User environment variable requested driver 'iHD'
libva info: Trying to open /usr/lib/x86_64-linux-gnu/dri/iHD_drv_video.so
libva info: Found init function __vaDriverInit_1_7
libva info: va_openDriver() returns 0
vainfo: VA-API version: 1.7 (libva 2.6.0)
vainfo: Driver version: Intel iHD driver for Intel(R) Gen Graphics - 20.1.1 ()
vainfo: Supported profile and entrypoints
      VAProfileMPEG2Simple            :	VAEntrypointVLD
      VAProfileMPEG2Main              :	VAEntrypointVLD
      VAProfileH264Main               :	VAEntrypointVLD
      VAProfileH264Main               :	VAEntrypointEncSliceLP
      VAProfileH264High               :	VAEntrypointVLD
      VAProfileH264High               :	VAEntrypointEncSliceLP
      VAProfileJPEGBaseline           :	VAEntrypointVLD
      VAProfileJPEGBaseline           :	VAEntrypointEncPicture
      VAProfileH264ConstrainedBaseline:	VAEntrypointVLD
      VAProfileH264ConstrainedBaseline:	VAEntrypointEncSliceLP
      VAProfileVP8Version0_3          :	VAEntrypointVLD
      VAProfileHEVCMain               :	VAEntrypointVLD
      VAProfileHEVCMain10             :	VAEntrypointVLD
      VAProfileVP9Profile0            :	VAEntrypointVLD
      VAProfileVP9Profile2            :	VAEntrypointVLD

匹配失败则输出

root@83e7992ab44a:~# vainfo
error: XDG_RUNTIME_DIR not set in the environment.
libva info: VA-API version 1.7.0
libva info: User environment variable requested driver 'i915'
libva info: Trying to open /usr/lib/x86_64-linux-gnu/dri/i915_drv_video.so
libva info: va_openDriver() returns -1
vaInitialize failed with error code -1 (unknown libva error),exit

不过虽然看样子驱动成功了,但个人实际播放视频并没有使用硬解,我也不知哪里的问题,还希望熟悉的提示解决

软件状态保持参数-需 -v 映射外部目录(主要是登录状态)
软件 描述 路径
迅雷 软件运行状态/用户登录信息 /home/headless/ThunderNetwork
迅雷 默认下载目录,可操作调整 /home/headless/迅雷下载
百度云 软件运行状态/用户登录信息 /home/headless/.config/baidunetdisk
百度云 默认下载目录,可操作调整 /home/headless
网易云音乐 软件运行状态/用户登录信息 /home/headless/.cache/netease-cloud-music
/home/headless/ThunderNetwork
/home/headless/.config
/home/headless/.cache

其实可以粗放些,直接映射以下三个目录,若以 headless 启动,则因为 headless 对部分目录无权限,导致无法保存,需以 root 进入容器,更改权限

操作如下

docker exec --user root -it vnc bash 
chmod headless:headless -R /home/headless

最初的 nas 下载软件选型

国内 nas,迅雷,百度云足够覆盖日常应用场景,最初参照学习选型


现方案的软件选型

百度云

https://hub.docker.com/r/johnshine/baidunetdisk-crossover-vnc/

百度云本想用 baidunetdisk-crossover-vnc

因为这是专为群晖做的适配,个人系统为 omv,当时可以启动运行,但无法登录,短期不好解决,现在的版本在 omv 下运行良好

了解到 baidunetdisk-crossover-vnc 是基于 vnc 实现的,我另找个 vnc 镜像再装个 baidu 云不就好了

安装百度云官方 deb 包 https://pan.baidu.com/download#pan

迅雷

既然有了 vnc 的桌面环境,找找有没有迅雷的 linux 包,官方的没找到,找到了网友提供安装包

https://tieba.baidu.com/p/6926605744

网易云音乐

nas 除了文件下载,音乐下载也是需要的,考虑会员限制,Unblock 也是需要的

首先强调下,vnc 不支持音频,播放无声,只是下载

网易云音乐-Unblock

最好能把 Unblock 集成在镜像内,并且可以切换是否使用代理,有会员的直接使用,无会员的 Unblock 使用

集成了 Unblock 服务

并在桌面上添加了两个图标

  • Del Proxy 关闭 Unblock-有会员
  • Add Proxy 启动 Unblock-无会员

搜狗拼音输入法

中文环境,需要中文输入法

xnview-图片浏览器

https://www.xnview.com/en/

迅雷和百度云下的文件,主要是图片和视频类,需要基本的查看预览

图片浏览/管理

SMPlayer-视频播放

https://www.smplayer.info/

视频播放有个硬件直通的问题

这个我个人一直没解决-已经把显卡映身进镜像了,驱动也显示正常,但是播放时并不会使用硬解

个人试了多项视频播放器

vlc 功能强大,使用的人也较多(个人 mac,app,机顶盒也是用的 vlc)

该镜像内视频播放器,主要目的是预览视频,不是真正的播放

同时鉴于 nas 平台的性能一般,负载也是很重要的考虑因素

在同样硬解无法生效的前提下 SMPlayer 的负载远比 vlc 要低,个人感觉 SMPlayer 的负载是 vlc 的 1/3

vlc 的安装包也更大

因此个人选择 SMPlayer,对 vlc 有需求的,可以直接在镜像内执行 apt-get install vlc 其他视频播放器也同理

dupeguru-重复文件检索

https://dupeguru.voltaicideas.net/

nas 下重复文件检索也是必须的功能,dupeguru 是带 ui 的较好的方案

安装时遇到一些问题,不过解决了

Chromium

这是底包自带的

UI 中文语言支持

已安装,启动时指定环境变量生效


补充

vnc 底包结合需要安装的软件试了多种

aicampbell/vnc-ubuntu18-xfce

https://github.com/accetto/ubuntu-vnc-xfce

https://github.com/accetto/ubuntu-vnc-xfce-g3

最终选择 accetto/ubuntu-vnc-xfce-g3


总结

对 cpu 性能较强,且支持硬件直通的 nas 机器提升有限,因为可以用虚拟机 + 各种直通(网卡/硬盘/显卡)的方案

对 J1900 之类低性能且不支硬件直通的 nas 提升较大

docker 的方案,整体 cpu 负载比虚拟机低倒是其次,主要是 io 的负载,不支持硬件直通的 nas,除了虚拟磁盘,只能是宿主机开 smb/nfs,虚拟机挂载 smb/nfs 之类方案,io 的负载都较高

docker 的方案,可以直接挂载宿主机的目录,对不支持硬件直通的设备更友好,io 几乎无额外开销

负载低,耗电量也低


2019 年末入了蜗牛星际的坑,然后开始入 nas 的坑

因为本人工作一部分就涉及 linxu 集群,kubernetes/k8s,大数据组件的管理和运维,对 docker 也比较熟悉,所以也因需整理了一些 nas 相关的镜像

这个镜像,断断续续花费了个人两周左右,太折腾人了

本来只是自已在使用

目前个人升级了 nas 方案,该方案对我个人意义降低,调整优化了下镜像,共享出来,供需要的人使用

官方的 krusader 中文乱码,个人加了中文支持 https://hub.docker.com/repository/docker/cclient/krusader-chinese

有时间会介绍下自已的 nas 方案,并做些简单教程

原文地址:https://www.cnblogs.com/zihunqingxin/p/14477971.html

  • Docker

    Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的操作系统上。容器完全使用沙箱机制,几乎没有性能开销,可以很容易地在机器和数据中心中运行。

    476 引用 • 899 回帖
  • NAS
    17 引用 • 50 回帖 • 1 关注
  • OMV
    1 引用

相关帖子

欢迎来到这里!

我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。

注册 关于
请输入回帖内容 ...