Files
proxmox-spice-client/README.md
T

2.4 KiB

Proxmox SPICE Client

Electron-basierter Desktop-Client für Proxmox VE — als Alternative zu RDP/noVNC.
Nutzt das SPICE-Protokoll über virt-viewer für USB-Redirect, Vollbild und Multi-Monitor-Support.

Features

  • Auto-Connect — hat ein Benutzer nur eine SPICE-fähige VM, wird direkt verbunden (kein Menü)
  • VM-Liste — bei mehreren VMs erscheint ein Auswahl-Menü (nur laufende VMs mit SPICE)
  • Credential-Speicher — Zugangsdaten optional lokal speichern
  • USB-Redirect — nativ über remote-viewer (kein Plugin nötig)
  • Vollbild / Multi-MonitorShift+F11 im SPICE-Viewer
  • Proxmox-Benutzer-Konten — jeder User sieht nur seine zugewiesenen VMs

Voraussetzungen

Client-Maschinen

Linux:

sudo apt install virt-viewer

Windows:
Download: https://virt-manager.org/download/

Node.js / npm

node >= 18
npm >= 9

Installation & Start

git clone https://git.hacker-net.de/aria.hacker/proxmox-spice-client.git
cd proxmox-spice-client
npm install
npm start

Build (AppImage / deb / Windows Installer)

npm run build:linux    # → dist/*.AppImage + *.deb
npm run build:win      # → dist/*Setup*.exe

Siehe BUILD.md für detaillierte Build-Anleitung inkl. Icon-Konvertierung.

Docker (X11-Forwarding)

cp .env.example .env
# DISPLAY und PULSE_UID anpassen
xhost +local:docker
docker compose up --build

Persistente Daten (Zugangsdaten) landen im Verzeichnis ./daten/.

Konfiguration

Einstellung Ort
Proxmox-URL Login-Maske in der App
Zugangsdaten Optional lokal gespeichert (electron-store)
Realm Login-Maske (Standard: pam)

Architektur

src/
├── main.js        # Electron-Hauptprozess, IPC, SPICE-Ticket, remote-viewer-Start
├── preload.js     # Context-Bridge (sicherer API-Kanal ins Renderer)
├── proxmox.js     # Proxmox REST API Client (self-signed SSL OK)
└── renderer/
    ├── login.html/js   # Login mit optionalem Credential-Speicher
    ├── vms.html/js     # VM-Liste, Auto-Connect-Logik
    └── styles.css      # Dark-UI

Ablauf:

  1. Login mit Proxmox-Credentials (Benutzer + Realm)
  2. GET /cluster/resources?type=vm — nur zugewiesene VMs
  3. Filter: laufend + SPICE-fähig (qxl* oder virtio-vga-gl)
  4. Eine VM → direkt verbinden; mehrere → Liste
  5. SPICE-Ticket via /spiceproxy.vv-Datei → remote-viewer

Lizenz

MIT