26 Kapitel in vier Teilen, in der Reihenfolge, in der man sie braucht: erst sichern, dann Dateien holen, dann ganze Maschinen wiederherstellen, dahinter der Nachschlagteil. Gebaut wird mit MkDocs + Material. Bewusst ohne Netzabhaengigkeiten: keine Schriften vom CDN (font: false), Volltextsuche mit deutschem Stemming liegt neben den Seiten. Im Notfall steht vielleicht das halbe Netz - dann nuetzt eine Doku im Internet nichts. handbuch/bauen.sh baut handbuch/site/ handbuch/bauen.sh ansehen Vorschau auf 127.0.0.1:8000 install.sh nimmt das gebaute Handbuch mit nach /usr/share/doc/pvesnap/handbuch/ - falls es vorliegt. Auf dem Host selbst wird nichts gebaut, mkdocs gehoert nicht auf einen Hypervisor. Die 28 Bildschirmfotos sind nicht abfotografiert, sondern erzeugt: Der echte Programmcode laeuft in einem Pseudo-Terminal gegen einen erfundenen Proxmox-Host (Attrappen fuer pvesh, perl und rbd), pyte baut den Bildschirm nach, heraus faellt ein SVG. Damit stimmen sie garantiert mit dem Programm ueberein, sind reproduzierbar und enthalten keine echten Daten. Die Werkstatt dafuer liegt unter handbuch/werkstatt/ samt LIESMICH.md. Nebenbei: die Schlussmeldung von install.sh warb noch mit --exchange, das mit dem eingebauten Austauschlaufwerk weggefallen ist. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
6.5 KiB
Die Web-Oberfläche
pvesnap-web zeigt Snapshots im Browser. Gedacht für die Fälle, in denen der
Explorer nicht passt: Jemand ohne SSH-Zugang soll etwas
herausbekommen, oder die Dateien sollen direkt auf dem Arbeitsplatzrechner
landen statt auf dem Hypervisor.
Sie liest ausschließlich. Ändern oder löschen kann sie nichts.
Als Dienst einrichten
./install.sh --with-webexplorer --port 8823
Danach läuft die Oberfläche dauerhaft auf http://<host>:8823/ und startet mit
dem System.
./install.sh --with-webexplorer --port 8443 --bind 10.0.0.5 # nur auf einer IP
./install.sh --with-webexplorer --port 8823 --no-start # erst später starten
Alle Aufrufparameter des Dienstes stehen in /etc/pvesnap/web.conf:
PVESNAP_WEB_ARGS=--bind 0.0.0.0 --port 8823 --auth pve
Dort lässt sich nachträglich alles ändern — Port, Adresse, Anmeldeart, Rechte:
nano /etc/pvesnap/web.conf
systemctl restart pvesnap-web
Dienst verwalten
systemctl status pvesnap-web # läuft er?
systemctl restart pvesnap-web # nach Änderungen in web.conf
systemctl stop pvesnap-web # anhalten (hängt offene Snapshots aus)
systemctl disable pvesnap-web # nicht mehr automatisch starten
journalctl -u pvesnap-web -f # Protokoll, auch fehlgeschlagene Anmeldungen
Von Hand starten
Für einen einmaligen Einsatz, ohne etwas zu installieren:
pvesnap-web # Gast und Snapshot im Browser wählen
pvesnap-web 101 # nur diesen Gast anbieten
pvesnap-web 101 auto-taeglich-20260809-023000 # Snapshot gleich öffnen
++ctrl+c++ beendet und hängt den Snapshot wieder aus.
Wer darf was sehen?
Das ist der Punkt, an dem sich diese Oberfläche von einem schnell hingeworfenen Dateiserver unterscheidet.
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.
Ein 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:
--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)
Ohne Proxmox (--path) gibt es keine Benutzer — dort wird automatisch ein
Zugangsschlüssel erzeugt und beim Start als vollständige Adresse ausgegeben.
Bedienung
Snapshot anklicken, durchklicken.
| Einzelne Datei | wird direkt heruntergeladen |
| Verzeichnis | kommt als ZIP |
| Mehrfachauswahl | ebenfalls als ZIP |
Die ZIP-Dateien werden im Strom erzeugt — es wird nichts auf dem Host zwischengespeichert. Ein 200-GB-Verzeichnis braucht also keinen freien Platz, nur Geduld.
Parameter
| Parameter | Vorgabe | Bedeutung |
|---|---|---|
-P, --port <nummer> |
8823 |
Port, auf dem gelauscht wird |
-b, --bind <adresse> |
0.0.0.0 |
Netzwerkadresse; 127.0.0.1 = nur lokal |
-a, --auth pve|token|none |
pve |
Anmeldeart |
--require-privilege <recht> |
VM.Snapshot |
nötiges Recht auf dem Gast |
--allow-user <user@realm> |
— | dieser Benutzer darf alles (mehrfach möglich) |
-t, --token <schlüssel> |
zufällig | Zugangsschlüssel selbst vorgeben |
--no-token |
— | Kurzform für --auth none |
-p, --path <verzeichnis> |
— | beliebiges Verzeichnis statt eines Snapshots |
--cleanup |
— | hängengebliebene Einbindungen lösen und beenden |
-v, --verbose |
— | ausführliches Protokoll |
-V, --version |
— | Version anzeigen |
Beispiele
=== "Über einen SSH-Tunnel"
Der sicherste Weg — nichts liegt im Netz offen:
```bash
# auf dem Host
pvesnap-web --bind 127.0.0.1 --port 8823
# am eigenen Rechner
ssh -L 8823:localhost:8823 root@pve
# dann im Browser: http://localhost:8823/
```
Als Dienst: in `web.conf` `--bind 127.0.0.1` setzen.
=== "Ein Team ohne Snapshot-Rechte"
```bash
pvesnap-web --port 8823 --require-privilege VM.Backup
```
Wer sichern darf, darf auch aus einer Sicherung lesen — das ist meist die
passendere Grenze.
=== "Ein einzelner Dienstleister"
```bash
pvesnap-web --port 8823 --allow-user dienstleister@pve
```
Unabhängig von den Proxmox-Rechten. Danach wieder entfernen.
=== "Schnell etwas herausgeben"
```bash
pvesnap-web --port 8823 --auth token
```
Der Zugangsschlüssel steht in der Adresse, die beim Start ausgegeben wird.
Kein Proxmox-Benutzer nötig.
=== "Ein beliebiges Verzeichnis"
```bash
pvesnap-web --path /mnt/restore --port 8823
```
Etwa ein bereits gemountetes Backup. Braucht kein Proxmox.
Sicherheit
!!! danger "HTTP, nicht HTTPS"
Die Verbindung ist **unverschlüsselt**. Passwörter gehen im Klartext über
das Netz.
Über unsichere Netze deshalb immer einen SSH-Tunnel legen — siehe oben.
Innerhalb eines vertrauenswürdigen Verwaltungsnetzes ist es vertretbar, an
einer offenen Firewall-Regel nach draußen nicht.
Was sonst gilt:
-
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.
-
Fehlgeschlagene Anmeldungen landen mit Absender-IP im Journal:
journalctl -u pvesnap-web | grep -i "anmeldung\|failed" -
Beim Beenden (++ctrl+c++ oder
systemctl stop pvesnap-web) wird ein offener Snapshot wieder ausgehängt.
!!! tip "Nicht dauerhaft laufen lassen, wenn nicht nötig"
Wer die Oberfläche nur gelegentlich braucht, installiert sie ohne
Autostart:
```bash
systemctl disable pvesnap-web
systemctl start pvesnap-web # bei Bedarf
```