Zum Inhalt springen

Einen Proxmox-VE-Knoten verbinden

Jeder Proxmox-VE-Knoten, der gesichert werden soll, braucht einen eigenen Befehl, den Sie in Restow erstellen und als root auf dem Knoten ausführen. Der Befehl trägt ein einmaliges Enrollment-Token. Sonst ist nichts einzutippen: Das Installationsskript richtet die Proxmox-VE-Seite selbst ein, prüft, was es eingerichtet hat, installiert den Helfer und das Storage-Plugin und verbindet den Knoten.

  • Der Knoten läuft mit Proxmox VE ab 8.4 auf x86_64 und hat einen aktiven Thin-Speicher für Fleecing-Abbilder (zum Beispiel local-lvm oder local-zfs). Siehe Voraussetzungen.
  • Der Knoten erreicht Ihre Instanz über HTTPS auf Port 443. Zum Knoten muss nichts durchkommen.
  • Die öffentliche URL Ihrer Installation ist auf eine https://-Adresse gesetzt, die der Knoten erreicht. Die Adresse im Befehl stammt daraus. Ohne sie kann Restow den Befehl nicht erstellen und antwortet, dass die öffentliche Adresse dieser Installation nicht eingerichtet ist.
  • Sie sind Administrator des Mandanten (Provider-Administrator oder Mandanten-Administrator).
  1. Öffnen Sie Server & Clients → VMs & Container und wählen Sie Proxmox VE verbinden. (Die Schaltfläche Proxmox VE unter Server & Clients → Inventar öffnet dieselbe Seite.)
  2. Wählen Sie Befehl erstellen.
  3. Der Dialog zeigt Knoten 1 mit dem Befehl und der Zeile „Als root auf dem Knoten ausführen. Gilt für einen Knoten bis …“. Wählen Sie Befehl kopieren. Seit 0.4.2 nennt der Dialog außerdem das Repository, in dem die Sicherungen dieses Mandanten landen. Ist das ein Verzeichnis auf der Platte des Restow-Servers selbst, warnt er „Sicherungen landen auf der eigenen Platte des Servers“ und verlinkt auf Anderes Repository wählen: Fällt der Server oder seine Platte aus, sind diese Sicherungen mit ihm verloren. Siehe Wo Sicherungen landen.
  4. Führen Sie ihn als root auf dem Knoten aus:
Terminal-Fenster
curl -fsSL 'https://<Ihre Instanz>/install/pve.sh' | RESTOW_ENROLL_TOKEN='rset_…' sh

Das Enrollment-Token gilt 24 Stunden und funktioniert einmal, für einen Knoten. Es geht über die Umgebung an das Installationsskript, nicht über dessen Argumente. Es kann trotzdem in der Shell-History von root landen, ist aber nutzlos, sobald der Knoten angemeldet ist. Führen Sie den Befehl in einem Terminal auf dem Knoten aus, zum Beispiel über SSH.

Führen Sie denselben Befehl auf einem Knoten, der schon angemeldet ist, noch einmal aus, wird er an Ort und Stelle aktualisiert oder repariert, und die Anmeldung bleibt erhalten. Dafür brauchen Sie kein Token: curl -fsSL 'https://<Ihre Instanz>/install/pve.sh' | sh.

