能在浏览器中运行桌面版linux的Webtop

什么是 WebTop ?

它是一个基于 LinuxUbuntuAlpine 两种版本)的轻量级容器,具有在浏览器中运行的完整桌面环境,具有基本的窗口管理器、像素完美的渲染分辨率、音频支持、剪贴板支持、屏幕键盘支持,以及用于上传/下载的远程文件管理。

安装

推荐用命令行(docker cli)或者 docker compose 安装,因为可以通过 shm_size 参数调整共享内存的大小,来达到优化效果。

optional 为可选项,请根据需要进行修改

1
2
3
4
5
6
7
8
9
10
11
12
13
14
# 创建容器
docker run -d \
--name=webtop \
--privileged `#optional` \
-e PUID=1000 \
-e PGID=1000 \
-e TZ=Asia/Shanghai \
-e SUBFOLDER=/ `#optional` \
-p 3000:3000 \
-v /path/to/data:/config \
-v /var/run/docker.sock:/var/run/docker.sock `#optional` \
--shm-size="1gb" `#optional` \
--restart unless-stopped \
linuxserver/webtop

当然也可以用群晖 Docker 管理器安装。

在注册表中搜索 webtop ,选择第一个 linuxserver/webtop,版本选择 latest

默认是 Alpine ,看起来还有 fedoraUbuntu、而桌面环境或者窗口管理器有 XfceOpenboxUbuntu MATEKDEIceWMi3,排列组合之后版本让人有点眼花缭乱。

但是从官网看,已经没有 fedora 了,可能是被弃用了,所以其实也没那么多版本

Tag Description
latest XFCE Alpine
ubuntu-xfce XFCE Ubuntu
alpine-kde KDE Alpine
ubuntu-kde KDE Ubuntu
alpine-mate MATE Alpine
ubuntu-mate MATE Ubuntu
alpine-i3 i3 Alpine
ubuntu-i3 i3 Ubuntu
alpine-openbox Openbox Alpine
ubuntu-openbox Openbox Ubuntu
alpine-icewm IceWM Alpine
ubuntu-icewm IceWM Ubuntu

docker 文件夹中,创建一个新文件夹,并将其命名为 webtop

文件夹 装载路径 说明
docker/webtop /config 存放设置

端口

端口不冲突即可

本地端口 容器端口
3388 3000
3389 3389

环境

可变
PUID <uid> 设为 1000
PGID <gid> 设为 1000
TZ 系统时区设置,设置为 Asia/Shanghai

运行

容器启动之后需要一些时间,在浏览器中输入 http://群晖IP:3388,会看到一个 Alpine Xfce 桌面环境

about Xfce 中的信息

浏览器的标题显示 guacamole Client,显然其内置了 Apache Guacamole

相关文章:『部署Guacamole远程桌面网关服务

中文支持

默认 Alpine Xfce 桌面环境是不支持中文的

先进入容器内部

理论上桌面的终端(Terminal) 应该也是可以的,不过老苏没试,主要是命令比较多,不能直接复制、粘贴所以觉得比较麻烦

1
2
# 进入容器
docker exec -it --user root linuxserver-webtop1 /bin/bash

然后执行下面的命令

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
# 安装 wget
apk --no-cache add ca-certificates wget

# 安装公钥
wget -q -O /etc/apk/keys/sgerrand.rsa.pub https://alpine-pkgs.sgerrand.com/sgerrand.rsa.pub

#下载字体
wget https://github.com/Fangyh09/font-ttf/raw/master/simsun.ttc

# 创建文件夹
mkdir /usr/share/fonts/win

# 移动字库
mv simsun.ttc /usr/share/fonts/win

# 扫描字体目录并生成字体信息的缓存
fc-cache -vf

# 查看系统内所有中文字体及字体文件的路径
fc-list :lang=zh

刷新页面,原来的小方块已经可以正常显示了

访问认证

默认情况下,镜像启用 abc 用户,无需认证就可以访问。abc 用户默认密码也是 abc。如果要更改此密码并在访问界面时启用身份验证,需要通过在容器中执行:

1
docker exec -it linuxserver-webtop1 passwd abc 

或者在 Alpine Xfce 桌面的终端里执行 passwd abc

然后通过 http://群晖IP:3388/?login=true 访问

安装应用

屏幕的左侧是一个箭头,该箭头可以用来扩展某些内置的远程交互功能的菜单,也可以使用 ctrl + alt + shift 组合键打开和关闭此菜单:

ClipBoard 可以用来实现内外部的复制和粘贴操作

安装软件的意义在于,构建带 GUI 的镜像不一定非要用 VNC 了,应该算是多了一个选择吧

如果你愿意,可以安装诸如 Libre Office 等应用程序。

Libre Office

1
2
3
4
5
6
7
8
# 切换用户
sudo -i

# 更新最新本地镜像源
apk update

# 安装指定软件
apk add libreoffice

可以在 application 中找到安装好的 libreoffice 套件

没有安装中文输入法,不能打中文,但是显示是没问题的

输入法需要自己编译,可以参考: https://www.zhihu.com/question/358028191/answer/1157948335

VLC

1
2
# 安装指定软件
apk add vlc-qt

可以在 application 中找到安装好的 VLC media player

将视频文件放在容器的 /config 目录中

对应于前面主机映射的卷,老苏的是 /volume2/docker/webtop

有跳帧,但还能接受,声音估计要开启 https 才会有

Pyboy

老苏也尝试了 Pyboy,安装好了所需要的环境,运行之后没有报错,只是看不到图像

感觉上像是性能不足(不确定是 CPU 还是 GPU ),慢慢研究

参考文档

linuxserver/docker-webtop: Ubuntu and Alpine based Webtop images, Linux in a web browser supporting popular desktop environments.
地址:https://github.com/linuxserver/docker-webtop

Meet Webtops A Linux Desktop Environment In Your Browser | LinuxServer.io
地址:https://www.linuxserver.io/blog/2021-05-05-meet-webtops-a-linux-desktop-environment-in-your-browser