qsm-rd
QSM Direct заменяет картинку noVNC в веб-консоли Proxmox VE видеопотоком WebRTC — в той же вкладке браузера, с тем же входом в PVE и тем же правом VM.Console. На клиенте ничего не устанавливается, а pveproxy и pvedaemon работают без изменений.
- Proxmox VE
- WebRTC
- LXC
- Статус
- Версия 0.4.0. HEVC — экспериментальный, живая миграция ВМ с QSM Display1 не проверялась. В Proxmox подан запрос на функцию (bug #8106); RFC и серии патчей для qemu-server и pve-manager подготовлены в репозитории.
- Лицензия
- GPL-3.0-or-later; скрипт консоли PVE, сервис сигнализации, консоль LXC и страница просмотрщика — AGPL-3.0-or-later.
- Платформы
- Узлы Proxmox VE 9; на клиенте — браузер с H.264 и Opus в WebRTC.
Какую задачу решает
Штатная консоль noVNC передаёт изменившиеся прямоугольники экрана. Для работы внутри запущенного рабочего стола — видео, прокрутка, анимированные интерфейсы — это мало различимых кадров в секунду при большой полосе и нет 3D в госте. QSM Direct кодирует экран гостя в видео на узле и передаёт его в браузер. В README опубликовано измеренное сравнение со штатным noVNC, включая случаи, где noVNC остаётся лучшим инструментом: первая картинка, одиночное событие указателя и всё, что происходит до запуска ОС.
Основные возможности
- H.264 по умолчанию через NVENC, QSV, VA-API или
libx264на CPU; HEVC — явный экспериментальный выбор для отдельной ВМ. - Гости VirGL с OpenGL и 3D или адаптеры Standard VGA, VirtIO и VMware без GPU.
- Звук (Opus), микрофон браузера в госте и текстовый буфер обмена в обе стороны; в ВМ для буфера обмена нужен необязательный гостевой агент.
- Движение указателя идёт по собственной неупорядоченной полосе «последнего состояния» и не может застрять в очереди за тяжёлым кадром.
- LXC-контейнеры с рабочим столом KDE Plasma: по консоли на каждый tty, у каждой свой экран входа.
Как это работает
Браузер отправляет WebRTC-offer локальному сервису сигнализации на узле, TLS-порт 8007. Сервис проверяет PVE-тикет браузера и право VM.Console через собственный /access/ticket PVE и передаёт offer терминальному сервису, который запускает по одному медиа-воркеру на ВМ. Воркер читает D-Bus-дисплей QEMU, кодирует картинку и звук и отправляет их прямо в браузер; ввод идёт обратно тем же путём. Все зрители одной ВМ делят один поток кодера.
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 или Firefox с плагином OpenH264.
- Сеть: TCP 8006 и 8007 и входящий UDP из сетей операторов; имя хоста, для которого действителен сертификат узла.
- Кодер: NVENC, QSV, VA-API или CPU (около половины ядра на открытую консоль с
libx264); профилю VirGL нужно DRM-устройство рендеринга. До 16 сеансов консоли на узел.
Эта страница кратко пересказывает README и документацию репозитория по состоянию на октябрь 2026 года. Первоисточник — сам репозиторий.