Borgmatic mit Hetzner Storagebox
Irgendwie hab ich mein gesamtes Mail Archiv beim Anpassen eines Volumes gelöscht 🙈 Also schnell ins Backup geschaut und … naja das war leider korrupt 😱 Kein Backup kein Mitleid, die Mails waren weg. Daher hab ich mal wieder von Vorne begonnen und mein Backup System neuaufgesetzt. Diesmal mit Borgmatic und der vorhanden Hetzner Storagebox.
Hetzner Storagebox
Die Storagebox BX1 von Hetzner mit 1TB Speicherplatz reicht für mich für 3,81€ im Monat vollkommen aus und ist preislich top: https://www.hetzner.com/storage/storage-box/
Borgmatic einrichten
Das Backup wird mit einer Passphrase verschlüsselt die in eine .env
Datei geschrieben wird:
echo "BORG_PASSPHRASE=meine-geheime-passphrase" > .env
Speicher die Passphrase am besten auch in deinem Passwortmanager oder an einem sicheren Ort. Denn ohne lässt sich das Backup später nicht mehr einlesen.
Ich hab Borgmatic mit docker compose installiert:
# docker-compose.yml
services:
borgmatic:
image: ghcr.io/borgmatic-collective/borgmatic
volumes:
- /opt:/mnt/source/opt:ro # Sichert /opt
- /mnt/v1:/mnt/source/mnt/v1:ro # Sichert /mnt/v1
- ./data/borgmatic.d:/etc/borgmatic.d/
- ./data/config:/root/.config/borg
- ./data/ssh:/root/.ssh
- ./data/cache:/root/.cache/borg
environment:
- TZ=Europe/Berlin
- BORG_PASSPHRASE=${BORG_PASSPHRASE}
- BACKUP_CRON=20 * * * * # 20 Minuten nach jeder vollen Stunde
restart: always
Durch BACKUP_CRON=20 * * * *
wird Borgmatic jede Stunde um 20 Minuten nach der vollen Stunde ausgeführt.
Bei verschiedenen Backups verwende ich unterschiedliche Startzeiten, um ggf den Traffic etwas zu verteilen.
Und anschließen mit docker compose up -d
den Container gestartet.
SSH Key
Erstmal brauchen wir einen SSH Key mit dem Borgmatic später auf die Storagebox zugreifen kann. Dafür öffnen wir eine Shell in dem Borgmatic Container:
docker compose exec borgmatic sh
In der Shell erstellen wir dann einen neuen SSH Key:
ssh-keygen
und den Key ohne Passphrase erstellen.
Jetzt muss der Key in der Storagebox hinterlegt werden:
ssh-copy-id -p23 -s u12345@u12345.your-storagebox.de
Danach einfach mal mit ssh -p23 u12345@u12345.your-storagebox.de
testen und direkt nutzten, um mit
mkdir backups
einen Ordner für die Backups zu erstellen.
Borg Repository initialisieren
borg init --encryption repokey ssh://u12345@u12345.your-storagebox.de:23/./backups/server-am-meer
Anschließend den Key nochmal sichern:
borg key export ssh://u12345@u12345.your-storagebox.de:23/./backups/server-am-meer
Jetzt kannst du die Shell von Borgmatic wieder mit exit
verlassen.
Borgmatic konfigurieren
Die Konfiguration von Borgmatic ist sehr einfach und besteht aus einer config.yaml
Datei:
source_directories:
- /mnt/source
repositories:
- path: ssh://u12345@u12345.your-storagebox.de:23/./backups/server-am-meer
one_file_system: false
archive_name_format: 'backup-{now}'
keep_hourly: 2
keep_daily: 7
keep_weekly: 4
keep_monthly: 12
keep_yearly: 10
retries: 3
retry_wait: 10
checks:
- name: repository
frequency: 2 weeks
- name: archives
frequency: always
- name: extract
frequency: 2 weeks
- name: data
frequency: 1 month
before_everything:
- echo "Starting a backup job."
after_everything:
- echo "Backup created."
on_error:
- echo "Error while creating a backup."
uptime_kuma:
push_url: https://kuma-url-ohne-den-teil-hinter-dem-fragezeichen
states:
- start
- finish
- fail