Web-Oberflaeche als Dienst, Anmeldung mit den Proxmox-Benutzern
install.sh --with-webexplorer --port <nummer> richtet pvesnap-web.service ein. Fehlt der Port, bricht das Skript mit einer Erklaerung ab; --port ohne --with-webexplorer, ein Port ausserhalb 1-65535, etwas anderes als eine Zahl und Port 8006 (Proxmox selbst) werden ebenfalls abgefangen - und zwar vor der root-Pruefung, damit ein Tippfehler sofort auffaellt. --help beschreibt jetzt alle Optionen mit Beispielen. Port, Adresse und Anmeldeart stehen in /etc/pvesnap/web.conf und lassen sich dort aendern, ohne die Unit anzufassen. Angemeldet wird mit den Benutzern von Proxmox VE: dieselbe Maske aus Benutzer, Passwort und Realm-Auswahl, geprueft ueber POST /access/ticket auf der lokalen API - also derselbe Weg wie im Proxmox-Webinterface. Alle Realms funktionieren damit automatisch; Zwei-Faktor-Anmeldungen werden abgewiesen statt halb durchgewinkt. Ein gueltiges Passwort allein reicht nicht: zusaetzlich braucht der Benutzer auf dem Gast das Recht VM.Snapshot (geprueft auf /, /vms, /vms/<id> und dem Pool). Sonst koennte jeder Proxmox-Benutzer saemtliche Dateien aller Gaeste lesen. In der Gastliste erscheinen nur erlaubte Gaeste, root@pam sieht wie in Proxmox alles. Anpassbar ueber --require-privilege und --allow-user. Ausserdem: SIGTERM haengt einen offenen Snapshot wieder aus (ohne das bliebe er bei "systemctl stop" eingebunden), und beim Start werden Reste von Prozessen abgeraeumt, die es nicht mehr gibt - parallel laufende Sitzungen bleiben dabei unangetastet. Auf pvetest01 geprueft: Dienststart ueber systemd, Anmeldemaske mit den Realms des Hosts, Abweisung ohne und mit falschen Zugangsdaten (401, protokolliert mit Absender-IP), Zugriff ohne Recht (403 auf Snapshot- Liste und Oeffnen), vollstaendiger Ablauf als Berechtigter bis zum Datei-Download, Abmelden macht die Sitzung ungueltig, und SIGTERM hinterlaesst weder rbd-Maps noch Mountpunkte. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Opus 5
parent
91bfdea76c
commit
963463a1a1
@@ -25,9 +25,19 @@ Auf dem Proxmox-Host als root:
|
||||
|
||||
```bash
|
||||
git clone <dieses-repo> pvesnap && cd pvesnap
|
||||
./install.sh
|
||||
./install.sh # nur der Snapshot-Dienst
|
||||
./install.sh --with-webexplorer --port 8823 # zusätzlich die Web-Oberfläche
|
||||
./install.sh --help # alle Optionen
|
||||
```
|
||||
|
||||
| Option | |
|
||||
|---|---|
|
||||
| `--with-webexplorer` | Web-Oberfläche als Dienst einrichten (**erfordert `--port`**) |
|
||||
| `--port <nummer>` | Port der Web-Oberfläche |
|
||||
| `--bind <adresse>` | Adresse, auf der sie lauscht (Vorgabe `0.0.0.0`) |
|
||||
| `--no-start` | installieren, aber Dienste nicht starten |
|
||||
| `--force` | auch ohne erkanntes Proxmox VE installieren |
|
||||
|
||||
Das Skript legt an:
|
||||
|
||||
| Pfad | Inhalt |
|
||||
@@ -38,7 +48,9 @@ Das Skript legt an:
|
||||
| `/usr/local/bin/pvesnap-web` | Web-Oberfläche |
|
||||
| `/etc/pvesnap/pvesnap.conf` | Konfiguration (wird bei Updates **nicht** überschrieben) |
|
||||
| `/var/lib/pvesnap/state.json` | merkt sich die letzten Läufe |
|
||||
| `/etc/systemd/system/pvesnap.service` | systemd-Unit |
|
||||
| `/etc/systemd/system/pvesnap.service` | systemd-Unit des Snapshot-Dienstes |
|
||||
| `/etc/systemd/system/pvesnap-web.service` | Unit der Web-Oberfläche (nur mit `--with-webexplorer`) |
|
||||
| `/etc/pvesnap/web.conf` | Port und Anmeldeart der Web-Oberfläche |
|
||||
|
||||
In der mitgelieferten Beispielkonfiguration sind alle Gruppen auf `enabled = no`
|
||||
gesetzt — es passiert also erst etwas, wenn du eine Gruppe aktivierst.
|
||||
@@ -389,37 +401,71 @@ bleiben Verweise.
|
||||
|
||||
### `pvesnap-web` — im Browser herunterladen
|
||||
|
||||
Als Dienst (empfohlen, überlebt Neustarts):
|
||||
|
||||
```bash
|
||||
./install.sh --with-webexplorer --port 8823
|
||||
```
|
||||
|
||||
Danach läuft die Oberfläche dauerhaft auf `http://<host>:8823/`. Port, Adresse
|
||||
und Anmeldeart stehen in `/etc/pvesnap/web.conf`:
|
||||
|
||||
```
|
||||
PVESNAP_WEB_ARGS=--bind 0.0.0.0 --port 8823 --auth pve
|
||||
```
|
||||
|
||||
Nach Änderungen `systemctl restart pvesnap-web`. Oder von Hand für einen
|
||||
einzelnen Einsatz:
|
||||
|
||||
```bash
|
||||
pvesnap-web # Gast und Snapshot im Browser wählen
|
||||
pvesnap-web 802 <snapname> # diesen Snapshot gleich öffnen
|
||||
pvesnap-web --port 8080 --bind 10.0.0.5
|
||||
pvesnap-web --path /verzeichnis # beliebiges Verzeichnis (ohne Proxmox)
|
||||
```
|
||||
|
||||
Beim Start wird eine Adresse mit Zugangsschlüssel ausgegeben:
|
||||
**Anmeldung mit den Proxmox-Benutzern.** Die Oberfläche zeigt dieselbe
|
||||
Anmeldemaske wie Proxmox — Benutzername, Passwort, Realm-Auswahl. Geprüft wird
|
||||
über `POST /access/ticket` auf der lokalen Proxmox-API, also genau den Weg, den
|
||||
auch das Proxmox-Webinterface geht. Alle Realms (`pam`, `pve`, LDAP, AD …)
|
||||
funktionieren damit automatisch. Zwei-Faktor-Anmeldungen werden abgewiesen statt
|
||||
halb durchgewinkt.
|
||||
|
||||
**Wer darf was sehen?** Ein gültiges Passwort allein reicht nicht — sonst könnte
|
||||
jeder Proxmox-Benutzer sämtliche Dateien aller Gäste lesen. Zusätzlich muss der
|
||||
Benutzer auf dem jeweiligen Gast das Recht **`VM.Snapshot`** besitzen (geprüft
|
||||
auf `/`, `/vms`, `/vms/<id>` und dem Pool des Gastes). In der Gastliste tauchen
|
||||
nur Gäste auf, für die das zutrifft; `root@pam` sieht wie in Proxmox alles.
|
||||
Anpassen mit:
|
||||
|
||||
```
|
||||
http://192.168.1.50:8823/?token=zGo-1RW7eYyf_YCPvTIOLtOp
|
||||
--require-privilege VM.Backup # anderes Recht verlangen
|
||||
--allow-user backup@pve # einzelne Benutzer generell zulassen
|
||||
--auth token # stattdessen Schlüssel in der Adresse
|
||||
--auth none # ohne Anmeldung (nur im vertrauten Netz)
|
||||
```
|
||||
|
||||
Diese Adresse an einem anderen Rechner im Browser öffnen. Dort lässt sich der
|
||||
Snapshot durchklicken; **einzelne Dateien** werden direkt heruntergeladen,
|
||||
**Verzeichnisse und Mehrfachauswahl** als ZIP (im Strom erzeugt, es wird nichts
|
||||
zwischengespeichert).
|
||||
Ohne Proxmox (`--path`) gibt es keine Benutzer — dort wird automatisch ein
|
||||
Zugangsschlüssel erzeugt und beim Start als Adresse ausgegeben.
|
||||
|
||||
**Bedienung:** Snapshot anklicken, durchklicken; **einzelne Dateien** werden
|
||||
direkt heruntergeladen, **Verzeichnisse und Mehrfachauswahl** als ZIP (im Strom
|
||||
erzeugt, es wird nichts zwischengespeichert).
|
||||
|
||||
Zur Sicherheit:
|
||||
|
||||
* Ohne den Zugangsschlüssel gibt es nichts zu sehen (er wandert nach dem ersten
|
||||
Aufruf in ein Cookie). `--no-token` schaltet das ab — nur in einem Netz
|
||||
benutzen, dem du vertraust.
|
||||
* Es wird ausschließlich **gelesen**. Die Oberfläche kann nichts ändern oder
|
||||
löschen.
|
||||
* Pfade außerhalb des eingebundenen Snapshots werden abgewiesen — über die
|
||||
Adresszeile kommt man nicht an den Rest des Hosts.
|
||||
* Die Verbindung ist unverschlüsseltes HTTP. Über unsichere Netze besser einen
|
||||
SSH-Tunnel legen:
|
||||
`ssh -L 8823:localhost:8823 root@pve` und dann `pvesnap-web --bind 127.0.0.1`.
|
||||
* Fehlgeschlagene Anmeldungen landen mit Absender-IP im Journal
|
||||
(`journalctl -u pvesnap-web`).
|
||||
* Die Verbindung ist unverschlüsseltes HTTP — Passwörter gehen im Klartext über
|
||||
das Netz. Über unsichere Netze deshalb besser einen SSH-Tunnel legen:
|
||||
`ssh -L 8823:localhost:8823 root@pve`, dazu in `web.conf`
|
||||
`--bind 127.0.0.1` setzen.
|
||||
|
||||
Beendet wird mit `Strg-C`; der Snapshot wird dabei wieder ausgehängt.
|
||||
Beim Beenden (`Strg-C` oder `systemctl stop pvesnap-web`) wird ein offener
|
||||
Snapshot wieder ausgehängt.
|
||||
|
||||
---
|
||||
|
||||
|
||||
Reference in New Issue
Block a user