# Installation ## Der übliche Weg Auf dem Proxmox-Host als `root`: ```bash git clone 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 ` | Port der Web-Oberfläche | | `--bind ` | 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).