SPICE, Proxmox VE consoles, and headless API integration
SPICE protocol support
A new SPICE connection type for direct SPICE displays (libvirt/QEMU consoles), with TLS, CA verification, certificate-subject pinning, and SPICE-proxy support. Built on the upstream SPICE work (apache/guacamole-server#688, GUACAMOLE-261), vendored into the bundled guacd.
Proxmox VE consoles
A dedicated Proxmox VE console connection type that brokers a VM's SPICE console through the Proxmox API. Provide the PVE API URL, a VM ID, and an API token; rustguac fetches a one-time SPICE ticket at connect, so nothing sensitive is stored beyond the token.
- Node auto-detect: leave the node blank and it is resolved from the VM ID via
/cluster/resources, the way the PVE web UI does it. - Split API token: a visible Token ID (shown in the connection list) plus a masked secret.
- SSH tunneling: both the PVE API call and the console connection route through a jump-host chain.
- Clear PVE errors surfaced from the API (wrong node, VM not running, display not set to SPICE, and so on).
Headless API integration
The built-in client now accepts a pre-minted WebSocket ticket in the URL (/client/{id}?ticket=...), so an API-driven integration can open a session in a browser with no OIDC login and without putting a durable API key in the browser. The backend mints the ticket via POST /api/ws-ticket.
Fixes
- guacd: silenced a spurious
Invalid port valuewarning on TLS-only SPICE connections.
Dependencies
russh 0.62.4, base64 0.23, clap 4.6.3, tokio 1.53.1, serde_json 1.0.151, tokio-util 0.7.19, libc 0.2.189.
Packaging
Packaged builds bundle guacd with SPICE support (libspice-client-glib-2.0).
Full Changelog: v1.8.2...v1.9.0