LinuxServer.io 团队为您带来另一个容器发布,特点包括:
- 定期及时的应用程序更新
- 简易的用户映射(PGID, PUID)
- 带有s6 overlay的自定义基础镜像
- 每周基础操作系统更新,整个LinuxServer.io生态系统共享通用层,以最小化空间使用、停机时间和带宽
- 定期安全更新
在以下渠道找到我们:
- 博客 - 了解我们的容器可以做的所有事情,包括使用指南、观点和更多内容!
- Discord - 与社区和团队进行实时支持/聊天。
- 论坛 - 在我们的社区论坛上发帖。
- Fleet - 一个在线Web界面,显示我们维护的所有镜像。
- GitHub - 查看我们所有仓库的源代码。
- Open Collective - 请考虑通过捐赠或为我们的预算做出贡献来帮助我们
linuxserver/webtop
Webtop - 基于 Alpine、Ubuntu、Fedora 和 Arch 的容器,包含官方支持的完整桌面环境,可通过任何现代网络浏览器访问。
支持的架构
我们利用 Docker manifest 实现多平台支持。更多信息可以在 Docker 的这里和我们的公告中找到。
只需拉取 lscr.io/linuxserver/webtop:latest
就应该能获取到适合您架构的正确镜像,但您也可以通过标签拉取特定架构的镜像。
本镜像支持的架构有:
架构 | 可用性 | 标签 |
---|---|---|
x86-64 | ✅ | amd64-<版本标签> |
arm64 | ✅ | arm64v8-<版本标签> |
armhf | ❌ |
版本标签
本镜像提供了多个可通过标签获取的版本。请仔细阅读描述,谨慎使用不稳定或开发版标签。
标签 | 可用性 | 描述 |
---|---|---|
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 |
应用设置
可以通过以下地址访问 Webtop:
- http://yourhost:3000/
- https://yourhost:3001/
现代GUI桌面应用程序(包括某些终端版本)在最新的Docker和系统调用兼容性方面存在问题,您可以使用Docker的
--security-opt seccomp=unconfined
设置来允许这些系统调用
应用程序管理 - PRoot应用
如果您使用系统原生方式安装软件,例如sudo apt-get install filezilla
,然后升级或销毁/重新创建容器,该软件将被删除,Webtop将恢复到干净状态。对某些用户来说这是可以接受的,他们也可以使用系统原生命令如apt-get upgrade
来更新系统包。如果您希望Docker处理容器升级并保留应用程序和设置,我们创建了proot-apps,允许将便携式应用程序安装到用户$HOME
目录的持久存储中,它们可以在受限的Docker环境中开箱即用。这些应用程序及其设置将在基础容器升级后保持不变,并且可以即时挂载到不同类型的Webtop容器中,实现虚拟的"发行版切换"。例如,如果您运行的是alpine-mate
Webtop,只要使用proot-apps install
安装的应用程序,您就可以将相同的/config
目录挂载到arch-kde
Webtop中,并保留相同的应用程序和设置。这可以通过命令行实现:
proot-apps install filezilla
PRoot Apps包含在所有基于KasmVNC的容器中,linuxserver.io支持的应用程序列表位于这里。
所有基于KasmVNC的GUI容器的选项
该容器基于Docker Baseimage KasmVNC,这意味着有额外的环境变量和运行配置来启用或禁用特定功能。
可选环境变量
变量 | 描述 |
---|---|
CUSTOM_PORT | 容器监听http的内部端口,如果需要从默认的3000更改。 |
CUSTOM_HTTPS_PORT | 容器监听https的内部端口,如果需要从默认的3001更改。 |
CUSTOM_USER | HTTP基本认证用户名,默认为abc。 |
PASSWORD | HTTP基本认证密码,默认为abc。如果未设置则无认证。 |
SUBFOLDER | 如果运行子文件夹反向代理,应用程序的子文件夹,需要两个斜杠,例如/subfolder/ 。 |
TITLE | 网页浏览器显示的页面标题,默认为"KasmVNC Client"。 |
FM_HOME | 文件管理器的主目录(登陆),默认为"/config"。 |
START_DOCKER | 如果设置为false,具有特权的容器将不会自动启动DinD Docker设置。 |
DRINODE | 如果挂载/dev/dri用于DRI3 GPU加速,允许您指定要使用的设备,例如/dev/dri/renderD128 。 |
DISABLE_IPV6 | 如果设置为true或任何值,将禁用IPv6。 |
LC_ALL | 设置容器运行的语言,例如fr_FR.UTF-8 ar_AE.UTF-8 。 |
NO_DECOR | 如果设置,应用程序将在openbox中运行时没有窗口边框,用于PWA。 |
NO_FULL | 使用openbox时不自动全屏应用程序。 |
可选运行配置
变量 | 描述 |
---|---|
--privileged | 将在容器内启动Docker in Docker (DinD)设置,以在隔离环境中使用docker。为提高性能,将容器内的Docker目录挂载到主机,例如-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加速应用。仅支持开源驱动程序,即(Intel,AMDGPU,Radeon,ATI,Nouveau)。 |
语言支持 - 国际化
环境变量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输入模式"选项,这将允许客户端上非英语键盘使用非英语字符。启用后,它的表现将与设置为您的区域设置的本地Linux安装相同。
DRI3 GPU加速
对于加速应用或游戏,可以将渲染设备挂载到容器中并由应用程序利用:
--device /dev/dri:/dev/dri
此功能仅支持开源GPU驱动程序:
驱动程序 | 描述 |
---|---|
Intel | 用于Intel iGPU芯片组的i965和i915驱动程序 |
AMD | 用于AMD独立或APU芯片组的AMDGPU、Radeon和ATI驱动程序 |
NVIDIA | 仅nouveau2驱动程序,闭源NVIDIA驱动程序缺乏DRI3支持 |
DRINODE
环境变量可用于指向特定GPU。
最新信息可以在这里找到
显示合成(桌面效果)
当将此镜像与支持的显卡一起使用时,合成将发挥作用,尽管在将使用它的应用程序的帧与像素图同步时会有性能损失。如果相关应用程序需要合成,这可以大大提高应用兼容性,但需要将真实GPU挂载到容器中。默认情况下,我们在DE级别禁用合成以提高性能,但用户可以启用它,即使DE在其设置中禁用了合成,使用合成的程序仍然可以正常运行。在构建桌面镜像时,请确保您了解默认启用合成后,只有挂载了兼容GPU的用户才能使用您的镜像。
Nvidia GPU支持
Nvidia不兼容基于Alpine的镜像
通过利用Zink可以获得Nvidia的OpenGL支持。可以使用以下运行标志启用:
变量 | 描述 |
---|---|
--gpus all | 这可以进行筛选,但对于大多数设置,这将传递系统上的一个Nvidia GPU |
--runtime nvidia | 指定Nvidia运行时,从主机挂载驱动程序和工具 |
compose语法略有不同,您需要将nvidia设置为默认运行时:
sudo nvidia-ctk runtime configure --runtime=docker --set-as-default
sudo service docker restart
要在compose中分配GPU:
服务:
webtop:
镜像: linuxserver/webtop:debian-kde
部署:
资源:
预留:
设备:
- 驱动: nvidia
数量: 1
功能: [计算,视频,图形,工具]
无损模式
该容器能够通过将流质量预设更改为"无损",以高帧率向您的网络浏览器传递真正的无损图像,更多信息请参阅此处。为了从非本地主机端点使用此模式,需要使用3001端口的HTTPS。如果使用反向代理到3000端口,需要设置特定的头部,如此处所述。
用法
为了帮助您开始使用此镜像创建容器,您可以使用docker-compose或docker命令行界面。
docker-compose(推荐,点击此处获取更多信息)
---
服务:
webtop:
镜像: lscr.io/linuxserver/webtop:latest
容器名: webtop
安全选项:
- seccomp:unconfined #可选
环境变量:
- PUID=1000
- PGID=1000
- TZ=Etc/UTC
- SUBFOLDER=/ #可选
- TITLE=Webtop #可选
卷:
- /path/to/data:/config
- /var/run/docker.sock:/var/run/docker.sock #可选
端口:
- 3000:3000
- 3001:3001
设备:
- /dev/dri:/dev/dri #可选
共享内存: "1gb" #可选
重启策略: unless-stopped
docker命令行界面(点击此处获取更多信息)
docker run -d \
--name=webtop \
--security-opt seccomp=unconfined `#可选` \
-e PUID=1000 \
-e PGID=1000 \
-e TZ=Etc/UTC \
-e SUBFOLDER=/ `#可选` \
-e TITLE=Webtop `#可选` \
-p 3000:3000 \
-p 3001:3001 \
-v /path/to/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
参数
容器使用在运行时传递的参数进行配置(如上所示)。这些参数用冒号分隔,分别表示<外部>:<内部>
。例如,-p 8080:80
将容器内部的端口80
暴露给主机IP的端口8080
。
参数 | 功能 |
---|---|
-p 3000 | Web桌面GUI |
-p 3001 | Web桌面GUI HTTPS |
-e PUID=1000 | 用户ID - 见下文解释 |
-e PGID=1000 | 组ID - 见下文解释 |
-e TZ=Etc/UTC | 指定要使用的时区,参见此列表。 |
-e SUBFOLDER=/ | 指定与反向代理一起使用的子文件夹,例如/subfolder/ |
-e TITLE=Webtop | 将在Web浏览器中用作页面/标签标题的字符串。 |
-v /config | abc用户的主目录 |
-v /var/run/docker.sock | 系统上的Docker Socket,如果你想在容器中使用Docker |
--device /dev/dri | 添加此项以支持GL(仅限Linux主机) |
--shm-size= | 我们将其设置为1 GB,以防止现代Web浏览器崩溃 |
--security-opt seccomp=unconfined | 仅适用于Docker引擎,许多现代GUI应用程序需要此选项才能在较旧的主机上运行,因为系统调用对Docker来说是未知的。 |
从文件中设置环境变量(Docker secrets)
您可以通过使用特殊前缀FILE__
从文件中设置任何环境变量。
例如:
-e FILE__MYVAR=/run/secrets/mysecretvariable
将根据/run/secrets/mysecretvariable
文件的内容设置环境变量MYVAR
。
运行应用程序的umask
对于我们的所有镜像,我们提供了使用可选的-e UMASK=022
设置来覆盖容器内启动服务的默认umask设置的能力。
请记住,umask不是chmod,它根据其值从权限中减去,而不是添加。在请求支持之前,请先阅读这里。
用户/组标识符
使用卷(-v
标志)时,主机操作系统和容器之间可能会出现权限问题,我们通过允许您指定用户PUID
和组PGID
来避免此问题。
确保主机上的任何卷目录都由您指定的同一用户拥有,任何权限问题都会像魔法一样消失。
在这个实例中,PUID=1000
和PGID=1000
,要找到您的用户ID,请使用id your_user
,如下所示:
id your_user
示例输出:
uid=1000(your_user) gid=1000(your_user) groups=1000(your_user)
Docker Mods
我们发布了各种Docker Mods以在容器内启用额外功能。可通过上面的动态徽章访问此镜像可用的Mods列表(如果有)以及可应用于我们任何镜像的通用mods。
支持信息
-
在容器运行时访问shell:
docker exec -it webtop /bin/bash
-
实时监控容器日志:
docker logs -f webtop
-
容器版本号:
docker inspect -f '{{ index .Config.Labels "build_version" }}' webtop
-
镜像版本号:
docker inspect -f '{{ index .Config.Labels "build_version" }}' lscr.io/linuxserver/webtop:latest
更新信息
我们的大多数镜像都是静态的、有版本的,需要更新镜像并重新创建容器来更新内部的应用程序。除了一些特殊情况(在相关的 readme.md 中注明),我们不推荐或支持在容器内更新应用程序。请查阅上面的应用程序设置部分,了解是否建议对该镜像进行更新。
以下是更新容器的说明:
通过 Docker Compose
-
更新镜像:
-
所有镜像:
docker-compose pull
-
单个镜像:
docker-compose pull webtop
-
-
更新容器:
-
所有容器:
docker-compose up -d
-
单个容器:
docker-compose up -d webtop
-
-
你还可以删除旧的悬挂镜像:
docker image prune
通过 Docker Run
-
更新镜像:
docker pull lscr.io/linuxserver/webtop:latest
-
停止正在运行的容器:
docker stop webtop
-
删除容器:
docker rm webtop
-
使用上面指示的相同 docker run 参数重新创建一个新容器(如果正确映射到主机文件夹,你的
/config
文件夹和设置将被保留) -
你还可以删除旧的悬挂镜像:
docker image prune
镜像更新通知 - Diun(Docker 镜像更新通知器)
提示:我们推荐使用 Diun 进行更新通知。不推荐或不支持其他自动无人值守更新容器的工具。
本地构建
如果你想对这些镜像进行本地修改以用于开发目的或只是自定义逻辑:
git clone https://github.com/linuxserver/docker-webtop.git
cd docker-webtop
docker build \
--no-cache \
--pull \
-t lscr.io/linuxserver/webtop:latest .
ARM 变体可以在 x86_64 硬件上使用 multiarch/qemu-user-static
构建
docker run --rm --privileged multiarch/qemu-user-static:register --reset
注册后,你可以使用 -f Dockerfile.aarch64
来定义要使用的 dockerfile。
版本
- 2023-05-24: - 将 Alpine 基础镜像更新到 3.20,记录 Nvidia 支持。
- 2024-04-22: - 将 Ubuntu 基础镜像更新到 Noble。
- 2024-04-16: - 添加 PRoot 应用程序文档。
- 2024-04-14: - 将 Fedora 基础镜像更新到 40。
- 2024-02-11: - 正确添加 PWA 图标和标题变体。
- 2024-02-06: - 更新关于原生语言支持的自述文件。
- 2023-12-29: - 将 Alpine 基础镜像更新到 3.19,并切换回 Firefox。
- 2023-11-07: - 将 Fedora 基础镜像更新到 39。
- 2023-06-14: - 将基础镜像更新到 Debian Bookworm。
- 2023-05-13: - 将基础镜像更新到 Alpine 3.18 和 Fedora 38。
- 2023-03-23: - 将所有 Webtop 重新基于 KasmVNC 基础镜像。
- 2022-10-21: - 将 xfce 重新基于 Alpine 3.16,迁移到 s6v3。
- 2022-03-12: - 添加挂载 GPU 的文档。
- 2022-02-05: - 将 KDE Ubuntu 重新基于 Jammy,为更新的 gclient 添加新文档,停止推荐特权模式。
- 2021-09-21: - 添加 Fedora 和 Arch 镜像,在自述文件中显示 seccomp 设置。
- 2021-09-26: - 将 Alpine 版本更新到 3.14。
- 2021-04-20: - 初始发布。