本文使用的 Docker 镜像
本文基于 kasmweb/desktop:1.18.0,实测标签 1.18.0,测试平台 Ubuntu 24.04 Linux。
云服务器、VPS、家用 NAS 多半是 纯命令行 Linux:没有显示器、没有桌面环境。装带界面的安装向导、数据库客户端或办公软件,只能靠 SSH;给宿主机装一整套 GNOME / KDE,又占内存、又难和维护中的 Web / 数据库服务共存;传统 VNC / RDP 还要额外装客户端,证书与权限也更碎。
内网和小团队更实际的做法是:宿主机继续保持无图形界面,按需起一个容器,用本机浏览器进完整 Linux 桌面,用完可停,不污染系统。商业云桌面贵、数据出域不可控;自建整套虚拟化或编排平台对「只想临时开个桌面」又偏重。
Kasm Desktop(镜像 kasmweb/desktop,见 镜像页)是 Kasm Workspaces 提供的 容器化 Ubuntu 桌面:画面经开源 KasmVNC 推到浏览器,实测为 XFCE,预装 Chrome 与 Firefox。镜像面向 Workspaces 编排,也支持 独立部署——本文只跟做独立部署,一条 Compose 即可跑通。
部署跑通之后,你实际能做这些事:
| 场景 | 部署后怎么用 |
|---|---|
| 云服务器图形化操作 | 浏览器打开 https://IP:6901,登录后操作 XFCE 桌面 |
| 临时办公 / 开发 | 用内置 Chrome / Firefox、终端、文件管理器,宿主机不必装桌面 |
| 隔离试用 Linux GUI | 容器内试软件,停掉即走 |
| 评估 Kasm 生态 | 先独立跑通,再决定是否安装完整 Kasm Workspaces |
本文用 轩辕镜像 加速拉取 kasmweb/desktop:1.18.0,以 Docker Compose 完成启动与浏览器登录;文末附 docker run 备选。文内附 8 张实测截图。
上手要点
- 部署:默认 Compose(第五节);临时试玩见 第八节 docker run
- 标签:
1.18.0(钉死发布版;上游通常无latest)- 端口:宿主机 6901 → 容器 6901(必须 HTTPS)
- 账号:
kasm_user/ 环境变量VNC_PW(务必改成强密码)- 共享内存:
shm_size: 512m(过小易导致容器内浏览器崩溃)- 桌面:实测 XFCE;预装 Chrome / Firefox
- 暴露:公网限制来源 IP + 强密码;自签名证书需浏览器点「高级 → 继续前往」
- 边界:独立部署部分能力不完整(见第六节);多用户 / 完整能力用 Workspaces
镜像说明:kasmweb/desktop · tags。相关:KasmVNC · workspaces-images · 自定义镜像 · 问题反馈。
一、Kasm Desktop 是什么?
一句话:Docker 里跑 Ubuntu + XFCE,浏览器打开就能用桌面——不必给服务器装图形界面,也不必另装 VNC 客户端。
| 能力 | 说明 |
|---|---|
| 浏览器访问 | https://IP:6901,画面由 KasmVNC 推流 |
| 桌面环境 | Ubuntu Jammy + XFCE;预装 Chrome、Firefox |
| 部署方式 | 独立部署(本文)或挂到 Kasm Workspaces 做多用户编排 |
| 自定义 | 可基于官方 Core / 默认镜像扩展,见 Building Custom Images |
和常见方案比:
| Kasm Desktop(本文) | 宿主机装 GNOME/KDE | Webtop | |
|---|---|---|---|
| 宿主机 | 可保持无桌面 | 直接装桌面,占资源 | 可保持无桌面 |
| 访问方式 | 浏览器 + KasmVNC | 本机或另配远程 | 浏览器 + Selkies |
| 适合 | 试用 Kasm、临时 GUI | 长期本机图形环境 | LinuxServer 生态 |
易混对象(只需跟做一个镜像):
| 对象 | 说明 |
|---|---|
kasmweb/desktop | 本文跟做镜像 |
| KasmVNC | 推流组件,已打进镜像,不用单独 pull |
| workspaces-images | 官方构建源码库(含 dockerfile-kasm-desktop 等),不是第二个 Desktop 镜像 |
| Kasm Workspaces | 完整平台(用户、会话、策略);本文不安装 |
轩辕 /r/ 与 /zh/r/ | 同一镜像的概览页 / 中文简介页,不是两个仓库 |
text浏览器 ──HTTPS:6901──▶ KasmVNC ──▶ XFCE + Chrome / Firefox 认证:kasm_user + VNC_PW 共享内存:shm_size ≥ 512m
官方限时演示(非自建):Kasm Live Demo。
二、环境要求
| 项目 | 建议 |
|---|---|
| 系统 | Linux,建议 Ubuntu 24.04 |
| Docker | Engine + Compose V2 |
| 内存 | ≥ 2~4 GB 可用(桌面 + 浏览器较吃内存) |
| 磁盘 | CONTENT SIZE 约 1.58 GB(DISK USAGE 约 5.31 GB)+ 工作目录 |
| 架构 | 实测 amd64;其它架构先查 tags |
| 端口 | 宿主机 6901(HTTPS) |
bashdocker --version docker compose version
Linux 未装 Docker 可使用轩辕镜像一键安装脚本:
bashbash <(wget -qO- https://get.xuanyuan.cloud/docker.sh)
备用地址:
bashbash <(wget -qO- https://get.xuanyuan.me/docker.sh)
更多见 轩辕镜像使用手册。
6901 已被占用时,Compose 改为
"16901:6901",访问https://IP:16901。
三、标签怎么选
Kasm 镜像标签与 Workspaces 发版对齐,通常不提供 latest。本文钉死 1.18.0。
| 标签 | 含义 | 推荐 |
|---|---|---|
1.18.0 | 固定发布版 | 本文跟做 |
1.19.0 等 | 更新的固定发布版 | 升级前核对说明与架构 |
*-rolling* | 滚动重建 | 尝鲜;生产勿当默认 |
develop | 开发测试 | 仅测试 |
完整列表:tags。
四、拉取镜像
用 轩辕镜像 加速拉取:
bashdocker pull docker.xuanyuan.run/kasmweb/desktop:1.18.0
Ubuntu 24.04 实测:
text1.18.0: Pulling from kasmweb/desktop 09710af56a6b: Pull complete d3e7c97af490: Pull complete 4f4fb700ef54: Pull complete 7a22b210ffa5: Pull complete 0f18855c5fad: Pull complete 0ca4d1fe6073: Pull complete 1fcfa6cf3103: Pull complete 668a930d1f3a: Pull complete 008a1600738f: Pull complete 6e13916b2f2b: Pull complete 71985e4f0615: Pull complete 8f23b650c150: Pull complete 67c9d22e1b6e: Pull complete 4a05668217a1: Pull complete 17d47f6c67d6: Pull complete Digest: sha256:9a94316372b8858d0238134ba507812e867fcb903d0db599c8cfd9ff8bcd0bfb Status: Downloaded newer image for docker.xuanyuan.run/kasmweb/desktop:1.18.0 docker.xuanyuan.run/kasmweb/desktop:1.18.0
bashdocker images docker.xuanyuan.run/kasmweb/desktop:1.18.0
textIMAGE ID DISK USAGE CONTENT SIZE EXTRA docker.xuanyuan.run/kasmweb/desktop:1.18.0 9a94316372b8 5.31GB 1.58GB U
首次拉取体积较大,请预留磁盘与时间。
五、Docker Compose 部署(推荐)
| 平台 | 工作目录 |
|---|---|
| Linux(正文默认) | /www/wwwroot/kasm-desktop |
| macOS 实测 | ~/docker/kasm-desktop |
5.1 创建目录
bashmkdir -p /www/wwwroot/kasm-desktop chown -R "$USER:$USER" /www/wwwroot/kasm-desktop cd /www/wwwroot/kasm-desktop
非 root 时给 mkdir / chown 加 sudo。
5.2 编写 docker-compose.yml
把 ChangeMe_StrongPass 换成你自己的强密码(浏览器登录密码 = VNC_PW):
bashcat > docker-compose.yml <<'EOF' services: kasm-desktop: image: docker.xuanyuan.run/kasmweb/desktop:1.18.0 container_name: kasm-desktop restart: unless-stopped ports: - "6901:6901" environment: - VNC_PW=ChangeMe_StrongPass shm_size: "512m" EOF
| 配置项 | 说明 |
|---|---|
image | 轩辕镜像加速坐标 + 标签 1.18.0 |
6901:6901 | HTTPS 桌面入口 |
VNC_PW | 登录密码;务必修改,勿把示例密码长期暴露在公网 |
shm_size: 512m | 必设;共享内存不足时容器内浏览器易崩溃 |
未挂数据卷时,桌面内文件随容器生命周期变化;要长期保留请自行备份,或改用 Workspaces 的 Persistent Profiles。
5.3 启动服务
bashdocker compose pull docker compose up -d docker compose ps docker compose logs -f --tail 100
Ubuntu 实测:
text[+] Running 2/2 ✔ Network kasm-desktop_default Created ✔ Container kasm-desktop Started NAME IMAGE COMMAND SERVICE CREATED STATUS PORTS kasm-desktop docker.xuanyuan.run/kasmweb/desktop:1.18.0 "/dockerstartup/kasm…" kasm-desktop 5 seconds ago Up 4 seconds 4901/tcp, 5901/tcp, 0.0.0.0:6901->6901/tcp, [::]:6901->6901/tcp
日志关键行(节选):
textStarting KasmVNC Paste this url in your browser: https://192.168.96.2:6901 ------------------ Xfce4 window manager startup------------------ Starting XFCE ------------------ KasmVNC environment started ------------------ vncext: Listening for websocket connections on 0.0.0.0 interface(s), port 6901 Kasm User () started container id b5e456028ee1 with local IP address 192.168.96.2
日志中的
https://192.168.96.2:6901是容器网桥地址,局域网请用https://宿主机IP:6901(本文实测https://192.168.1.10:6901)。
KasmGamepadServer、polkit、colord、UDisks2等告警在独立容器里常见,一般不影响桌面使用。
看到 Up,且出现 Starting XFCE、Listening … port 6901 后,按 Ctrl+C 退出日志跟踪。
六、浏览器访问与使用
6.1 打开地址(必须 HTTPS)
| 方式 | 地址 | 说明 |
|---|---|---|
| HTTPS | https://服务器IP:6901 | 自签名证书;不要用 HTTP(日志会出现 non-SSL connection disallowed) |
本文实测:https://192.168.1.10:6901。本机可试 https://127.0.0.1:6901。
首次会提示「您的连接不是私密连接」(NET::ERR_CERT_AUTHORITY_INVALID):点 高级 → 继续前往 …(不安全)。

6.2 登录
| 项 | 值 |
|---|---|
| 用户名 | kasm_user |
| 密码 | Compose 里的 VNC_PW |

登录后进入 XFCE:左侧为 Downloads、Uploads、Google Chrome、Firefox;屏幕左缘小箭头为 Kasm 控制条(剪贴板、画质等)。

6.3 桌面里能做什么
双击 Google Chrome,可正常上网(本文打开轩辕镜像首页):

打开桌面 Downloads,文件管理器路径一般为 /home/kasm-user/Desktop/Downloads/:

顶栏 Applications 可进 Terminal、File Manager、Settings 等:

打开 Terminal Emulator,执行 uname -a:主机名与容器 ID 一致(实测 b5e456028ee1):

再执行 top,可看到 Xvnc、ffmpeg 及 kasm_* 相关进程:

独立部署限制:官方说明音频、上传/下载、麦克风直通等在 stand-alone 下可能不完整,完整能力通常需要 Kasm Workspaces。桌面上的 Uploads / Downloads 是否可用,以你实测为准。
七、日常运维与安全
bashcd /www/wwwroot/kasm-desktop docker compose ps docker compose logs -f --tail 100 docker compose restart docker compose stop
修改 VNC_PW 后执行 docker compose up -d。
公网暴露时建议:
- 防火墙仅放行可信来源访问 6901
- 使用强密码,并定期更换
- 有域名时前置反向代理 + 可信证书(注意 WebSocket / HTTPS 透传)
问题反馈:workspaces-issues。
八、备选:docker run
仅临时试玩或没有 Compose 时使用;日常跟做仍用第五节。
bashdocker run -d \ --name kasm-desktop \ --restart unless-stopped \ --shm-size=512m \ -p 6901:6901 \ -e VNC_PW=ChangeMe_StrongPass \ docker.xuanyuan.run/kasmweb/desktop:1.18.0
一次性前台试玩(退出即删容器):
bashdocker run --rm -it \ --shm-size=512m \ -p 6901:6901 \ -e VNC_PW=ChangeMe_StrongPass \ docker.xuanyuan.run/kasmweb/desktop:1.18.0
与 Compose 容器重名时先 docker compose down 或换 --name。
九、迁移 / 升级
docker compose stop,备份仍需保留的桌面文件(若有)- 将 Compose 中标签改为目标版本(如
1.19.0),先查 tags docker compose pull && docker compose up -d- 浏览器重新登录,抽查 Chrome / 终端
- 异常则改回旧标签再
up -d
滚动标签(*-rolling*)会定期重建,升级前记下可回退的固定版号或 Digest。
十、常见问题 FAQ
Q1:KasmVNC 还要再拉一个镜像吗?
不用。跟做 kasmweb/desktop 即可。要改预装软件再看 workspaces-images 与 自定义镜像。
Q2:打不开 https://IP:6901?
查 docker compose ps / logs;放行 6901;确认映射 6901:6901。自签名证书点「高级 → 继续前往」。必须用 HTTPS;HTTP 会触发 non-SSL connection disallowed。不要用日志里的容器网桥 IP(如 192.168.96.2)当访问地址。
Q3:用户名密码是什么?
用户名 kasm_user;密码为 VNC_PW。改密码后执行 docker compose up -d。
Q4:容器里浏览器崩溃?
确认 shm_size: "512m"(或更大);内存不足时关掉多余标签页或加大宿主机可用内存。
Q5:日志里 Gamepad / polkit / colord 报错?
独立部署常见告警,多数不影响使用。成功看 Starting XFCE 与 Listening … port 6901。
Q6:为什么没有 latest?
Kasm 一般不提供 latest。请显式写 1.18.0 等固定标签。
Q7:独立部署还是装完整 Workspaces?
个人试用、单桌面 → 本文。多用户、会话策略、完整音频/传文件 → 按 Installation 安装平台。
Q8:和 Webtop 怎么选?
都是浏览器远程桌面。要 Kasm 生态选本文;要 LinuxServer / Selkies 看 Webtop 教程。不必两个都装。
Q9:拉取失败 401 / 402?
401:按 登录认证 检查镜像账户。402:流量用尽,需 充值。其它问题见 常见问题。
十一、命令速查
bashdocker pull docker.xuanyuan.run/kasmweb/desktop:1.18.0 cd /www/wwwroot/kasm-desktop docker compose up -d docker compose ps docker compose logs -f --tail 100 # 浏览器 https://服务器IP:6901 # 用户 kasm_user / 密码 = VNC_PW docker compose down
十二、延伸阅读
- kasmweb/desktop 镜像页 · 标签列表
- GitHub · KasmVNC
- GitHub · workspaces-images
- Kasm Workspaces 安装
- Building Custom Images
- workspaces-issues
- 官方演示 Cast
- Webtop 对照教程
- 轩辕镜像使用手册
总结
- 跟做
kasmweb/desktop:1.18.0:Compose 映射 6901,设置VNC_PW与shm_size: 512m。 - 浏览器用 HTTPS 登录
kasm_user,进入 XFCE(Chrome / Firefox 已预装)。 - KasmVNC 是推流技术、workspaces-images 是构建源码,都不必再单独拉 Desktop 镜像。
- 独立部署适合试用;多用户与完整能力请上 Kasm Workspaces。
阅读原文
评论交流
免责声明
本博客文章所提供的内容、技术方案、配置示例及部署指南等信息,仅供学习交流和技术参考使用。文章内容基于发布时的技术环境和版本信息编写,可能因时间推移、技术更新或环境差异而存在不适用的情况。
用户在参考本博客内容进行部署操作前,应当充分了解相关技术风险,并建议在测试环境中进行充分验证和测试,确认无误后再考虑在生产环境中使用。生产环境部署前,请务必进行数据备份,并制定相应的回滚方案。
用户因使用本博客内容进行部署操作而产生的任何损失、数据丢失、系统故障、安全风险或其他问题,均由用户自行承担全部责任。轩辕镜像官方不对因使用本博客内容而产生的任何直接或间接损失承担责任。
本免责声明的最终解释权归轩辕镜像官方所有。
