docker-webtop

docker-webtop

跨平台浏览器远程桌面环境容器

docker-webtop 提供基于 Alpine、Ubuntu、Fedora 和 Arch 的容器化远程桌面环境,支持 XFCE、KDE、MATE 等多种桌面环境。通过现代浏览器即可访问完整桌面,具备 GPU 加速和国际化支持。该项目集成应用管理、自定义设置和持久化存储功能,适合远程办公和开发测试等多种使用场景。

LinuxServer.ioDocker容器远程桌面KasmVNC开源软件Github开源项目
<!-- 请勿手动编辑此文件 --> <!-- 请阅读 https://github.com/linuxserver/docker-webtop/blob/master/.github/CONTRIBUTING.md -->

linuxserver.io

博客 Discord 论坛 Fleet GitHub Open Collective

LinuxServer.io 团队为您带来另一个容器发布,特点包括:

  • 定期及时的应用程序更新
  • 简易的用户映射(PGID, PUID)
  • 带有s6 overlay的自定义基础镜像
  • 每周基础操作系统更新,整个LinuxServer.io生态系统共享通用层,以最小化空间使用、停机时间和带宽
  • 定期安全更新

在以下渠道找到我们:

  • 博客 - 了解我们的容器可以做的所有事情,包括使用指南、观点和更多内容!
  • Discord - 与社区和团队进行实时支持/聊天。
  • 论坛 - 在我们的社区论坛上发帖。
  • Fleet - 一个在线Web界面,显示我们维护的所有镜像。
  • GitHub - 查看我们所有仓库的源代码。
  • Open Collective - 请考虑通过捐赠或为我们的预算做出贡献来帮助我们

linuxserver/webtop

Scarf.io 安装量 GitHub 星标 GitHub 发布 GitHub 包仓库 GitLab 容器仓库 Quay.io Docker 拉取次数 Docker 星标 Jenkins 构建 LSIO CI

Webtop - 基于 Alpine、Ubuntu、Fedora 和 Arch 的容器,包含官方支持的完整桌面环境,可通过任何现代网络浏览器访问。

webtop

支持的架构

我们利用 Docker manifest 实现多平台支持。更多信息可以在 Docker 的这里和我们的公告中找到。

只需拉取 lscr.io/linuxserver/webtop:latest 就应该能获取到适合您架构的正确镜像,但您也可以通过标签拉取特定架构的镜像。

本镜像支持的架构有:

架构可用性标签
x86-64amd64-<版本标签>
arm64arm64v8-<版本标签>
armhf

版本标签

本镜像提供了多个可通过标签获取的版本。请仔细阅读描述,谨慎使用不稳定或开发版标签。

标签可用性描述
latestXFCE Alpine
ubuntu-xfceXFCE Ubuntu
fedora-xfceXFCE Fedora
arch-xfceXFCE Arch
debian-xfceXFCE Debian
alpine-kdeKDE Alpine
ubuntu-kdeKDE Ubuntu
fedora-kdeKDE Fedora
arch-kdeKDE Arch
debian-kdeKDE Debian
alpine-mateMATE Alpine
ubuntu-mateMATE Ubuntu
fedora-mateMATE Fedora
arch-mateMATE Arch
debian-mateMATE Debian
alpine-i3i3 Alpine
ubuntu-i3i3 Ubuntu
fedora-i3i3 Fedora
arch-i3i3 Arch
debian-i3i3 Debian
alpine-openboxOpenbox Alpine
ubuntu-openboxOpenbox Ubuntu
fedora-openboxOpenbox Fedora
arch-openboxOpenbox Arch
debian-openboxOpenbox Debian
alpine-icewmIceWM Alpine
ubuntu-icewmIceWM Ubuntu
fedora-icewmIceWM Fedora
arch-icewmIceWM Arch
debian-icewmIceWM 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_USERHTTP基本认证用户名,默认为abc。
PASSWORDHTTP基本认证密码,默认为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 3000Web桌面GUI
-p 3001Web桌面GUI HTTPS
-e PUID=1000用户ID - 见下文解释
-e PGID=1000组ID - 见下文解释
-e TZ=Etc/UTC指定要使用的时区,参见此列表
-e SUBFOLDER=/指定与反向代理一起使用的子文件夹,例如/subfolder/
-e TITLE=Webtop将在Web浏览器中用作页面/标签标题的字符串。
-v /configabc用户的主目录
-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=1000PGID=1000,要找到您的用户ID,请使用id your_user,如下所示:

id your_user

示例输出:

uid=1000(your_user) gid=1000(your_user) groups=1000(your_user)

Docker Mods

Docker Mods Docker Universal 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: - 初始发布。

编辑推荐精选

AEE

AEE

AI Excel全自动制表工具

AEE 在线 AI 全自动 Excel 编辑器,提供智能录入、自动公式、数据整理、图表生成等功能,高效处理 Excel 任务,提升办公效率。支持自动高亮数据、批量计算、不规则数据录入,适用于企业、教育、金融等多场景。

