【实用Docker项目】Webtop——使用web浏览远程桌面
本文最后更新于 2024-08-06,
若内容或图片失效,请留言反馈。部分素材来自网络,若不小心影响到您的利益, 请联系我 删除。
本站只有Telegram群组为唯一交流群组, 点击加入
文章内容有误?申请成为本站文章修订者或作者? 向站长提出申请
Webtop - 基于 Alpine、Ubuntu、Fedora 和 Arch 的容器,包含官方支持的完整桌面环境,可通过任何现代 Web 浏览器访问。
项目地址:https://github.com/linuxserver/docker-webtop
支持的架构
Architecture | Available | Tag |
---|---|---|
x86-64 | ✅ | amd64- |
arm64 | ✅ | arm64v8- |
armhf | ❌ |
支持系统标签
Tag | Available | Description |
---|---|---|
latest | ✅ | XFCE Alpine |
ubuntu-xfce | ✅ | XFCE Ubuntu |
fedora-xfce | ✅ | XFCE Fedora |
arch-xfce | ✅ | XFCE Arch |
debian-xfce | ✅ | XFCE Debian |
alpine-kde | ✅ | KDE Alpine |
ubuntu-kde | ✅ | KDE Ubuntu |
fedora-kde | ✅ | KDE Fedora |
arch-kde | ✅ | KDE Arch |
debian-kde | ✅ | KDE Debian |
alpine-mate | ✅ | MATE Alpine |
ubuntu-mate | ✅ | MATE Ubuntu |
fedora-mate | ✅ | MATE Fedora |
arch-mate | ✅ | MATE Arch |
debian-mate | ✅ | MATE Debian |
alpine-i3 | ✅ | i3 Alpine |
ubuntu-i3 | ✅ | i3 Ubuntu |
fedora-i3 | ✅ | i3 Fedora |
arch-i3 | ✅ | i3 Arch |
debian-i3 | ✅ | i3 Debian |
alpine-openbox | ✅ | Openbox Alpine |
ubuntu-openbox | ✅ | Openbox Ubuntu |
fedora-openbox | ✅ | Openbox Fedora |
arch-openbox | ✅ | Openbox Arch |
debian-openbox | ✅ | Openbox Debian |
alpine-icewm | ✅ | IceWM Alpine |
ubuntu-icewm | ✅ | IceWM Ubuntu |
fedora-icewm | ✅ | IceWM Fedora |
arch-icewm | ✅ | IceWM Arch |
debian-icewm | ✅ | IceWM Debian |
安装Docker🐳
现代 GUI 桌面应用程序(包括某些风格的终端)与最新的 Docker 和系统调用兼容性存在问题,您可以使用 Docker 并设置 --security-opt seccomp=unconfined
允许这些系统调用
直接运行
docker run -d \\
--name=webtop \\
--security-opt seccomp=unconfined \\
-e PUID=1000 \\
-e PGID=1000 \\
-e TZ=Etc/UTC \\
-e SUBFOLDER=/ \\
-e TITLE=Webtop \\
-e LC\_ALL=zh\_CN.UTF-8 \\
-e DOCKER\_MODS=linuxserver/mods:universal-package-install \\
-e INSTALL\_PACKAGES=font-noto-cjk \\
-p 3080:3000 \\
-p 3443:3001 \\
-v /home/docker/webtop/data:/config \\
-v /var/run/docker.sock:/var/run/docker.sock \\
--device /dev/dri:/dev/dri \\
--shm-size="1gb" \\
--restart unless-stopped \\
lscr.io/linuxserver/webtop:latest
更多镜像系统(可选)
lscr.io/linuxserver/webtop:latest
lscr.io/linuxserver/webtop:ubuntu-xfce
lscr.io/linuxserver/webtop:fedora-xfce
lscr.io/linuxserver/webtop:arch-xfce
lscr.io/linuxserver/webtop:debian-xfce
我们现在可以输入 http://ip:3000/
访问了。如果你要是用https方案,使用 https://ip:3001/
这个地址即可
利用Docker-compose搭建,易于更新
先建立一个文件夹
mkdir -p ~/webtop &&cd $_
vim docker-compose.yml
docker-compose填入以下内容:
services:
webtop:
image: lscr.io/linuxserver/webtop:latest
container_name: webtop
security_opt:
- seccomp:unconfined #optional
environment:
- PUID=1000
- PGID=1000
- TZ=Etc/UTC
- SUBFOLDER=/ #optional
- TITLE=Webtop #optional
volumes:
- /path/to/data:/config
- /var/run/docker.sock:/var/run/docker.sock #optional
ports:
- 3000:3000
- 3001:3001
devices:
- /dev/dri:/dev/dri #optional
shm_size: "1gb" #optional
restart: unless-stopped
修改好之后,注意切换成英文输入法,然后按一下 esc
,然后 :wq
保存退出。
运行
docker-compose up -d
同样的,我们可以输入 http://ip:3000/
访问了。如果你要是用https方案,使用 https://ip:3001/
这个地址。
反向代理
参考教程:安装及使用
⚠️Nginx Proxy Manager(以下简称NPM)会用到80、443端口,所以本机不能占用(比如原来就有Nginx)
互联网使用请确保完成了域名解析
使用配置
无损模式
通过将流质量预设更改为“无损”,此容器能够以高帧速率向您的 Web 浏览器提供真正的无损图像,更多信息请见此处。为了从非本地主机端点使用此模式,需要使用 3001 上的 HTTPS 端口。如果使用反向代理端口 3000,则需要按照此处所述设置特定标头。
nginx配置增加
add_header 'Cross-Origin-Embedder-Policy' 'require-corp';
add_header 'Cross-Origin-Opener-Policy' 'same-origin';
add_header 'Cross-Origin-Resource-Policy' 'same-site';
容器参数(可选)
容器使用运行时传递的参数进行配置。这些参数用冒号分隔,<external>:<internal>
分别表示。例如,-p 8080:80
将从容器内部公开端口,以便从容器外部的 80
端口上的主机 IP 进行访问。8080
范围 | 功能 |
---|---|
-p 3000 |
Web 桌面 GUI |
-p 3001 |
Web 桌面 GUI HTTPS |
-e PUID=1000 |
对于 UserID - 请参阅下面的解释 |
-e PGID=1000 |
对于 GroupID - 请参阅下面的解释 |
-e TZ=Etc/UTC |
指定要使用的时区,请参阅此列表。 |
-e SUBFOLDER=/ |
指定要与反向代理一起使用的子文件夹,IE /subfolder/ |
-e TITLE=Webtop |
将在 Web 浏览器中用作页面/选项卡标题的字符串。 |
-v /config |
abc 用户主目录 |
-v /var/run/docker.sock |
系统上的 Docker Socket,如果你想在容器中使用 Docker |
--device /dev/dri |
添加此项以获得 GL 支持(仅限 Linux 主机) |
--shm-size= |
我们将其设置为 1G,以防止现代网络浏览器崩溃 |
--security-opt seccomp=unconfined |
仅适用于 Docker Engine,许多现代 GUI 应用程序需要它才能在旧主机上运行,因为 Docker 无法识别系统调用。 |
可选环境变量
多变的 | 描述 |
---|---|
CUSTOM_PORT | 如果需要,容器将监听 http 的内部端口从默认的 3000 进行交换。 |
CUSTOM_HTTPS_PORT | 如果需要从默认的 3001 进行交换,容器将监听 https 的内部端口。 |
CUSTOM_USER | HTTP 基本认证用户名,默认为 abc。 |
PASSWORD | HTTP Basic 身份验证密码,默认为 abc。如果未设置,则无身份验证 |
SUBFOLDER | 如果运行子文件夹反向代理,则应用程序的子文件夹需要两个斜杠 IE /subfolder/ |
TITLE | 网页浏览器上显示的页面标题,默认“KasmVNC Client”。 |
FM_HOME | 这是文件管理器的主目录(登陆目录),默认为“/config”。 |
START_DOCKER | 如果设置为 false,具有权限的容器将不会自动启动 DinD Docker 设置。 |
DRINODE | 如果在 /dev/dri 中安装DRI3 GPU 加速,则允许您指定要使用 IE 的设备 /dev/dri/renderD128 |
DISABLE_IPV6 | 如果设置为 true 或任何值,这将禁用 IPv6 |
LC_ALL | 将容器的运行语言设置为 IE fr_FR.UTF-8ar_AE.UTF-8 |
NO_DECOR | 如果设置,应用程序将在 openbox 中无窗口边框运行,以用作 PWA。 |
NO_FULL | 使用 openbox 时不要自动全屏显示应用程序。 |
可选运行配置
变量 | 描述 |
---|---|
--privileged |
将在容器内启动 Docker in Docker (DinD) 设置,以便在隔离环境中使用 docker。为了提高性能,请将容器内的 Docker 目录挂载到主机 IE -v /home/user/docker-data:/var/lib/docker 。 |
-v /var/run/docker.sock:/var/run/docker.sock |
在主机级 Docker 套接字中安装,以便通过 CLI 与其交互或使用启用 Docker 的应用程序。 |
--device /dev/dri:/dev/dri |
将 GPU 安装到容器中,这可以与 DRINODE 环境变量结合使用,以利用主机视频卡来加速 GPU 加速应用程序。仅支持开源驱动程序 IE(Intel、AMDGPU、Radeon、ATI、Nouveau) |
来自文件的环境变量(Docker secrets)
您可以使用特殊的前缀从文件设置任何环境变量 FILE__
。
举个例子:
-e FILE__MYVAR=/run/secrets/mysecretvariable
MYVAR
将根据文件的内容设置环境变量 /run/secrets/mysecretvariable
。
语言支持 - 国际化
环境变量 LC_ALL
可用于以英语以外的其他语言启动 Webtop,例如,只需传递以法语启动桌面会话即可 LC_ALL=fr_FR.UTF-8
。某些语言(如中文、日语或韩语)缺少正确呈现所需的字体(称为 cjk 字体),但其他语言可能存在但未安装在 Webtop 中,具体取决于您正在运行的底层发行版。我们仅确保存在拉丁字符的字体。字体可以在启动时使用 mod 安装。
以启动时安装 cjk 字体为例,传递环境变量(Alpine 为例):
-e DOCKER_MODS=linuxserver/mods:universal-package-install
-e INSTALL_PACKAGES=font-noto-cjk
-e LC_ALL=zh_CN.UTF-8
Web 界面在“设置”中有一个“IME 输入模式”选项,允许在客户端的非 en_US 键盘上使用非英文字符。启用后,其执行效果与设置为您所在地区的本地 Linux 安装相同。
DRI3 GPU 加速
对于加速应用或游戏,可以将渲染设备安装到容器中,并由应用程序使用以下方式利用:
--device /dev/dri:/dev/dri
此功能仅支持开源GPU 驱动程序:
驱动 | 描述 |
---|---|
英特尔 | 适用于 Intel iGPU 芯片组的 i965 和 i915 驱动程序 |
AMD | 适用于 AMD 专用或 APU 芯片组的 AMDGPU、Radeon 和 ATI 驱动程序 |
英伟达 | 仅限 nouveau2 驱动程序,闭源 NVIDIA 驱动程序缺乏 DRI3 支持 |
环境 DRINODE
变量可用于指向特定 GPU。最新信息可在此处找到
显示合成(桌面效果)
当将此图像与受支持的视频卡结合使用时,合成将正常运行,但在为使用它的应用程序同步帧与像素图时,性能会受到影响。如果相关应用程序需要合成,但需要在容器中安装真正的 GPU,这可以大大提高应用程序兼容性。默认情况下,我们会出于下游图像的性能原因在 DE 级别禁用合成,但用户可以启用它,并且使用合成的程序仍将正常运行,即使 DE 在其设置中禁用了它。在构建桌面图像时,请务必了解,默认情况下启用它后,只有安装了兼容 GPU 的用户才能使用您的图像。
Nvidia GPU 支持
Nvidia 与基于 Alpine 的图像不兼容
利用 Zink 获得 OpenGL 支持即可获得 Nvidia 支持。可以使用以下运行标志启用此功能:
变量 | 描述 |
---|---|
--gpus all | 可以忽略的参数,大多数情况下会调用系统内的所有GPU |
--runtime nvidia | 调用运行主机的nvidia支持 |
由于您需要将 nvidia 设置为默认运行时,因此撰写语法略有不同:
sudo nvidia-ctk runtime configure --runtime=docker --set-as-default
sudo service docker restart
并在组合中分配 GPU:
services:
webtop:
image: linuxserver/webtop:debian-kde
deploy:
resources:
reservations:
devices:
- driver: nvidia
count: 1
capabilities: [compute,video,graphics,utility]