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:
duffyduck
2026-08-09 12:39:30 +02:00
co-authored by Claude Opus 5
parent c484596702
commit 59e7224297
72 changed files with 7355 additions and 2 deletions
+156
View File
@@ -0,0 +1,156 @@
# Installation
## Der übliche Weg
Auf dem Proxmox-Host als `root`:
```bash
git clone <dieses-repo> pvesnap && cd pvesnap
./install.sh # nur der Snapshot-Dienst
./install.sh --with-webexplorer --port 8823 # zusätzlich die Web-Oberfläche
./install.sh --help # alle Optionen
```
Das Skript prüft zuerst, ob es wirklich auf einem Proxmox-VE-Host läuft, und
bricht sonst ab. Wer es trotzdem will — etwa zum Ausprobieren in einer VM —
nimmt `--force`.
### 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 |
| `--no-install-deps` | fehlende Werkzeuge (`parted`, `exfatprogs`) nicht nachinstallieren |
| `--force` | auch ohne erkanntes Proxmox VE installieren |
`--port` hat bewusst **keine Vorgabe**. Es gibt keine Portnummer, die auf jedem
Host frei ist, und ein stillschweigend gewählter Port wäre genau die Art
Überraschung, die man auf einem Hypervisor nicht braucht.
---
## Was installiert wird
| Pfad | Inhalt |
|---|---|
| `/usr/lib/pvesnap/` | Programmcode |
| `/usr/local/bin/pvesnap` | Dienst und Konfiguration |
| `/usr/local/bin/pvesnap-explorer` | Zwei-Fenster-Explorer |
| `/usr/local/bin/pvesnap-web` | Web-Oberfläche |
| `/usr/local/bin/pvesnap-recovery` | Snapshot als Maschine starten |
| `/etc/pvesnap/pvesnap.conf` | Konfiguration — bei Updates **nicht** überschrieben |
| `/etc/pvesnap/web.conf` | Port und Anmeldeart der Web-Oberfläche |
| `/var/lib/pvesnap/state.json` | merkt sich die letzten Läufe |
| `/var/lib/pvesnap/transfer/` | [Austauschlaufwerke](wiederherstellen/transfer.md) |
| `/etc/systemd/system/pvesnap.service` | Unit des Snapshot-Dienstes |
| `/etc/systemd/system/pvesnap-web.service` | Unit der Web-Oberfläche |
### Zusätzliche Pakete
Zwei Werkzeuge werden bei Bedarf nachinstalliert:
| Paket | wofür |
|---|---|
| `parted` | Partitionstabelle der Austauschlaufwerke |
| `exfatprogs` | deren Dateisystem (exFAT) |
Ohne sie funktioniert alles außer den Austauschlaufwerken. Mit
`--no-install-deps` bleibt das System unangetastet; die Laufwerksverwaltung
sagt dann beim Öffnen, was fehlt.
!!! info "Warum kein `ntfs-3g`?"
exFAT reicht: Windows und Linux lesen und schreiben es von Haus aus, es
kennt keine 4-GB-Grenze pro Datei und speichert keine Besitzrechte — was
beim Austausch zwischen Systemen ein Vorteil ist, kein Mangel. Mehr dazu
unter [Austauschlaufwerke](wiederherstellen/transfer.md#warum-exfat).
---
## Aktualisieren
```bash
cd pvesnap
git pull
./install.sh --with-webexplorer --port 8823
```
Dieselben Parameter wie beim ersten Mal — sonst wird die Web-Oberfläche nicht
wieder mit eingerichtet.
**Die Konfiguration bleibt.** `/etc/pvesnap/pvesnap.conf` wird nie
überschrieben.
**Eine laufende Web-Oberfläche wird sauber angehalten**, bevor der Code
ausgetauscht wird, und danach wieder gestartet. Das ist wichtig, weil sie
möglicherweise noch einen Snapshot eingebunden hat — den Prozess einfach unter
den Füßen wegzuziehen würde eine Einbindung zurücklassen.
Sitzt ein **fremder** Prozess auf dem Port, gibt es eine Warnung samt PID, aber
kein automatisches Beenden. Es könnte schließlich etwas ganz anderes sein.
---
## Deinstallation
```bash
./uninstall.sh # Programm und Dienst entfernen, Konfiguration bleibt
./uninstall.sh --purge # zusätzlich /etc/pvesnap und /var/lib/pvesnap löschen
```
!!! danger "Was `--purge` mitnimmt"
Auch die **Austauschlaufwerke** unter `/var/lib/pvesnap/transfer/`. Was
dort an Werkzeugen und Dumps liegt, ist danach weg. Ohne `--purge` bleibt
alles liegen.
**Bereits angelegte Snapshots werden nie angerührt** — weder beim Entfernen
noch beim Aktualisieren. Sie gehören Proxmox, nicht pvesnap.
Laufen noch [Wiederherstellungen](wiederherstellen/index.md), warnt
`uninstall.sh` davor. Die sollten vorher mit `pvesnap-recovery destroy`
verworfen werden, sonst bleiben Klone und geschützte Snapshots liegen.
---
## Die systemd-Unit
Ein Punkt, der später viel Zeit sparen kann: Die mitgelieferte Unit enthält
**bewusst keine Sandbox-Optionen**.
```ini
# NICHT in die Unit aufnehmen:
ProtectSystem=strict
ProtectHome=yes
PrivateTmp=yes
```
Der Grund ist unangenehm indirekt. `pvesh` führt die Proxmox-API im eigenen
Prozess aus — der Snapshot-Task ist also ein *Kindprozess von pvesnap* und erbt
dessen Einschränkungen. `ProtectSystem=` hängt `/etc` schreibgeschützt ein, und
pmxcfs legt seine Sperren als Verzeichnisse unter `/etc/pve/priv/lock/` an. Das
`mkdir` scheitert, Proxmox versucht es erfolglos weiter — und meldet am Ende
keinen Rechtefehler, sondern:
```
TASK ERROR: cfs-lock 'storage-data' error: got lock request timeout
```
Man sucht dann tagelang am Storage. `pvesnap check` weist von sich aus darauf
hin; mehr dazu unter [Fehlersuche](nachschlagen/fehlersuche.md#storage-lock).
---
## Nach der Installation
```bash
systemctl status pvesnap # läuft der Dienst?
pvesnap check # ist die Konfiguration stimmig?
journalctl -u pvesnap -f # was tut er gerade?
```
Weiter geht es beim [Schnellstart](schnellstart.md#2-gaste-markieren) oder
direkt im Kapitel [Sichern](sichern/index.md).