Files
duffyduckandClaude Opus 5 59e7224297 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>
2026-08-09 12:39:30 +02:00

5.3 KiB

Installation

Der übliche Weg

Auf dem Proxmox-Host als root:

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
/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

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

./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, 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.

# 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.


Nach der Installation

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 oder direkt im Kapitel Sichern.