Restic mit Hetzner Storagebox nutzen
Die flexiblen und günstigen Storage Boxes von Hetzner eigenen sich wunderbar für Backups von Servern und Desktoprechnern. Ich nutze sie, um verschlüsselte Sicherungen meiner Server geografisch getrennt und sicher aufzubewahren. Das Backup-Tool Restic spielt dabei über das SFTP-Protokoll wunderbar mit dem Cloudspeicher zusammen.
Bevor die StorageBox mit Restic verknüpft werden kann, muss die Box zunächst vorbereitet werden, sodass auf sie via SFTP zugegriffen werden kann. In den StorageBox Einstellungen muss das SSH-Protokoll zur Datenübertragung aktiviert sein. Alle anderen Zugriffsmethoden wie z.B. Samba können deaktiviert bleiben.
Danach wird die StorageBox lokal gemoutet, um alle weiteren Vorbereitungen zu treffen.
mkdir /mnt/storagebox
sshfs u123456@u123456.your-storagebox.de: /mnt/storagebox/
(u123456
muss hier und in den folgenden Kommandos durch die eigene Userkennung ersetzt werden!)
Gebt das Passwort für die StorageBox ein. Das Passwort kann in den Einstellungen der StorageBox eingesehen bzw. geändert werden.
Für eine Authentifizierung des Servers an der StorageBox soll ein SSH-Key genutzt werden. Damit der passende Public Key an der StorageBox registriert werden kann, muss ein .ssh
Verzeichnis und die authorized_keys
Datei angelegt werden.
mkdir /mnt/storagebox/.ssh
touch /mnt/storagebox/.ssh/authorized_keys
Einen neuen Host registrieren
Nun wird auf dem zu sichernden Server ein neuer SSH-Key für den root-User generiert. Achtet darauf, für den Key kein Passwort anzulegen - schließlich soll der Key einmal während des Backupprozesses automatisch und ohne Passworteingabe verwendet werden.
ssh-keygen -t ed25519
In der SSH-Konfigurationsdatei /root/.ssh/config
des Servers wird folgende Konfiguration hinterlegt:
Host u123456.your-storagebox.de
User u123456
Port 23
Die Konfiguration wird später einen konfortableren Zugriff ermöglichen, weil alle nötigen Verbindunsparameter aus der Konfiguration gelesen werden können.
Der Public Key des neu generierten SSH-Schlüsselpaars wird nun an der StorageBox registriert:
cat ~/.ssh/id_ed25519.pub >> /mnt/storagebox/.ssh/authorized_keys
Für die Backups dieses Hosts wird ein neues Verzeichnis angelegt, welches das Backuparchiv enthalten soll:
mkdir /mnt/storagebox/host1
Die StorageBox kann nun wieder unmounted werden:
fusermount -u /mnt/storagebox
Backupscript erstellen
Das Backupscript soll die Informationen über den Speicherort aus Umgebungsvariablen lesen, die in einer Datei namens resticenv.sh
gelesen werden. Die Definition der Umgebungsvariablen ließen sich zwar auch direkt in dem Backupscript definieren, doch die getrennte Definitionsdatei ermöglicht einen bequemeren Umgang mit Restic, falls einmal manuelle Eingriffe oder ein Restore nötig sein sollten.
resticenv.sh
#!/bin/bash
export RESTIC_REPOSITORY="sftp:u123456.your-storagebox.de:host1"
export RESTIC_PASSWORD="meinbackuparchivpassword"
Ein Backupscript backup.sh
für Restic könnte beispielsweise so aussehen:
#!/bin/bash
### Restic Passwort und Speicherort einlesen
source resticenv.sh
### Restic ausführen
restic backup \
/var/www \
/home \
/etc \
/root
Bevor Restic / backup.sh
erstmalig ausgeführt werden kann, muss das Backuparchiv in der StorageBox initialisiert werden. Dazu werden die Verbindungsparameter zum Archiv via source
eingelesen und ein restic init
ausgeführt:
source resticenv.sh
restic init
Das Restic-Archiv ist nun einsatzbereit und backup.sh
kann regelmäßig ausgeführt werden.