Bevor es etwas herunterlädt, prüft das Skript das Enrollment-Token bei Restow und hält sofort an, wenn es benutzt, widerrufen oder abgelaufen ist. Dann:

  1. Richtet es die Proxmox-VE-Seite ein, für den ganzen Cluster und ohne Fehler bei einem zweiten Lauf: den Benutzer restow@pve, den Pool restow-restore und zwei Rollen mit ihren Berechtigungen. Vorhandene Rollen bekommen genau diese Rechte erneut.
  2. Erzeugt es den eigenen API-Token des Knotens restow@pve!<Knotenname> mit ausgeschalteter Rechtetrennung (Privilege Separation). Ein Token dieses Namens aus einer früheren Installation wird entfernt und neu angelegt, weil Proxmox VE ein Secret nur einmal zeigt. Das Secret bleibt auf dem Knoten.
  3. Prüft es die Rechte des Tokens und hält mit der Token-ID und den fehlenden Rechten an, wenn eines fehlt, bevor es etwas installiert.
  4. Wählt es den Fleecing-Speicher und sagt, welchen: den einzigen aktiven Thin-Speicher des Knotens mit dem Inhaltstyp images (lvmthin, zfspool, rbd oder btrfs), sonst local-lvm, sonst local-zfs, sonst den ersten Thin-Speicher. --fleecing-storage=<Speicher> hinter sh -s -- überschreibt das. Ohne Thin-Speicher hält es an.
  5. Lädt es herunter und prüft: Es prüft die Release-Signatur über SHA256SUMS und die SHA-256 jeder Datei, bevor etwas ausgeführt wird. Scheitert eine Prüfung, wird nichts installiert.
  6. Installiert es den Helfer, restic und das Storage-Plugin (unten), meldet den Knoten an, fügt den Speicher restow zum Cluster hinzu (einmal, mit dem Inhaltstyp backup, beschränkt auf die Knoten mit dem Plugin), startet restow-pve.service und startet pvedaemon, pveproxy, pvestatd und pvescheduler neu, damit sie das Plugin laden.
  7. Führt es restow-pve diagnose aus und gibt das Ergebnis aus.
Was Einzelheiten
Benutzer restow@pve
Pool restow-restore: Hier wird jeder wiederhergestellte Gast angelegt.
Rolle RestowBackup VM.Audit, VM.Backup, Datastore.Audit, Datastore.AllocateSpace, Sys.Audit, gewährt auf /.
Rolle RestowRestore VM.Allocate und die VM.Config.*-Rechte, die eine Wiederherstellung braucht (Disk, CDROM, CPU, Memory, Network, HWType, Options, Cloudinit), Datastore.AllocateSpace und SDN.Use. Gewährt auf /pool/restow-restore, auf /storage (um Platz auf Zielspeichern zu belegen) und auf /sdn (um Bridges und virtuelle Netze zu nutzen).

Weil VM.Allocate nur auf dem Pool gewährt wird, kann der Token Gäste nur in restow-restore anlegen und löschen. Er kann keinen anderen Gast löschen oder ersetzen, und Restow stellt nie über einen vorhandenen Gast wieder her.

Pfad Was
/opt/restow-pve/bin/restow-pve, /opt/restow-pve/bin/restic Der Helfer (Apache-2.0) und restic.
/usr/share/perl5/PVE/Storage/Custom/RestowPlugin.pm, /usr/share/perl5/PVE/BackupProvider/Plugin/Restow.pm Der Storage-Plugin-Shim (AGPL-3.0-or-later, ein eigenes Werk). Sein Lizenztext liegt in /opt/restow-pve/RestowPlugin.LICENSE.txt.
restow-pve.service Die systemd-Unit des Helfers.
/etc/restow-pve/state.json Das Secret des Knotens und der Proxmox-VE-API-Token. Nur root (Modus 0600), auf der lokalen Platte.
/var/lib/restow-pve Block-Hash-Caches, das Journal und die Caches, die das Plugin liest.
/run/restow-pve Zustand laufender Sicherungen.

Die Gäste des Knotens erscheinen innerhalb einer Minute in Restow. Vor der Aufnahme in einen Backup-Job wird nichts gesichert. Siehe Backup-Jobs und Schutz, wo Empfohlenen Job anlegen mit einem Klick schützt, was keinen Job hat, und wo Sie Gäste ausschließen können, die nicht zum Sichern gedacht sind (seit 0.4.7).