UI-TARS-desktop

UI-TARS-desktop

基于 UI-TARS 视觉语言模型的桌面应用,可通过自然语言控制计算机进行多模态操作。

UI-TARS-desktop 是一款功能强大的桌面应用,基于 UI-TARS(视觉语言模型)构建。它具备自然语言控制、截图与视觉识别、精确的鼠标键盘控制等功能,支持跨平台使用(Windows/MacOS),能提供实时反馈和状态显示,且数据完全本地处理,保障隐私安全。该应用集成了多种大语言模型和搜索方式,还可进行文件系统操作。适用于需要智能交互和自动化任务的场景,如信息检索、文件管理等。其提供了详细的文档,包括快速启动、部署、贡献指南和 SDK 使用说明等,方便开发者使用和扩展。

Wan2.1

Wan2.1

开源且先进的大规模视频生成模型项目

Wan2.1 是一个开源且先进的大规模视频生成模型项目,支持文本到图像、文本到视频、图像到视频等多种生成任务。它具备丰富的配置选项,可调整分辨率、扩散步数等参数,还能对提示词进行增强。使用了多种先进技术和工具,在视频和图像生成领域具有广泛应用前景,适合研究人员和开发者使用。

爱图表

爱图表

全流程 AI 驱动的数据可视化工具,助力用户轻松创作高颜值图表

爱图表(aitubiao.com)就是AI图表,是由镝数科技推出的一款创新型智能数据可视化平台,专注于为用户提供便捷的图表生成、数据分析和报告撰写服务。爱图表是中国首个在图表场景接入DeepSeek的产品。通过接入前沿的DeepSeek系列AI模型,爱图表结合强大的数据处理能力与智能化功能,致力于帮助职场人士高效处理和表达数据,提升工作效率和报告质量。

Qwen2.5-VL

Qwen2.5-VL

一款强大的视觉语言模型,支持图像和视频输入

Qwen2.5-VL 是一款强大的视觉语言模型,支持图像和视频输入,可用于多种场景,如商品特点总结、图像文字识别等。项目提供了 OpenAI API 服务、Web UI 示例等部署方式,还包含了视觉处理工具,有助于开发者快速集成和使用,提升工作效率。

HunyuanVideo

HunyuanVideo

HunyuanVideo 是一个可基于文本生成高质量图像和视频的项目。

HunyuanVideo 是一个专注于文本到图像及视频生成的项目。它具备强大的视频生成能力,支持多种分辨率和视频长度选择,能根据用户输入的文本生成逼真的图像和视频。使用先进的技术架构和算法,可灵活调整生成参数,满足不同场景的需求,是文本生成图像视频领域的优质工具。

WebUI for Browser Use

WebUI for Browser Use

一个基于 Gradio 构建的 WebUI,支持与浏览器智能体进行便捷交互。

WebUI for Browser Use 是一个强大的项目,它集成了多种大型语言模型,支持自定义浏览器使用,具备持久化浏览器会话等功能。用户可以通过简洁友好的界面轻松控制浏览器智能体完成各类任务,无论是数据提取、网页导航还是表单填写等操作都能高效实现,有利于提高工作效率和获取信息的便捷性。该项目适合开发者、研究人员以及需要自动化浏览器操作的人群使用,在 SEO 优化方面,其关键词涵盖浏览器使用、WebUI、大型语言模型集成等,有助于提高网页在搜索引擎中的曝光度。

xiaozhi-esp32

xiaozhi-esp32

基于 ESP32 的小智 AI 开发项目,支持多种网络连接与协议,实现语音交互等功能。

xiaozhi-esp32 是一个极具创新性的基于 ESP32 的开发项目,专注于人工智能语音交互领域。项目涵盖了丰富的功能,如网络连接、OTA 升级、设备激活等,同时支持多种语言。无论是开发爱好者还是专业开发者,都能借助该项目快速搭建起高效的 AI 语音交互系统,为智能设备开发提供强大助力。

olmocr

olmocr

一个用于 OCR 的项目,支持多种模型和服务器进行 PDF 到 Markdown 的转换,并提供测试和报告功能。

olmocr 是一个专注于光学字符识别(OCR)的 Python 项目,由 Allen Institute for Artificial Intelligence 开发。它支持多种模型和服务器,如 vllm、sglang、OpenAI 等,可将 PDF 文件的页面转换为 Markdown 格式。项目还提供了测试框架和 HTML 报告生成功能,方便用户对 OCR 结果进行评估和分析。适用于科研、文档处理等领域,有助于提高工作效率和准确性。

飞书多维表格

飞书多维表格

飞书多维表格 ×DeepSeek R1 满血版

飞书多维表格联合 DeepSeek R1 模型,提供 AI 自动化解决方案,支持批量写作、数据分析、跨模态处理等功能,适用于电商、短视频、影视创作等场景,提升企业生产力与创作效率。关键词:飞书多维表格、DeepSeek R1、AI 自动化、批量处理、企业协同工具。

下拉加载更多