Das Backup für dein Homelab | Proxmox Backup Server

Übersicht
In diesem Beitrag kümmern wir uns um eine der wichtigsten Sachen für unser Homelab. Ein vollumfängliches Backup aller unserer VM´s, Container etc. Dabei haben wir am ende die Möglichkeit rückwirkend ganze Maschinen bis hin zu einzelnen Dateien aus den Maschinen zu restoren.
Dies gibt uns einen enormen Sicherheitszuwachs vor möglichen Ausfällen oder Datenverlust.
Je nach Konfiguration können wir weit in die Vergangenheit reisen um Dateien und Maschinen aus unserem Backup wiederherzustellen.
Da die meisten in ihrem Homelab vermutlich Proxmox nutzen, realisieren wir unsere Backupslösung mit der Proxmox eigenen Lösung, dem Proxmox Backup Server (PBS). Das Installieren, Konfigurieren und die Inbetriebnahme ist kinderleicht und dauert nicht lang, gibt uns aber ein gutes Gefühl und Sicherheit für unsere Daten!
Hier findet ihr noch das Video zum Beitrag: https://youtu.be/DkB4UVnzpkk
Der richtige Server & Ort
Natürlich können wir den Proxmox Backup Server einfach mit in unser Homelab direkt Zuhause vor Ort implementieren. Allerdings fehlen uns hier einige Absicherungen, da das Backup am selben Physischen Ort ist wie unsere eigentliche Umgebung. Um auch diesen Punkt zu beachten, können wir auf günstige Storage VM´s von verschiedenen Anbietern zurückgreifen. Solch eine VM sorgt dafür, dass wir unser Backup sicher an einem physisch komplett anderen Ort ablegen können. Durch die Proxmox Backup Server eigene Verschlüsselung brauchen wir uns auch keine Gedanken über die Daten machen.
Zusätzlich haben wir in einem vorherigen Beitrag bereits ein Netbird Netzwerk aufgebaut, worin wir den Backupserver super integrieren können und so komplett von der Außenwelt fernhalten können.
Empfehlung
Ich bin ständig auf der suche, nach den günstigsten VPS Angeboten um mein Homelab möglichst kostengünstig zu betreiben. In der Vergangenheit habe ich euch bereits den Provider Netcup empfohlen, welcher die mir bisher bekanntesten günstigsten VPS Anbietet. Allerdings hat Netcup keine wirklich günstigen Server mit viel Storage im Angebot. Daher habe ich mich erneut auf die Suche begeben und einen kleinen Hoster gefunden, welcher immer wieder gute Angebote für Storage-Server hat.
Aktuell läuft dort noch der Christmas Deal und wir erhalten dort entweder 1TB Storage für 3€ im Monat oder ganze 2TBfür 5€ im Monat. Ich selber habe den 2TB Server seit einem guten Jahr Produktiv als Backupserver im Einsatz und bin super zufrieden.

Auch wenn kein Angebot verfügbar ist, sind die Angebotenen Storage VPS das günstigste was ich bisher gefunden hab mit so viel Speicher. (Die Angebote sieht man erst nach Registration im Shop)
Bei dem Hoster handelt es sich um Realtox Media. Wenn ihr euch solch einen Server bestellt und mich ein wenig unterstützen wollt, damit ich mehr solcher Beiträge produzieren kann, würde ich mich freuen, wenn ihr den Server über meinen Affiliate Link bestellt.
Dafür müsst ihr euch über den Link einen Account erstellen und könnt dann dort die entsprechenden Server buchen (Aktuell gibt es das Partnerprogramm dort nicht her direkt auf die Angebote zu verlinken, daher ist eine vorherige Account Registrierung nötig).
Im Dashboard findet ihr dann oben Rechts den Shop worüber ihr zu den Angeboten kommt und den Storage VPS Buchen könnt.
Einrichtung
Egal ob ihr nun einen VPS bei Realtox oder einen anderen Anbieter genommen habt oder den Backupserver Zuhause installieren wollt, hier kommen nun die Schritte für die Einrichtung.
Installation
Als erstes müsst ihr den Server mit der ISO versorgen und PBS mit dem GUI-Installer installieren. Die GUI ist sehr intuitiv und es müssen nur wenige Schritte für die Installation getan werden.