Der Helfer sichert die Gäste des Knotens, nicht den Knoten. VMs & Container sagt das in einer Zeile im Reiter Knoten, mit Host als Server hinzufügen (seit 0.4.3 lässt sich der Hinweis mit Hinweis ausblenden in Ihrem Browser ausblenden): Für die Dateien des Hosts selbst, etwa /etc/pve und die Netzwerk- und Speicherkonfiguration, installieren Sie den Restow-Agent auf dem Host und nehmen ihn in einen Job für Server auf.

Standardmäßig erzeugt das Installationsskript den Token des Knotens selbst, und Restow sieht ihn nie. Verlangen Ihre Richtlinien einen Token, den Sie selbst erstellt haben, öffnen Sie im Dialog Stattdessen einen vorhandenen PVE-API-Token verwenden, bevor Sie Befehl erstellen wählen:

  1. Tragen Sie die API-Token-ID in der Form benutzer@realm!name ein, zum Beispiel restow@pve!restow. Restow erwartet den Benutzer restow@pve. Ein anderer Benutzer funktioniert, wenn er dieselben Rollen hat, und der Dialog sagt das, wenn Sie einen verwenden.
  2. Tragen Sie das Secret ein, das Proxmox VE beim Erstellen des Tokens einmal angezeigt hat (eine UUID).
  3. Wählen Sie Befehl erstellen.

Der Token braucht ausgeschaltete Rechtetrennung (Privilege Separation) und die obigen Rollen. Das Installationsskript überspringt dann die Schritte 1 und 2, prüft die Rechte trotzdem, bevor es etwas ändert, und prüft das Secret gegen die lokale Proxmox-VE-API. Hat der Token die Rechtetrennung eingeschaltet (der Standard, wenn ein Token in der Proxmox-VE-Weboberfläche erstellt wird), sagt das Skript das und zeigt den pveum-Befehl, der sie ausschaltet, oder Sie erstellen einen Befehl ohne den Token.

So geht Restow mit dem Secret um: Es speichert den Token verschlüsselt mit dem Mandantenschlüssel (AES-256-GCM, wie Speicher-Zugangsdaten), gebunden an dieses eine Enrollment-Token, übergibt ihn dem Knoten einmal beim Verbinden und löscht ihn danach. Spätestens löscht es ihn, wenn das Enrollment-Token abläuft oder widerrufen wird. Das Audit-Log hält die Token-ID fest, nie das Secret. Solange der Token gespeichert ist, könnte, wer den Restow-Server und seinen Master-Key kontrolliert, ihn lesen.

Ein Befehl mit einem vorhandenen Token sagt das: „Dieser Befehl verwendet den hier eingetragenen API-Token … Gibt es diesen Token nicht mehr oder fehlen ihm Rechte, erzeugen Sie einen neuen Befehl ohne ihn.“ Neuer Befehl ohne diesen Token erzeugt einen, bei dem das Installationsskript den eigenen Token anlegt. Befehl für einen weiteren Knoten verwendet den Token weiter, den Sie eingetragen haben.

Erstellen Sie den Token von Hand, sind das die Befehle, die das Installationsskript ausführen würde, als root auf einem beliebigen Knoten (<Knoten> ist der Knotenname):

Terminal-Fenster
pveum user add restow@pve --comment "Restow backup"
pveum pool add restow-restore --comment "Guests restored by Restow"
pveum role add RestowBackup --privs "VM.Audit,VM.Backup,Datastore.Audit,Datastore.AllocateSpace,Sys.Audit"
pveum role add RestowRestore --privs "VM.Allocate,VM.Config.Disk,VM.Config.CDROM,VM.Config.CPU,VM.Config.Memory,VM.Config.Network,VM.Config.HWType,VM.Config.Options,VM.Config.Cloudinit,Datastore.AllocateSpace,SDN.Use"
pveum acl modify / --users restow@pve --roles RestowBackup
pveum acl modify /pool/restow-restore --users restow@pve --roles RestowRestore
pveum acl modify /storage --users restow@pve --roles RestowRestore
pveum acl modify /sdn --users restow@pve --roles RestowRestore
pveum user token add restow@pve <Knoten> --privsep 0

