In dieser Anleitung zeigen wir euch, wie ihr eure Dateien und Server mittels Borg Backup bzw. Borgmatic in einem Docker-Container einfach und sicher auf einer Hetzner Storage Box sichern könnt. Falls ihr euch nicht sicher seid, was genau eine Hetzner Storage Box ist, könnt ihr diesen Erfahrungsbericht dazu lesen. Und vergesst nicht: Kein Backup, kein Mitleid!
Datum | Änderungen |
---|---|
21.05.2024 | Kapitel 5 um E-Mail Empfänger ergänzt, Kapitel 6.1 hinzugefügt |
02.10.2023 | Wichtig! In Docker Compose noch restart: always eingefügt! Sonst ist ein regelmäßiges Backup nicht sichergestellt! |
27.10.2023 | Kleine Fehlerkorrektur und kleine Anpassung (Danke @danielza) |
24.10.2023 | Vollständig neu geschrieben mit aktuellen Stand |
11.02.2023 | Update: Docker Compose v2, env.sh |
15.05.2022 | Erstellung dieser Anleitung |
In dieser Anleitung möchten wir, Jonathan und Christian, euch zeigen, wie ihr euren Server sicher und effizient auf einer Hetzner Storage Box speichern könnt. Wir haben uns für die Hetzner Storage Box entschieden, da sie für nur etwa 4€ im Monat beeindruckende 1 TB Speicherplatz bietet. Natürlich könnt ihr auch andere Speicherlösungen verwenden, wenn ihr das bevorzugt.
Das Hauptziel dieses Tutorials ist die Sicherung von Serverdaten auf der Hetzner Storage Box. Zusätzlich dazu möchten wir sicherstellen, dass wir nach jedem Backup-Vorgang eine Benachrichtigungs-E-Mail erhalten. Im Hinblick auf die Datensicherheit legen wir Wert darauf, dass potenzielle Angreifer weder Zugang zu unseren gespeicherten Daten erhalten noch diese löschen können. Als zusätzliche Absicherung wollen wir Maßnahmen treffen, die gewährleisten, dass unsere Backups auch dann sicher sind, wenn ein Angreifer vollen Zugriff auf den zu sichernden Server erlangen sollte.
1. Storage Box einrichten
Für dieses Tutorial empfehlen wir die Hetzner Storage Box, die ihr hier buchen könnt (kein Affiliate-Link, lediglich eine persönliche Empfehlung von uns, Jonathan und Christian). Nachdem ihr die Bestätigungs-E-Mail erhalten habt, dass eure Storage Box bereit ist, könnt ihr euch bei Hetzner einloggen und unter dem folgenden Link https://robot.your-server.de/storage die Einstellungen eurer Box anpassen.
1.1. Storage Box-Konfiguration anpassen
Nachdem ihr eingeloggt seid, navigiert im linken Hauptmenü zu „Storage Box“. Dort findet ihr eine Übersicht über alle gebuchten Storage Boxen. Wählt die soeben von euch gebuchte Box aus, um das Konfigurationsfenster zu öffnen.
An diesem Punkt ist es essentiell, zwei spezielle Funktionen zu aktivieren: SSH-Support und externe Erreichbarkeit. SSH-Support ist notwendig, damit wir uns sicher mit der Storage Box verbinden können. Die Option für externe Erreichbarkeit ist ebenfalls wichtig, denn ohne diese Einstellung ist es nicht möglich, von einem externen Gerät, wie zum Beispiel eurem PC, eine Verbindung zur Storage Box herzustellen.
1.2. Verzeichnisse auf der Storage Box anlegen
Als nächstes richten wir ein spezifisches Verzeichnis für unseren Server auf der Storage Box ein. Dazu verwenden wir einen FTP-Client. In dieser Anleitung nutzen wir beispielhaft WinSCP, ein bewährtes Programm für Windows. Es ist auch in einer portablen Version verfügbar, die keine Installation erfordert. Für Mac- und Linux-Nutzer ist FileZilla eine geeignete Alternative.
Nach dem Start von WinSCP erscheint ein Anmeldefenster. Hier tragt ihr nun eure Zugangsdaten für die Hetzner Storage Box ein.
Hinweis: Falls ihr bisher noch kein Passwort für eure Storage Box festgelegt habt, könnt ihr dies im Konfigurationsfenster aus Abschnitt 1.1. tun. Scrollt einfach nach unten und klickt auf „Neues Passwort erstellen“
Nach erfolgreicher Anmeldung werdet ihr die Dateistruktur eurer Storage Box sehen. Da wir bisher noch keine Daten darauf übertragen haben, sollte dieser Bereich leer sein.
An dieser Stelle ist es ratsam, eine übersichtliche Ordnerstruktur anzulegen, die für unsere Backup-Zwecke optimiert ist. Durch Drücken der F7-Taste könnt ihr neue Ordner erstellen, in denen später die Backups via Borg abgelegt werden sollen. Zum Zwecke dieser Anleitung haben wir beispielsweise die Ordner „Server1“ und „Server2“ angelegt.
1.3. Sub-Accounts für die Storage Box anlegen
Bei diesem Inhalt handelt es sich um exklusiven Content für Community Plus Mitglieder und Supporter.
Bitte logge dich mit deinem Account ein um den Inhalt zu sehen.
6.3. Dateien aus dem Backup wiederherstellen
Das Wiederherstellen von Dateien aus einem Backup kann entscheidend sein. In unserem Fall ist es jedoch wichtig zu wissen, dass unser Quellverzeichnis als “read-only” konfiguriert ist. Dies schützt uns vor versehentlichen Wiederherstellungen direkt ins Quellverzeichnis, kann aber auch zu Herausforderungen bei der Wiederherstellung führen.
6.3.1. Normale Wiederherstellungsprozedur
Im Standardfall wäre der Befehl für die Wiederherstellung des neuesten Archivs:
borgmatic extract --archive latest
Das --archive
Flag gibt den Namen des Archivs an, das extrahiert werden soll. Dieser Befehl extrahiert den gesamten Inhalt des Archivs in das aktuelle Verzeichnis. Achtet also darauf, dass ihr euch im richtigen Verzeichnis befindet, bevor ihr den Befehl ausführt.
6.3.2. Anpassung für unser “Read-Only” System
Da unser Quellverzeichnis jedoch “read-only” ist, wird der oben genannte Befehl zu einem Fehler führen. Deshalb müssen wir die Dateien an einen anderen Ort extrahieren. Bei der Erstellung unserer docker-compose.restore.yml
haben wir einen Pfad für genau diesen Zweck definiert: ./data/restore
. Innerhalb des Containers entspricht dies dem Pfad /restore
.
Schritte zur Wiederherstellung
Zielordner anlegen: Innerhalb des /restore
-Verzeichnisses legen wir uns einen Zielordner an:
mkdir -p /restore/latest
Wiederherstellungsbefehl ausführen: Jetzt können wir den Befehl zur Wiederherstellung ausführen:
borgmatic extract --archive latest --destination /restore/latest
Docker Container verlassen: Nach erfolgreicher Wiederherstellung können wir den Container mit dem Befehl exit
verlassen.
Überprüfen der wiederhergestellten Dateien: Ihr findet die wiederhergestellten Dateien unter /opt/containers/borgmatic/data/restore/latest
.
Mit diesen Schritten könnt ihr Dateien aus eurem Backup erfolgreich wiederherstellen, selbst wenn euer System als “read-only” konfiguriert ist.
7. Verwendung des “Append-Only” Modus und Alternativen
Borg bietet einen “Append-Only” Modus, der ein zusätzliches Sicherheitsmerkmal darstellt. In diesem Modus können nur neue Dateien zum Backup hinzugefügt werden; eine Löschung oder Veränderung bestehender Dateien ist nicht möglich. Dies ist besonders nützlich, falls ein Angreifer Zugang zu eurem Server erhalten sollte. Ein Angreifer könnte in einem solchen Fall euren Server manipulieren, aber nicht die bereits erstellten Backups löschen.
Aktueller Stand bei Hetzner Storage Box
Zum Stand des 24. Oktober 2023 unterstützt die Hetzner Storage Box diesen Modus leider noch nicht. Als Alternative könnt ihr jedoch Snapshots in eurer Storage Box einrichten.
Snapshots als Alternative
- Webinterface öffnen:
Loggt euch in das Webinterface eurer Hetzner Storage Box ein. - Automatische Snapshots:
Navigiert zum Menüpunkt “Automatische Snapshots”. - Snapshot-Funktion aktivieren:
Aktiviert die Snapshot-Funktion und wählt eine Häufigkeit für die Erstellung der Snapshots aus, zum Beispiel “Täglich”.
Dadurch wird täglich ein Snapshot eurer Storage Box erstellt. Im Notfall könnt ihr zu einem dieser Snapshots zurückkehren.
Begrenzungen
Beachtet, dass die maximale Anzahl von Snapshots abhängig von der Größe eurer Storage Box ist. Bei der kleinsten Storage Box sind beispielsweise maximal 10 Snapshots möglich. Das heißt, ihr könnt maximal 10 Tage zurückgehen, falls ein Angreifer alle eure Backups gelöscht haben sollte.
Durch die Verwendung von Snapshots oder dem “Append-Only” Modus (sofern verfügbar) könnt ihr die Sicherheit eurer Backups zusätzlich erhöhen.
Arbeiten an borgmatic
- [Feature] Add Docker Secrets support
- [Update] Update config.yaml to Address Deprecated Options
- [Docu] Documentation for Apprise – Supports Pre-1.8.4 and 1.8.4+
Quellen
- https://www.hetzner.com/de/storage/storage-box/bx11?country=de
- https://github.com/borgmatic-collective/docker-borgmatic
- https://torsion.org/borgmatic/docs/how-to/extract-a-backup/
- https://docs.hetzner.com/de/robot/storage-box/
Hallo,
ich habe wieder mal eine Frage, sicherlich nichts großes, ich komme nur absolut nicht auf den Fehler. Ich bin die Anleitung mehrfach durchgegangen. Im Punkt 6.2 bekomme ich immer die Meldung
Backup-Server: Listing repository
passphrase supplied in BORG_PASSPHRASE, by BORG_PASSCOMMAND or via BORG_PASSPHRASE_FD is incorrect.
Backup-Server: Error running actions for repository
Die Passphrase stimmt in beiden Dateien aber überein. Was kann ich hier übersehen haben? Bin wie immer für jeden Tipp dankbar!
Hallo,
vielen Dank für diese und die ganzen anderen Anleitungen. Ich konnte bisher alles, was mich interessierte umsetzen und habe auch einiges gelernt.
Was mir bei dieser Anleitung aber fehlt, ist der Hinweis, wie ich die Sache mit mehreren Servern (nach meinem Verständnis “mehreren Docker-Stacks auf dem selben Server”) umsetze. Ich habe entsprechend dem Start der Anleitung mehrere Ordner und auch Sub-Accounts auf der Hetzner Box angelegt. Wie muss ich denn jetz die entsprechenden Konfigurationen anpassen?
In der config.yml weitere Repositories anlegen? Scheint nach meinem Verständnis von yaml nicht zu passen, da “source_directories” ja hirachisch auf einer Ebene mit “Repositories” liegt und somit ja keine Zuordnung statt findet. Oder bin ich da auf dem Holzweg?
Oder muss ich mir für jeden Server einen borg-Container anlegen.
Wäre für Erleuchtung dankbar.
FBeye
Hallo,
leider finde ich den Fehler nicht. Vielleicht könnt ihr mir einen Tipp geben wo ich noch suchen könnte. ich bekomme folgende Fehlermeldung:
Backup abgeschlossen.
cat: can’t open ‘/tmp/backup_run.log’: No such file or directory
2024-05-24 05:41:38,566 – INFO – Applying Custom Defaults
2024-05-24 05:41:38,566 – WARNING – No message body or attachment was specified.
Backup-Server: Error running actions for repository
Obwohl an diesem Pfad die Datei mit der Berechtigung 644 vorhanden ist.
Guten Abend,
grundsätzlich hat die Installation/Konfiguration von borgmatic (auf ubuntu 22.04) gemäß dieser Anleitung funktioniert. Der Ordner mit dem Borgmatic Container wird auf das Repository gesichert.
Allerdings scheitere ich nun daran, andere Ordner als den im Bsp. der Anleitung angegebenen zu sichern.
Z.B. beliebigen Ordner unter /home/user1 oder auch von USB-Platte unter /mnt/storage/ordner1.
Folgende Schritte im Bsp. mit /mnt/storage:
Wenn ich dann ein Backup anstoße erhalte ich folgende Fehlermeldung:
/mnt/source/ordner1: stat: [Errno 2] No such file or directory: ‘/mnt/source/ordner1’
Div. andere Konstellationen/Ordner auch noch probiert, immer mit demselben Ergebnis.
Was übersehe ich (als Neuling)?
Herzlichen Dank.
Hallo
Den alten Borg-Backup von 2022 habe ich gestern Abend gegen diesen hier ausgetauscht. Es hat richtig gut geklappt. Vielen Dank!
Eine Verständnisfrage habe ich allerdings noch:
Bei der alten Anleitung gab es noch den Punkt: 8 Docker Container herunterfahren + Backup erstellen
Das kommt nun nicht mehr vor. Ist es nicht mehr notwendig die Container herunter zu fahren oder wie funktioniert das nun?
Schöner Artikel, den ich ebenfalls umgesetzt habe…
Folgende Anmerkungen:
1.) Den ssh-Schlüssel kann man komfortabel via
ssh-copy-id -i /root/.ssh/borg_id_ed25519.pub -p 23 -s uXYZ-sub1@uXYZ-sub1.your-storagebox.de
auf den Hetzner-Server übetragen. Das Verzeichnis .ssh und die Datei authorized_keys werden gleich mit den richtigen Zugriffsrechten angelegt.
2.) Man sollte undebdingt die Schlüssel für die Verschlüsselung des backups sichern:
borg key export ssh://uXYZ-sub1@uXYZ-sub1.your-storagebox.de:23/./backup > /root/.config/borg/repokey.asc
borg key export –paper ssh://uXYZ-sub1@uXYZ-sub1.your-storagebox.de:23/./backup > /root/.config/borg/repokey.paperkey
3.) Meinem Verständis nach bedeutet
keep_within: 4m
, daß für 4 Monate aufgehoben wird. Vier Wochen müßtekeep_within: 4w
entsprechen.Hallo Jonathan,
it’s me again 🙂
Vielleicht hast du eine Idee bzw. Lösung für folgendes Problem.
Über die Borg config.yml kann man Borgmatic auch dazu bringen Datenbanken mitzusichern. Unter https://torsion.org/borgmatic/docs/how-to/backup-your-databases/#containers ist es auch gut beschrieben wie es klappen könnte.
Mein aktuelles Beispiel ist die Sicherung von der Paperless DB. Dazu habe ich auch entsprechend der genannten Anleitung die Borg config.yml angepasst.
Leider wirft mir Borg immer folgende Fehlermeldung hin und sagt mir damit das die Sicherung nicht erfolgreich war.
Die Meldung sagt ja schon einiges. Der Name kann nicht aufgelöst werden. Aber wie überzeuge ich ich Borg davon diesen aufzulösen? Borg läuft als Container. Paperless ebenfalls. Aufgebaut nach euren Anleitungen 🙂
Hast du da vlt. eine Idee?
Besten Dank,
Daniel
Moin noch mal 🙂
Einen hab ich noch. Da ich keine Hetzner Box nutze und ich irgendwie diese SSH Verbindung zu meiner QNAP (noch) nicht so passwordless hinbekomme, habe ich meine QNAP auf den Host gemountet und in den Container gehangen.
Der „repositories“ Teil sieht in der Datei borgmatic.d/config.yaml jetzt so aus:
So hat dann das erstellen des Repos auch geklappt. Ohne letzteren Zusatz hat er das Repo nicht erstellen wollen.
Ich hoffe, dass ich damit richtig liege. psycho0verload Korrigiere mich gerne 🙂
Schönen Gruß
Daniel
Moin zusammen
vielen Dank für das Update der Anleitung. Top Job. Eine Anmerkung habe ich schon. Und zwar in der Datei „borgmatic.d/config.yaml“ dürfen beim before/after/error Teil bei dem „echo“ keine Anführungszeichen verwendet werden.
Wenn gesetzt läuft der Backupjob auf Fehler mit dem Hinweis:
Nach der Korrektur des betroffenen Teils war der Fehler behoben und der Backupjob lief ohne Probleme an.
Gefunden habe ich den Hinweis in der Beispiel Konfiguration auf
https://torsion.org/borgmatic/docs/reference/configuration/
Ich hoffe ich konnte etwas Helfen.
Schönen Gruß
Daniel