本文最后更新于 2024-08-06,

若内容或图片失效,请留言反馈。部分素材来自网络,若不小心影响到您的利益, 请联系我 删除。

本站只有Telegram群组为唯一交流群组, 点击加入

文章内容有误?申请成为本站文章修订者或作者? 向站长提出申请

1722880101464.webp

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]