Jeder Knoten braucht einen eigenen Befehl, weil das Enrollment-Token nur einmal funktioniert. Wählen Sie im Dialog Befehl für einen weiteren Knoten: Er fügt Knoten 2, Knoten 3 und so weiter hinzu, jeweils mit eigenem Befehl. Verbinden Sie die Knoten nacheinander. Der erste fügt den Speicher restow zum Cluster hinzu, und jeder spätere Knoten wird in die Knotenliste des Speichers aufgenommen.

Ein Proxmox-VE-Cluster wird am Fingerabdruck seiner Zertifizierungsstelle erkannt und gehört zu einem Mandanten. Ist ein Cluster schon mit einem anderen Mandanten verbunden, lehnt das Installationsskript mit „This Proxmox VE cluster is already connected to another tenant. A cluster serves one tenant in this release.“ ab (englischer Text). Melden Sie einen Knoten erneut an, zum Beispiel nach einer Neuinstallation, ersetzt das seine frühere Anmeldung.

Schließen Sie den Dialog, verschwinden die Befehle vom Bildschirm. Die Enrollment-Tokens darin bleiben gültig, bis sie ablaufen, lassen sich aber nicht noch einmal anzeigen. Erstellen Sie also einen neuen Befehl, wenn Sie einen brauchen.

Für Skripte und Konfigurationsverwaltung liest das Installationsskript diese Angaben aus der Umgebung:

Variable oder Option Was sie bewirkt
RESTOW_ENROLL_TOKEN oder RESTOW_TOKEN_FILE Das Enrollment-Token, direkt oder aus einer Datei (halten Sie die Datei auf Modus 0600 und löschen Sie sie nach der Nutzung). Ohne Token fragt das Skript im Terminal mit verdeckter Eingabe danach.
RESTOW_PVE_TOKEN_ID mit RESTOW_PVE_TOKEN_SECRET_FILE Ein vorhandener API-Token, den Sie auf dem Knoten selbst setzen, statt eines in Restow eingetragenen.
--fleecing-storage=<Speicher> (hinter sh -s --) Der Thin-Speicher dieses Knotens für Fleecing-Abbilder.
--uninstall (hinter sh -s --) Entfernt den Helfer und das Plugin, siehe Knoten aktualisieren und entfernen.

In Restow listet der Reiter Knoten unter VMs & Container jeden Knoten mit seinem Cluster, seinem Status (Verbunden, solange er sich in den letzten drei Minuten gemeldet hat, sonst Getrennt, mit dem Zeitpunkt der letzten Meldung), der Version von restow-pve (mit Auf X.Y.Z aktualisieren, wenn der Server ein neueres Release anbietet) und von Proxmox VE, der Zahl der Gäste, der Warteschlange und den Problemen. Vor 0.4.3 hatte die Seite außerdem eine Spalte für den Fleecing-Speicher; ein Knoten ohne ihn nennt jetzt das Problem Kein Fleecing-Speicher. Die Version von restow-pve zählt für einige Funktionen: Ab 0.4.0 zeigt der Knoten den Fortschritt laufender Sicherungen und führt Startprüfungen aus, siehe Knoten aktualisieren und entfernen. Ein Problem wie Speicher-Plugin nicht installiert oder Dem API-Token fehlen Berechtigungen wird unter Fehlerbehebung erklärt.

Auf dem Knoten:

Terminal-Fenster
restow-pve status # lokaler Zustand und die letzte Meldung an Restow
restow-pve diagnose # jede Prüfung, die eine Sicherung braucht, mit den Befunden
journalctl -u restow-pve

diagnose prüft die Plugin-Dateien, restic, die Speicherkonfiguration, die Anmeldung, die Proxmox-VE-API und ihre Version, die Rechte des Tokens, den Wiederherstellungs-Pool, den Fleecing-Speicher und die Verbindung zu Restow. In der Proxmox-VE-Weboberfläche erscheint der Speicher restow für den Knoten, und sein Reiter Backups listet die Sicherungsstände.