Nachdem ihr alles Konfiguriert habt, könnt ihr auch schon über die Weboberfläche auf den PBS zugreifen und euch mit eurem vergebenen Passwort anmelden. Erreichen tut ihr die Weboberfläche über https://<ip>:8007

Update
Damit unser Proxmox Backupserver nun die Möglichkeit hat nach Updates zu suchen, müssen wir in der Webgui noch 2 Änderungen an den Repositories vornehmen.
Dafür Navigieren wir in den Reiter Administration und dort zu Repositories.

Hier deaktivieren wir jetzt die Enterprise Repo und fügen die no-subscription Repo hinzu.

Nun können wir einmal zum reiter Updates Navigieren und uns die neusten Updates installieren. Dafür klicken wir in dem Reiter erst auf Refresh und anschließend auf Upgrade.

Sobald das Upgrade durch ist, können wir noch einmal einen Reboot vornehmen um dann mit der weiteren Konfiguration weiter zu machen.
User
Wir benötigen nun einen User für unseren Proxmox Server. Dem User geben wir dann die enstprechenden Berechtigungen, um die Backups auf den PBS Schreiben zu dürfen.
Um den User zu erstellen, navigieren wir zu dem Reiter Configuration → Access Control

Datastore
Als nächstes benötigen wir natürlich den Ort, an dem unsere Backups abgelegt werden. Hierfür erstellen wir eine neuen Datastore mit der Festplatte die aktuell noch übrig ist, in meinem Fall eine 1TB HDD von dem VPS Server.
Unter Storage / Disks → Directory können wir ein neues Directory mit der Platte anlegen. Alternativ könn ihr auch ein ZFS Storage erstellen.

Anschließend haben wir unter Datastore nun ein neuen Datastore namens Backup

In diesem Datastore können wir für jeden Proxmox Server einen eigenen Namespace anlegen und entsprechende Berechtigungen darauf vergeben.

Datastore Permissions
Nun geben wir dem User die entsprechenden Berechtigungen für den Namespace dem wir ihn zuteilen wollen. Hier müssen wir überlegen, wie sicher wir es haben möchten. Es besteht die Wahl, dem PVE Server den DatastoreAdmin
zu geben was bedeutet, dass die Backups auch von dem PVE Server aus gelöscht werden können. Alternativ können wir die Berechtigungen so vergeben, dass der PVE Server nur Backups schreiben darf aber nicht bearbeiten, so dass der einzige Angriffspunkt der PBS Selber ist.
Hierfür würden wir dem User die Rollen DatastoreBackup
zum ausführen von Backups und DatastoreReader
zum Lesen von Backups geben.

Prune & GC Jobs
Als nächstes konfigurieren wir auf dem PBS schonmal den Prune Job für unseren Namespace. Hierbei geben wir an, welche Backups wir wie lange behalten wollen.
Wer sich ein Visuell eine Vorstellung von seinem Konzept machen will, kann den Prune Simulator von Proxmox nutzen um das passende für sich herauszusuchen.
In meinem Fall ist der Plan 7 Tage zurück Daily Backups zu haben. Anschließend dann 4 Wochen Backups, dann alle 12 Monate als Backups und schließlich 2 Jahre.

Nun können wir noch einen Garbage Collect Job konfigurieren bzw. die Zeit angeben. Der GC Job löscht final alle alten Backups und co. die wir nicht mehr brauchen und gibt den Platz wieder frei.

Verify Jobs
Unter dem Reiter Verify Jobs können wir außerdem Jobs zum überprüfen der Backups anlegen. Ich erstelle hier einen Job für einmal im Monat.

Netbird
Da wir unsere Backupinfrastruktur natürlich nicht einfach über das große Internet für alle Erreichbar machen wollen, richten wir nun eine Verbindung mit unserem Netbird-Netzwerk ein (Falls ihr euch für einen VPS Entschieden habt). Falls Ihr noch kein Netbird am laufen habt, findet Ihr in dem Netbird-Beitrag alle nötigen Infos.
Natürlich könnt ihr hier auch auf anderen VPN Lösungen zurückgreifen.
Installation
Netbird können wir mit wenigen Befehlen direkt über Shell installieren. Dafür gehen wir in der Weboberfläche einfach unter Administration auf Shell

