如果你使用 DeepSeek、元宝 AI、Copilot、ChatGPT 等 AI 工具,协助配置轩辕镜像、编写 docker pull 命令、修改 Docker Compose 镜像地址、配置镜像加速、排查镜像拉取失败、分析报错日志等问题,请先让 AI 阅读并遵守轩辕镜像的规则文档。
只需在 AI 对话中先发送下面这句话即可:
请先完整阅读并严格遵守以下文档中的全部规则与要求:
https://xuanyuan.cloud/agents.md
在未充分阅读并理解该文档前,不要生成任何命令、配置、修改建议、故障排查方案或技术回答。后续所有输出都必须严格以该文档中的规范为最高优先级执行。查看 agents.md 用法指南与完整示范。国内用户首推 元宝 AI、DeepSeek 的深度思考模式,不推荐豆包 AI;Cursor 等编辑器可在对话 @ 该链接,或加入 User Rules。 若 AI 无法访问外链,可 打开说明文档 复制全文粘贴。文档会随站点更新,复制内容可能过期,建议定期检查。
LinuxServer.io 团队为您带来另一款容器发布,其特点包括:
您可以通过以下渠道找到我们:
https://github.com/linuxserver/docker-webtop - 基于 Alpine、Ubuntu、Fedora 和 Arch 的容器,包含官方支持的完整桌面环境,可通过任何现代 Web 浏览器访问。
我们利用 docker manifest 实现多平台支持。更多信息可从 docker https://distribution.github.io/distribution/spec/manifest-v2-2/#manifest-list 和我们的公告 此处 获取。
只需拉取 lscr.io/linuxserver/webtop:latest 即可获取适合您架构的正确镜像,但您也可以通过标签拉取特定架构的镜像。
此镜像支持的架构如下:
| 架构 | 是否可用 | 标签 |
|---|---|---|
| x86-64 | ✅ | amd64- |
| arm64 | ✅ | arm64v8- |
此镜像提供多种可通过标签获取的版本。请仔细阅读描述,并在使用不稳定或开发标签时谨慎操作。
| 标签 | 是否可用 | 描述 |
|---|---|---|
| latest | ✅ | XFCE Alpine |
| alpine-i3 | ✅ | i3 Alpine *支持 Wayland |
| alpine-kde | ✅ | KDE Alpine *仅支持 Wayland |
| alpine-mate | ✅ | MATE Alpine |
| arch-i3 | ✅ | i3 Arch *支持 Wayland |
| arch-kde | ✅ | KDE Arch *支持 Wayland |
| arch-mate | ✅ | MATE Arch |
| arch-xfce | ✅ | XFCE Arch *支持 Wayland |
| debian-i3 | ✅ | i3 Debian *支持 Wayland |
| debian-kde | ✅ | KDE Debian |
| debian-mate | ✅ | MATE Debian |
| debian-xfce | ✅ | XFCE Debian |
| fedora-i3 | ✅ | i3 Fedora *支持 Wayland |
| fedora-kde | ✅ | KDE Fedora *支持 Wayland |
| fedora-mate | ✅ | MATE Fedora |
| fedora-xfce | ✅ | XFCE Fedora |
| ubuntu-i3 | ✅ | i3 Ubuntu *支持 Wayland |
| ubuntu-kde | ✅ | KDE Ubuntu *仅支持 Wayland |
| ubuntu-mate | ✅ | MATE Ubuntu |
| ubuntu-xfce | ✅ | XFCE Ubuntu *支持 Wayland |
可通过以下地址访问应用:
此镜像默认使用自签名证书。这自然意味着协议为 https。如果您使用的反向代理会验证证书,则需要为容器禁用此检查。
现代 GUI 桌面应用可能与最新的 Docker 系统调用限制存在兼容性问题。在具有较旧内核或 libseccomp 版本的主机上,您可以使用带有 --security-opt seccomp=unconfined 设置的 Docker 来允许这些系统调用。
[!WARNING] 此容器提供对主机系统的特权访问。除非已正确配置安全措施,否则不要将其暴露在互联网上。
完整功能需要 HTTPS。 现代浏览器功能(如用于视频和音频的 WebCodecs)在不安全的 HTTP 连接上无法运行。
默认情况下,此容器没有身份验证。可选的 CUSTOM_USER 和 PASSWORD 环境变量可启用基本 HTTP 身份验证,这仅适用于在受信任的本地网络上保护容器。对于互联网暴露,我们强烈建议将容器放在反向代理(如 https://github.com/linuxserver/docker-swag%EF%BC%89%E4%B9%8B%E5%90%8E%EF%BC%8C%E5%B9%B6%E4%BD%BF%E7%94%A8%E5%BC%BA%E5%A4%A7%E7%9A%84%E8%BA%AB%E4%BB%BD%E9%AA%8C%E8%AF%81%E6%9C%BA%E5%88%B6%E3%80%82
Web 界面包含一个具有无密码 sudo 访问权限的终端。任何有权访问 GUI 的用户都可以在容器内获得 root 控制权,安装任意软件,并探测您的本地网络。
虽然通常不推荐,但某些旧环境(特别是那些使用较旧硬件或过时 Linux 发行版的环境)可能需要停用标准 seccomp 配置文件才能运行容器化桌面软件。这可以通过使用 --security-opt seccomp=unconfined 参数实现。仅在绝对必要时使用此选项,因为它会禁用 Docker 的关键安全层,增加容器逃逸漏洞的可能性,这一点至关重要。
如果您注意到文本模糊,特别是黑色背景上的浅色文本,可以通过在侧边栏中启用 FullColor 4:4:4 编码或使用 jpeg 编码模式向浏览器发送真正的 8 位颜色。
硬件加速注意事项: 目前,只有 Nvidia GPU 支持在 Zero Copy 模式下编码此颜色配置文件。如果在 Intel 或 AMD GPU 上启用 FullColor 4:4:4,系统将回退到 CPU 编码。这会迫使 CPU 从 GPU 读取像素,导致性能显著下降。
我们已将桌面容器从 X11 过渡到现代 Wayland 栈,现在 Wayland 是默认选项。
硬件回退注意事项: 在 x86_64 架构上,Wayland 栈需要支持 AVX2 的处理器(Intel Haswell 代或更新版本)。如果您的处理器缺少 AVX2(例如较旧的 CPU 或某些低端赛扬处理器),容器将自动回退到 X11。
重要: X11 的 GPU 加速支持已弃用。未来硬件加速的开发将完全集中在 Wayland 栈上。
如果您遇到兼容性问题并需要手动禁用 Wayland(强制回退到 X11),可以通过设置以下环境变量来实现:
-e PIXELFLUX_WAYLAND=false为什么选择 Wayland?
GPU 配置
要在 Wayland 模式下使用硬件加速,我们区分用于渲染(3D 应用/桌面)和编码(视频流)的显卡。
配置变量:
DRINODE:用于渲染(EGL)的 GPU 路径。DRI_NODE:用于编码(VAAPI/NVENC)的 GPU 路径。如果两个变量指向同一设备,容器将自动启用零拷贝(Zero Copy)编码,显著降低 CPU 使用率和延迟。如果设置为不同设备,则一个用于渲染,一个用于编码,并进行 CPU 回读。
也可使用环境变量 AUTO_GPU=true,设置后容器中检测到的第一张显卡(例如 /dev/dri/renderD128)将被使用并配置为零拷贝模式。
Intel 和 AMD(开源驱动)
适用于 Intel 和 AMD GPU。
devices:
- /dev/dri:/dev/dri
environment:
- PIXELFLUX_WAYLAND=true
# 可选:如果存在多个设备,指定设备(例如:/dev/dri/renderD129)
- DRINODE=/dev/dri/renderD128
- DRI_NODE=/dev/dri/renderD128
Nvidia(专有驱动)
[!NOTE] Alpine 基础镜像不支持 Nvidia。
前提条件:
.run 文件安装驱动。nvidia-drm.modeset=1 nvidia_drm.fbdev=1。/etc/default/grub 并将参数添加到现有的 GRUB_CMDLINE_LINUX_DEFAULT 行:GRUB_CMDLINE_LINUX_DEFAULT=" nvidia-drm.modeset=1 nvidia_drm.fbdev=1"
然后通过运行以下命令应用更改:
sudo update-grub
/boot/syslinux/syslinux.cfg 并将 nvidia-drm.modeset=1 nvidia_drm.fbdev=1 添加到 Unraid OS 启动项的 append 行末尾。硬件初始化: 在无头系统上,Nvidia 显卡需要在 GPU 上插入物理虚拟插头,以便 DRM 正确初始化。
Docker 运行时: 配置主机 Docker 守护进程以使用 Nvidia 运行时:
sudo nvidia-ctk runtime configure --runtime=docker
sudo systemctl restart docker
Compose 配置:
---
services:
webtop:
image: lscr.io/linuxserver/webtop:latest
environment:
- PIXELFLUX_WAYLAND=true
# 确保这些指向运行时注入的渲染节点(通常是 renderD128)
- DRINODE=/dev/dri/renderD128
- DRI_NODE=/dev/dri/renderD128
deploy:
resources:
reservations:
devices:
- driver: nvidia
count: 1
capabilities: [compute,video,graphics,utility]
--gpus all --runtime nvidia 添加到额外参数中。此容器与 SealSkin 兼容。
SealSkin 是一个自托管的客户端-服务器平台,提供安全认证和协作功能,同时使用浏览器扩展拦截用户操作(如点击链接或下载文件)并将其重定向到运行在远程服务器上的安全、隔离的应用环境。
此容器基于 https://github.com/linuxserver/docker-baseimage-selkies%E3%80%82
点击展开:可选环境变量
| 变量 | 描述 |
|---|---|
| PIXELFLUX_WAYLAND | 如果设置为 true,容器将以 Wayland 模式初始化,运行 https://github.com/Smithay/smithay 和 Labwc,同时启用 GPU 零拷贝编码 |
| SELKIES_DESKTOP | 如果设置为 true 且处于 Wayland 模式,将使用 labwc 初始化一个简单面板 |
| CUSTOM_PORT | 容器监听 HTTP 的内部端口,如需更改默认端口 3000 可设置此变量 |
| CUSTOM_HTTPS_PORT | 容器监听 HTTPS 的内部端口,如需更改默认端口 3001 可设置此变量 |
| CUSTOM_WS_PORT | 容器监听 WebSocket 的内部端口,如需更改默认端口 8082 可设置此变量 |
| CUSTOM_USER | HTTP 基本认证用户名,默认值为 abc |
| DRI_NODE | 编码 GPU:启用 VAAPI/NVENC 流编码并使用指定设备(例如 /dev/dri/renderD128) |
| DRINODE | 渲染 GPU:指定用于 EGL/3D 加速的 GPU(例如 /dev/dri/renderD129) |
| AUTO_GPU | 如果设置为 true 且处于 Wayland 模式,将自动使用第一个可用 GPU 进行编码和渲染(例如 /dev/dri/renderD128) |
| PASSWORD | HTTP 基本认证密码,默认值为 abc。如果未设置,则不进行认证 |
| SUBFOLDER | 应用的子文件夹(如果运行子文件夹反向代理),需包含前后斜杠(例如 /subfolder/) |
| TITLE | 网页浏览器中显示的页面标题,默认值为 "Selkies" |
| DASHBOARD | 允许用户设置仪表板。选项:selkies-dashboard、selkies-dashboard-zinc、selkies-dashboard-wish |
| FILE_MANAGER_PATH | 修改默认上传/下载文件路径,路径必须对 abc 用户有适当权限 |
| START_DOCKER | 如果设置为 false,具有特权的容器将不会自动启动 DinD Docker 配置 |
| DISABLE_IPV6 | 如果设置为 true 或任何值,将禁用 IPv6 |
| LC_ALL | 设置容器运行的语言(例如 fr_FR.UTF-8 ar_AE.UTF-8) |
| NO_DECOR | 如果设置,应用将无窗口边框运行,用于 PWA。(可通过 Ctrl+Shift+d 启用/禁用边框) |
| NO_FULL | 使用 openbox 时不自动全屏应用 |
| NO_GAMEPAD | 禁用用户空间游戏手柄插入程序注入 |
| DISABLE_ZINK | 如果检测到显卡,不设置 Zink 环境变量(用户空间应用将使用 CPU 渲染) |
| DISABLE_DRI3 | 如果检测到显卡,不使用 DRI3 加速(用户空间应用将使用 CPU 渲染) |
| MAX_RES | 传递容器的最大分辨率,默认值为 16k 15360x8640 |
| WATERMARK_PNG | 容器内水印 PNG 的完整路径(例如 /usr/share/selkies/www/icon.png) |
| WATERMARK_LOCATION | 流上绘制图像的位置,选项如下 |
WATERMARK_LOCATION 选项:
点击展开:可选运行配置(DinD 和 GPU 挂载)
| 参数 | 描述 |
|---|---|
--privileged | 启动Docker-in-Docker (DinD)环境。为获得更好性能,可从主机挂载Docker数据目录,例如:-v /path/to/docker-data:/var/lib/docker。 |
-v /var/run/docker.sock:/var/run/docker.sock | 挂载主机的Docker套接字,以便从容器内部管理主机容器。 |
--device /dev/dri:/dev/dri | 将GPU挂载到容器中,可与 DRINODE 环境变量配合使用,利用主机显卡实现GPU加速应用。 |
点击展开:传统X11分辨率与加速
[!NOTE] 本部分仅适用于未使用
PIXELFLUX_WAYLAND=true的情况。
在X11模式下通过Nvidia DRM或DRI3使用3D加速时,将虚拟显示限制在合理的最大分辨率至关重要,以避免内存耗尽或性能下降。
-e MAX_RES=3840x2160这会将总虚拟帧缓冲区设置为4K。默认情况下,虚拟显示器为16K。如果在加速X11会话中遇到性能问题,请尝试将分辨率限制为1080p,然后逐步提高:
-e SELKIES_MANUAL_WIDTH=1920
-e SELKIES_MANUAL_HEIGHT=1080
-e MAX_RES=1920x1080
要以其他语言启动桌面会话,请设置 LC_ALL 环境变量。例如:
-e LC_ALL=zh_CN.UTF-8 - 中文-e LC_ALL=ja_JP.UTF-8 - 日语-e LC_ALL=ko_KR.UTF-8 - 韩语-e LC_ALL=ar_AE.UTF-8 - 阿拉伯语-e LC_ALL=ru_RU.UTF-8 - 俄语-e LC_ALL=es_MX.UTF-8 - 西班牙语(拉丁美洲)-e LC_ALL=de_DE.UTF-8 - 德语-e LC_ALL=fr_FR.UTF-8 - 法语-e LC_ALL=nl_NL.UTF-8 - 荷兰语-e LC_ALL=it_IT.UTF-8 - 意大利语在容器内安装应用有两种方法:PRoot Apps(推荐用于持久化)和原生应用(Native Apps)。
PRoot Apps(持久化)
如果容器被重新创建,原生安装的软件包(例如通过 apt-get install)将不会持久保存。为了在容器更新后保留应用及其设置,建议使用 https://github.com/linuxserver/proot-apps%E3%80%82%E8%BF%99%E4%BA%9B%E6%98%AF%E5%AE%89%E8%A3%85%E5%88%B0%E7%94%A8%E6%88%B7%E6%8C%81%E4%B9%85%E5%8C%96 $HOME 目录的可移植应用。
要安装应用,请在容器内使用命令行:
proot-apps install filezilla
支持的应用列表可在 https://github.com/linuxserver/proot-apps?tab=readme-ov-file#supported-apps 查看。
原生应用(非持久化)
您可以使用 https://github.com/linuxserver/docker-mods/tree/universal-package-install 模块从系统原生仓库安装软件包。此方法会增加容器启动时间,且不具备持久性。在您的 compose.yaml 中添加以下内容:
environment:
- DOCKER_MODS=linuxserver/mods:universal-package-install
- INSTALL_PACKAGES=libfuse2|git|gdb
点击展开:强化选项
这些变量可用于为单应用场景锁定桌面环境或限制用户功能。
| 变量 | 描述 |
|---|---|
HARDEN_DESKTOP | 启用 DISABLE_OPEN_TOOLS、DISABLE_SUDO 和 DISABLE_TERMINALS。如果用户未显式设置相关Selkies UI设置(SELKIES_FILE_TRANSFERS、SELKIES_COMMAND_ENABLED、SELKIES_UI_SIDEBAR_SHOW_FILES、SELKIES_UI_SIDEBAR_SHOW_APPS),也会进行设置。 |
HARDEN_OPENBOX | 启用 DISABLE_CLOSE_BUTTON、DISABLE_MOUSE_BUTTONS 和 HARDEN_KEYBINDS。如果用户未设置 RESTART_APP,也会自动设置,确保主应用关闭后自动重启。 |
单独的强化变量:
| 变量 | 描述 |
|---|---|
DISABLE_OPEN_TOOLS | 如果为true,通过移除执行权限禁用 xdg-open 和 exo-open 二进制文件。 |
DISABLE_SUDO | 如果为true,通过移除执行权限并使无密码sudo配置失效来禁用 sudo 命令。 |
DISABLE_TERMINALS | 如果为true,通过移除执行权限并从Openbox右键菜单隐藏常见终端模拟器来禁用它们。 |
DISABLE_CLOSE_BUTTON | 如果为true,移除Openbox窗口管理器中窗口标题栏的关闭按钮。 |
DISABLE_MOUSE_BUTTONS | 如果为true,禁用Openbox窗口管理器中的右键和中键上下文菜单及操作。 |
HARDEN_KEYBINDS | 如果为true,禁用可能绕过其他强化选项的默认Openbox键盘快捷键(例如 Alt+F4 关闭窗口、Alt+Escape 显示根菜单)。 |
RESTART_APP | 如果为true,启用看门狗服务,当主应用关闭时自动重启。用户的自动启动脚本会设为只读并归root所有,防止篡改。 |
点击展开:Selkies应用设置
使用环境变量可以配置应用的各个方面。
布尔值与锁定:
布尔值设置接受 true 或 false。您还可以通过追加 |locked 防止用户在UI中更改布尔值设置。
-e SELKIES_USE_CPU="true|locked"枚举与列表:
这些设置接受逗号分隔的值列表。第一项为默认值。如果仅提供一项,UI下拉菜单将隐藏。
-e SELKIES_ENCODER="jpeg"范围:
使用连字符分隔的 min-max 格式表示滑块,或使用单个数字锁定值。
-e SELKIES_FRAMERATE="60"手动分辨率模式:
如果设置了 SELKIES_MANUAL_WIDTH 或 SELKIES_MANUAL_HEIGHT,分辨率将锁定为这些值。
容器通过运行时传递的参数(如上文所述)进行配置。这些参数用冒号分隔,分别表示 :。例如,-p 8080:80 会将容器内部的 80 端口暴露出来,使其可通过主机 IP 在容器外部的 8080 端口访问。
| 参数 | 功能 |
|---|---|
-p 3000:3000 | Web 桌面 GUI HTTP,必须进行代理 |
-p 3001:3001 | Web 桌面 GUI HTTPS |
-e PUID=1000 | 用于用户 ID - 详见下方说明 |
-e PGID=1000 | 用于组 ID - 详见下方说明 |
-e TZ=Etc/UTC | 指定要使用的时区,参见此 列表。 |
-v /config | abc 用户的主目录 |
--shm-size= | 所有桌面镜像推荐使用 |
您可以通过使用特殊前缀 FILE__ 从文件中设置任何环境变量。
例如:
-e FILE__MYVAR=/run/secrets/mysecretvariable
这会根据 /run/secrets/mysecretvariable 文件的内容设置环境变量 MYVAR。
对于我们所有的镜像,您可以通过可选的 -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)
我们发布了各种 https://github.com/linuxserver/docker-mods%EF%BC%8C%E4%BB%A5%E5%9C%A8%E5%AE%B9%E5%99%A8%E5%86%85%E5%90%AF%E7%94%A8%E9%A2%9D%E5%A4%96%E5%8A%9F%E8%83%BD%E3%80%82%E5%8F%AF%E7%94%A8%E4%BA%8E%E6%AD%A4%E9%95%9C%E5%83%8F%E7%9A%84Mods%E5%88%97%E8%A1%A8%EF%BC%88%E5%A6%82%E6%9C%89%EF%BC%89%E4%BB%A5%E5%8F%8A%E5%8F%AF%E5%BA%94%E7%94%A8%E4%BA%8E%E6%88%91%E4%BB%AC%E4%BB%BB%E4%BD%95%E9%95%9C%E5%83%8F%E7%9A%84%E9%80%9A%E7%94%A8Mods%EF%BC%8C%E5%8F%AF%E9%80%9A%E8%BF%87%E4%B8%8A%E6%96%B9%E7%9A%84%E5%8A%A8%E6%80%81%E5%BE%BD%E7%AB%A0%E8%AE%BF%E9%97%AE%E3%80%82
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 pull
docker-compose pull webtop
docker-compose up -d
docker-compose up -d webtop
docker image prune
docker pull lscr.io/linuxserver/webtop:latest
docker stop webtop
docker rm webtop
/config 文件夹和设置将被保留)docker image prune
[!TIP] 我们推荐使用 Diun 进行更新通知。不推荐或支持其他自动无人值守更新容器的工具。
如果您出于开发目的或自定义逻辑需要对这些镜像进行本地修改:
git clone https://github.com/linuxserver/docker-webtop.git
cd docker-webtop
docker build \
--no-cache \
--pull \
-t lscr.io/linuxserver/webtop:latest .
可以使用 lscr.io/linuxserver/qemu-static 在x86_64硬件上构建ARM变体,反之亦然:
docker run --rm --privileged lscr.io/linuxserver/qemu-static --reset
注册后,您可以使用 -f Dockerfile.aarch64 指定要使用的Dockerfile。
来自真实用户的反馈,见证轩辕镜像的优质服务