TAKT 之外
qsm-rd
QSM Direct 用 WebRTC 视频流取代 Proxmox VE 网页控制台中的 noVNC 画面,仍在同一个浏览器标签页中,使用同一个 PVE 登录和同一个 VM.Console 权限。客户端无需安装任何东西,pveproxy 和 pvedaemon 也不做修改。
- Proxmox VE
- WebRTC
- LXC
- 状态
- 版本 0.4.0。HEVC 为实验性功能,启用 QSM Display1 的虚拟机的在线迁移尚未经过验证。已向 Proxmox 提交功能请求(bug #8106);仓库中已准备好面向 qemu-server 和 pve-manager 的 RFC 与补丁系列。
- 许可证
- GPL-3.0-or-later;PVE 控制台脚本、信令服务、LXC 控制台和查看器页面采用 AGPL-3.0-or-later。
- 平台
- Proxmox VE 9 节点;客户端为支持 WebRTC H.264 和 Opus 的浏览器。
解决什么问题
原生的 noVNC 控制台传输的是发生变化的屏幕矩形区域。在运行中的桌面里工作时,例如播放视频、滚动页面或使用动画界面,这意味着每秒能看到的不同画面很少、带宽占用却很高,而且客户机无法使用 3D。QSM Direct 在节点上把客户机画面编码为视频,再推流到浏览器。README 公布了与原生 noVNC 的实测对比,其中也列出了 noVNC 仍然更合适的情形:首个画面、单个孤立的指针事件,以及操作系统运行之前的一切。
主要功能
- 默认使用 H.264,通过 NVENC、QSV、VA-API 或 CPU 上的
libx264编码;HEVC 是可按虚拟机单独显式选择的实验性选项。 - 支持带 OpenGL 和 3D 的 VirGL 客户机,也支持无需 GPU 的 Standard VGA、VirtIO 和 VMware 显示适配器。
- 声音(Opus)、把浏览器麦克风接入客户机,以及双向文本剪贴板;在虚拟机中,剪贴板需要一个可选的客户机代理。
- 指针移动走一条独立的无序通道,只保留最新状态,因此不会排在繁忙的帧后面。
- 带 KDE Plasma 桌面的 LXC 容器:每个 tty 一个控制台,各自有登录界面。
工作原理
浏览器将其 WebRTC offer 发送到节点本地的信令服务(TLS 端口 8007)。该服务通过 PVE 自身的 /access/ticket 校验浏览器的 PVE 票据和 VM.Console 权限,再把 offer 交给终端服务,后者为每台虚拟机启动一个媒体工作进程。工作进程读取 QEMU 的 D-Bus 显示,编码画面和声音,并直接发送到浏览器;输入沿同一路径返回。同一台虚拟机的所有观看者共享一路编码流。
apt install ./qsm-pve-direct_*.deb systemctl enable --now qsm-pve-direct-terminal.service qsm-pve-direct-signal.service
要求
- Proxmox VE 9(
pve-manager9.x);软件包在 Debian 13 上构建,并安装在每个可能运行该虚拟机的节点上。 - 浏览器:Chrome、Edge、带专有编解码器的 Chromium、Safari,或启用 OpenH264 插件的 Firefox。
- 网络:TCP 8006 和 8007,以及来自运维网络的入站 UDP;使用节点证书有效的主机名访问。
- 编码器:NVENC、QSV、VA-API 或 CPU(使用
libx264时每个打开的控制台约占半个核心);VirGL 配置需要 DRM 渲染设备。每个节点最多 16 个控制台会话。
本页概述了截至 2026 年 10 月该仓库的 README 和文档内容。以仓库本身为准。