Hetzner Storagebox mit Borgmatic

     

Ich habe über Karfreitag alle meiner Maschinen endlich mal vom nicht mehr weiterentwickelten Tartarus auf Borg umgestellt. Ich habe, zur leichteren Verwaltung und Konfiguration der Backups, hierbei auf den kleinen Wrapper Borgmatic gesetzt und möchte heute zeigen, wie die Konfiguration in Verbindung mit einer Storage Box von Hetzner aussehen muss.

Ich nutze für alle Server eine große Storagebox, regele die Berechtigungen allerdings mit Sub-Accounts. Jeder Server bekommt also einen eigenen Sub-Account auf der Storagebox – wichtig ist hier, mindestens den SSH-Support zu aktivieren. Vorher habe ich allerdings die entsprechenden Ordner auf der Storagebox angelegt (benannt nach den Hostnames der Server) und den Sub-Account entsprechend per Basis Verzeichnis darauf beschränkt

Der Server des Accounts „-sub1“ steht außerhalb des Hetzner-Netzwerks, daher „externe Erreichbarkeit“ – bei Maschinen innerhalb des Hetzner-Netzwerks ist nur SSH nötig!

In die jeweiligen Ordner müssen dann auch noch die SSH-Public-Keys der jeweiligen Maschine verbracht werden (.ssh/authorized_keys). In jedem Ordner braucht man diese Datei mit dem Key des zugeordneten Servers.

Repository initialisieren

Wir sind also nun soweit, das Repository zu initialisieren. Die Findung des korrekten Strings hat mich ein wenig zeit gekostet, er muss aber so aussehen (oder eben so Ähnlich mit anderen Optionen):

borg init --encryption=repokey ssh://uXXXXXX-subX@uXXXXXX.your-storagebox.de:23/./backup

Konfiguration Borgmatic

Die Konfiguration von Borgmatic war auch etwas tricky, letztlich habe ich aber diese funktionierende Konfiguration gefunden:

location:
    source_directories:
        - /etc
        - /var/www

    one_file_system: true
    repositories:
        - uXXXXXX-subX@uXXXXXX.your-storagebox.de:backup

    exclude_patterns:

    exclude_caches: true
    exclude_if_present: .nobackup

storage:
    ssh_command: ssh -p 23
    compression: auto,zstd
    encryption_passphrase: CHANGEME
    archive_name_format: '{hostname}-{now}'
    relocated_repo_access_is_ok: true

retention:
    keep_daily: 7
    keep_weekly: 4
    keep_monthly: 12
    keep_yearly: 2
    prefix: '{hostname}-'

consistency:
    checks:
        - archives

    check_last: 3
    prefix: '{hostname}-'

Die wichtigsten Optionen habe ich euch farbig markiert.

Nur mit einer Kombination dieser drei Optionen hat die Verbindung zwischen Storagebox und Borgmatic funktioniert. Natürlich muss die Konfiguration an die eigenen Bedürfnisse angepasst werden, ich wollte nur die grundlegende Konfiguration hier aufzeigen. Auch die weiterführende Konfiguration (Cronjobs, Überwachung, …) muss selbst durchgeführt werden. Wie immer übernehme ich keine Haftung für Schäden an euren Systemen.

Fragen, Anmerkungen oder Tipps gerne in die Kommentare! Ich wünsche allein meinen Lesern frohe Ostern!