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.