Handbuch auf MkDocs-Basis, mit Bildschirmfotos aus dem Programm
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>
This commit is contained in:
co-authored by
Claude Opus 5
parent
c484596702
commit
59e7224297
@@ -0,0 +1,223 @@
|
||||
# Die Web-Oberfläche
|
||||
|
||||
`pvesnap-web` zeigt Snapshots im Browser. Gedacht für die Fälle, in denen der
|
||||
[Explorer](explorer.md) 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
|
||||
|
||||
```bash
|
||||
./install.sh --with-webexplorer --port 8823
|
||||
```
|
||||
|
||||
Danach läuft die Oberfläche dauerhaft auf `http://<host>:8823/` und startet mit
|
||||
dem System.
|
||||
|
||||
```bash
|
||||
./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:
|
||||
|
||||
```bash
|
||||
nano /etc/pvesnap/web.conf
|
||||
systemctl restart pvesnap-web
|
||||
```
|
||||
|
||||
### Dienst verwalten
|
||||
|
||||
```bash
|
||||
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:
|
||||
|
||||
```bash
|
||||
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:
|
||||
|
||||
```bash
|
||||
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
|
||||
```
|
||||
Reference in New Issue
Block a user