qsm-rd
QSM Directは、Proxmox VEのWebコンソールのnoVNC画面をWebRTCの映像ストリームに置き換えます。同じブラウザタブで、同じPVEログインと同じVM.Console権限のまま使えます。クライアントには何もインストールせず、pveproxyとpvedaemonも変更しません。
- Proxmox VE
- WebRTC
- LXC
- ステータス
- バージョン0.4.0。HEVCは実験的で、QSM Display1を有効にしたVMのライブマイグレーションは検証されていません。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コンソールは、変化した画面の矩形を送ります。動画、スクロール、アニメーションのあるインターフェースなど、稼働中のデスクトップでの作業では、帯域を多く使うわりに1秒あたりの異なる画面の数が少なく、ゲストの3Dも使えません。QSM Directはノード上でゲストの画面を映像としてエンコードし、ブラウザにストリーミングします。READMEには標準のnoVNCとの実測比較が掲載されており、最初の画面表示、単発のポインタイベント、OSが起動する前のすべてなど、noVNCの方が適している場面も示されています。
主な機能
- 標準はH.264で、NVENC、QSV、VA-API、またはCPU上の
libx264を使います。HEVCはVMごとに明示的に選ぶ実験的な選択肢です。 - OpenGLと3Dが使えるVirGLゲストのほか、GPUなしのStandard VGA、VirtIO、VMwareアダプタにも対応します。
- サウンド(Opus)、ブラウザのマイクのゲストへの入力、双方向のテキストクリップボード。VMでのクリップボードには、任意のゲストエージェントが必要です。
- ポインタの移動は、最新の状態だけを運ぶ順序なしの専用レーンで送られるため、処理中のフレームの後ろに溜まることがありません。
- KDE Plasmaデスクトップを持つLXCコンテナ:ttyごとに1つのコンソールがあり、それぞれに専用のログイン画面があります。
仕組み
ブラウザは、TLSポート8007で動くノードローカルのシグナリングサービスにWebRTCのofferを送ります。サービスはPVE自身の/access/ticketを通じてブラウザのPVEチケットとVM.Console権限を確認し、offerをターミナルサービスに渡します。ターミナルサービスはVMごとに1つのメディアワーカーを起動します。ワーカーはQEMUのD-Busディスプレイを読み取り、映像と音声をエンコードしてブラウザに直接送ります。入力は同じ経路で戻ります。1台のVMのすべての視聴者が、1本のエンコードストリームを共有します。
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でビルドし、そのVMを実行する可能性のあるすべてのノードにインストールします。 - ブラウザ:Chrome、Edge、プロプライエタリコーデック入りのChromium、Safari、またはOpenH264プラグインを有効にしたFirefox。
- ネットワーク:TCP 8006と8007、運用ネットワークからのUDPの受信。ノード証明書が有効なホスト名でアクセスすること。
- エンコーダー:NVENC、QSV、VA-API、またはCPU(
libx264では開いているコンソール1つあたり約0.5コア)。VirGLプロファイルにはDRMレンダーデバイスが必要です。1ノードあたり最大16のコンソールセッション。
このページは、2026年10月時点のリポジトリのREADMEとドキュメントの要約です。正式な情報源はリポジトリそのものです。