Initial commit — Proxmox SPICE Client (Electron)
This commit is contained in:
@@ -0,0 +1,92 @@
|
||||
# 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-Monitor** — `Shift+F11` im SPICE-Viewer
|
||||
- **Proxmox-Benutzer-Konten** — jeder User sieht nur seine zugewiesenen VMs
|
||||
|
||||
## Voraussetzungen
|
||||
|
||||
### Client-Maschinen
|
||||
|
||||
**Linux:**
|
||||
```bash
|
||||
sudo apt install virt-viewer
|
||||
```
|
||||
|
||||
**Windows:**
|
||||
Download: https://virt-manager.org/download/
|
||||
|
||||
### Node.js / npm
|
||||
```bash
|
||||
node >= 18
|
||||
npm >= 9
|
||||
```
|
||||
|
||||
## Installation & Start
|
||||
|
||||
```bash
|
||||
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)
|
||||
|
||||
```bash
|
||||
npm run build:linux # → dist/*.AppImage + *.deb
|
||||
npm run build:win # → dist/*Setup*.exe
|
||||
```
|
||||
|
||||
Siehe [BUILD.md](BUILD.md) für detaillierte Build-Anleitung inkl. Icon-Konvertierung.
|
||||
|
||||
## Docker (X11-Forwarding)
|
||||
|
||||
```bash
|
||||
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
|
||||
Reference in New Issue
Block a user