Nun können wir in der Shell die Befehle für die Installation eingeben.
curl -fsSL https://pkgs.netbird.io/install.sh | sh
netbird up # Ggf. --management-url <url> und --setup-key <key>
Nachdem die Verbindung hergestellt wurde, sollte der Host in unserem Netbird Webinterface auftauchen, so dass wir entsprechende Policys erstellen können.

Policy
Wir möchten nun mit unserem Proxmox Server auf den Proxmox Backup Server über unser Netbird-Netzwerk zugreifen können. Dafür benötigen wir eine simple Policy, die das ganze erlaubt.

Die Regel wird ebenfalls für alle Geräte / Netze benötigt, von denen auf die Weboberfläche zugegriffen werden soll.
Eine vereinfachte Version mit OpnSense ist in Planung.
Deny WAN Zugriff
Nachdem wir nun die Konnektivität mit unserem Netbird Netzwerk hergestellt haben, kann der Zugriff auf den VPS per Web über die öffentliche IP deaktiviert werden, da wir nun per Netbird auf den PBS zugreifen können.
Bei Realtox funktioniert das Deaktivieren des WAN Zugriffs unter dem Reiter Firewall Options. Hier stellt ihr die Input Policy einfach auf Drop.

Proxmox Host Settings
Wir haben unseren Backupserver nun soweit vorbreitet. Als nächstes binden wir nun den Backupserver auf unserem Proxmox Host ein.
Hinzufügen des PBS
Dafür navigieren wir auf dem PVE zu Datacenter → Storage klicken auf Add und wählen Proxmox Backup Server aus.

Unter General geben wir nun alles zuvor erstellte ein.
ID | |
---|---|
Server | Netbird IP vom PBS Server |
Username | den erstellten Username |
Password | das zugehörige Passwort |
Datastore | Den erstellten Datastore |
Namespace | Den erstellten Namespace |
Fingerprint | Hier fügen wir den Fingerprint des Selfsigned Cert von PBS ein. Alternativ könnte ein Let´s Encrypt Cert konfiguriert werden. |
Den Fingerprint erhalten wir, wenn wir auf dem PBS zu Configuration → Certificates navigieren und auf View Certificate klicken.

Am ende sollte das ganze dann so aussehen:

Den Reiter Backup Retention können wir hier, wie auch empfohlen einfach ignorieren, da wir dies auf dem Backupserver bereits konfiguriert haben.

Unter dem Reiter Encryption können wir unsere Backups verschlüsseln lassen.

Wenn wir die Backups verschlüsseln erhalten wir einen Key zum entschlüsseln. Diesen müssen wir uns gut aufheben, beispielsweise in Vaultwarden.

Konfigurieren des Backup Jobs
Nachdem wir den Proxmox Backup Server nun hinzugefügt haben, können wir jetzt ein Backup Job konfigurieren. Dafür navigieren wir unter Datacenter zum Reiter Backup und klicken auf Add.

Nun wählen wir den PBS als Storage aus und stellen alles nach unseren Bedürfnissen ein.

Unter dem Reiter Retention können wir leer lassen, da wir das bereits auf dem PBS Server konfiguriert haben. Bei Note Templates können wir das Naming der Backups bei bedarf anpassen und unter Advanced noch einige granulare Einstellungen vornehmen.

Fertig! unser Backup Job ist bereit und läuft zur angegebenen Zeit. Um das Restoren zu Zeigen, führe ich den Job nun einmalig sofort aus über den Button Run now.
Restore
Nachdem wir nun unser Backup ausgeführt und eingerichtet haben, können wir unsere Virtuellen Maschinen von den Backups wiederherstellen.
Dies ist direkt in Proxmox möglich. Dabei navigieren wir einfach zu der entsprechenden VM und dort zum Reiter Backup. Dort angekommen wählen wir als Location den Proxmox backup Server aus und sehen alle unseren verfügbaren Backups.

Möchten wir nun die komplette VM zu einem älteren Stand wiederherstellen, wählen wir das gewünschte Backup und klicken auf den Button Restore

Benötigen wir nur einzelne Files wie z.b. ein Datenbank Dump welchen wir zuvor mit dem Docker DB Backup gemacht haben, können wir die Files über den Button File Restore suchen und herunterladen.
