qsm-rd
QSM Direct는 Proxmox VE 웹 콘솔의 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 콘솔은 변경된 화면 사각형을 전송합니다. 동영상, 스크롤, 애니메이션 인터페이스처럼 실행 중인 데스크톱 안에서 작업할 때는 대역폭을 많이 쓰면서도 초당 서로 다른 화면 수가 적고, 게스트 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마다 콘솔이 하나씩 있고, 각각 자체 로그인 화면을 갖습니다.
작동 방식
브라우저는 TLS 포트 8007의 노드 로컬 시그널링 서비스로 WebRTC offer를 보냅니다. 서비스는 PVE 자체의 /access/ticket을 통해 브라우저의 PVE 티켓과 VM.Console 권한을 확인한 뒤 offer를 터미널 서비스에 넘기고, 터미널 서비스는 VM마다 미디어 워커를 하나씩 시작합니다. 워커는 QEMU의 D-Bus 디스플레이를 읽어 화면과 소리를 인코딩하고 브라우저로 직접 보냅니다. 입력은 같은 경로로 돌아옵니다. 한 VM의 모든 시청자는 하나의 인코더 스트림을 공유합니다.
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사용 시 열린 콘솔당 약 0.5코어). VirGL 프로필에는 DRM 렌더 장치가 필요합니다. 노드당 최대 16개의 콘솔 세션.
이 페이지는 2026년 10월 기준 저장소의 README와 문서를 요약한 것입니다. 정확한 정보는 저장소 자체를 기준으로 합니다.