qsm-rd
QSM Direct sostituisce l’immagine noVNC nella console web di Proxmox VE con un flusso video WebRTC, nella stessa scheda del browser, con lo stesso login PVE e lo stesso permesso VM.Console. Sul client non si installa nulla, e pveproxy e pvedaemon funzionano senza modifiche.
- Proxmox VE
- WebRTC
- LXC
- Stato
- Versione 0.4.0. HEVC è sperimentale e la migrazione live di una VM con QSM Display1 non è stata qualificata. È stata aperta una richiesta di funzionalità presso Proxmox (bug #8106); nel repository sono pronti un RFC e serie di patch per qemu-server e pve-manager.
- Licenza
- GPL-3.0-or-later; lo script della console PVE, il servizio di signalling, la console LXC e la pagina del visualizzatore sono AGPL-3.0-or-later.
- Piattaforme
- Nodi Proxmox VE 9; sul client, un browser con H.264 e Opus in WebRTC.
Quale problema risolve
La console noVNC standard invia i rettangoli dello schermo che cambiano. Per lavorare dentro un desktop in esecuzione, con video, scorrimento o interfacce animate, questo significa poche immagini distinte al secondo con molta banda, e niente 3D nel guest. QSM Direct codifica lo schermo del guest come video sul nodo e lo trasmette al browser. Il README pubblica un confronto misurato con noVNC standard, compresi i casi in cui noVNC resta lo strumento migliore: la prima immagine, un singolo evento isolato del puntatore e tutto ciò che avviene prima che un sistema operativo sia in esecuzione.
Funzionalità principali
- H.264 per impostazione predefinita tramite NVENC, QSV, VA-API o
libx264sulla CPU; HEVC come scelta esplicita e sperimentale per singola VM. - Guest VirGL con OpenGL e 3D, oppure adattatori Standard VGA, VirtIO e VMware senza GPU.
- Audio (Opus), il microfono del browser nel guest e appunti di testo nei due sensi; in una VM gli appunti richiedono un agente guest facoltativo.
- Il movimento del puntatore viaggia su un proprio canale non ordinato che trasporta solo lo stato più recente, quindi non può accodarsi dietro a un frame pesante.
- Container LXC con desktop KDE Plasma: una console per tty, ciascuna con la propria schermata di login.
Come funziona
Il browser invia la sua offerta WebRTC a un servizio di signalling locale al nodo sulla porta TLS 8007. Il servizio verifica il ticket PVE del browser e il permesso VM.Console tramite il /access/ticket di PVE stesso e passa l’offerta a un servizio terminal, che avvia un media worker per ogni VM. Il worker legge il display D-Bus di QEMU, codifica immagine e audio e li invia direttamente al browser; l’input torna per la stessa strada. Tutti gli spettatori di una VM condividono un unico flusso dell’encoder.
apt install ./qsm-pve-direct_*.deb systemctl enable --now qsm-pve-direct-terminal.service qsm-pve-direct-signal.service
Requisiti
- Proxmox VE 9 (
pve-manager9.x); il pacchetto si compila su Debian 13 e va installato su ogni nodo che può eseguire la VM. - Browser: Chrome, Edge, Chromium con codec proprietari, Safari, oppure Firefox con il plugin OpenH264.
- Rete: TCP 8006 e 8007 e UDP in ingresso dalle reti degli operatori; un nome host per cui il certificato del nodo è valido.
- Encoder: NVENC, QSV, VA-API o la CPU (circa mezzo core per console aperta con
libx264); il profilo VirGL richiede un dispositivo di rendering DRM. Fino a 16 sessioni di console per nodo.
Questa pagina riassume il README e la documentazione del repository a ottobre 2026. La fonte di riferimento è il repository stesso.