Verschlüsselte Offsite-Backups mit Borgmatic & BorgBase auf Unraid

Einrichtung, Nutzung und Wiederherstellung verschlüsselter Offsite-Backups mit Borgmatic auf Unraid und einem externen BorgBase-Repository.

Verschlüsselte Offsite-Backups mit Borgmatic & BorgBase auf Unraid

Übersicht

Diese Anleitung beschreibt die Einrichtung, Nutzung und Wiederherstellung von verschlüsselten Offsite-Backups mit Borgmatic auf Unraid und einem externen Repository bei BorgBase.

  • Backup-System: Borgmatic (Docker auf Unraid)
  • Zielsystem: BorgBase Repo (SSH)
  • Verschlüsselung: Borg repokey + Passphrase
  • Authentifizierung: SSH Key Pair (ed25519)
  • Verwaltung & Wiederherstellung: über Unraid oder lokal per WSL/Linux

1. Initiales Setup auf Unraid

1.1. Ordnerstruktur

PfadZweck
/mnt/user/appdata/borgmatic/configBorgmatic-Konfiguration
/mnt/user/appdata/borgmatic/ssh_keysSSH-Schlüssel und Key-Backups
/mnt/user/archive_backup/borg_backup/repo(Optional) lokales Borg-Repo

1.2. SSH-Key generieren

mkdir -p /mnt/user/appdata/borgmatic/ssh_keys
chmod 700 /mnt/user/appdata/borgmatic/ssh_keys
ssh-keygen -t ed25519 -N "" -f /mnt/user/appdata/borgmatic/ssh_keys/id_ed25519 -C "borgmatic@unraid"
chmod 600 /mnt/user/appdata/borgmatic/ssh_keys/id_ed25519
chmod 644 /mnt/user/appdata/borgmatic/ssh_keys/id_ed25519.pub

1.3. Public Key bei BorgBase hinterlegen

  • Auf https://www.borgbase.com einloggen
  • Repository öffnen → AccessSSH Keys
  • Inhalt von id_ed25519.pub einfügen → Save

2. Borgmatic konfigurieren

2.1. config.yaml

Pfad: /mnt/user/appdata/borgmatic/config/config.yaml

location:
  source_directories:
    - /mnt/user/appdata_appdata_paperless
  repositories:
    - 'ssh://[email protected]/./repo'
  one_file_system: true

storage:
  ssh_command: 'ssh -i /root/.ssh/id_ed25519 -o StrictHostKeyChecking=accept-new'
  compression: lz4
  archive_name_format: "backup-{now}"

retention:
  keep_hourly: 2
  keep_daily: 7
  keep_weekly: 4
  keep_monthly: 12
  keep_yearly: 10

consistency:
  checks:
    - name: repository
      frequency: 2 weeks
    - name: archives
      frequency: always
    - name: extract
      frequency: 2 weeks
    - name: data
      frequency: 1 month

hooks:
  before_everything:
    - echo "Starting a backup job."
  after_everything:
    - echo "Backup created."
  on_error:
    - echo "Error while creating a backup." 

2.2. Docker-Environment-Variablen

VariableBeschreibungBeispiel
BORG_PASSPHRASEPasswort für die VerschlüsselungEinSehrStarkesPasswort123!
TZZeitzoneEurope/Berlin
BORG_HEALTHCHECK_URL (optional)Healthcheck-Ping-URLhttps://hc-ping.com/XYZ

3. Backup starten / testen

Manuell im Container:

docker exec -it borgmatic /bin/sh
borgmatic --verbosity 1 -c /etc/borgmatic.d/config.yaml

Automatisch per Cron (z. B. täglich um 2 Uhr):

docker exec borgmatic borgmatic --verbosity 1 -c /etc/borgmatic.d/config.yaml

Über das Unraid „User Scripts“-Plugin oder den Borgmatic-Schedule.


4. Schlüssel sichern

Nach der Repo-Initialisierung:

docker exec -it borgmatic /bin/sh
borg key export ssh://[email protected]/./repo /root/.ssh/encrypted-key-backup
borg key export --paper ssh://[email protected]/./repo /root/.ssh/encrypted-key-backup.txt

Die Dateien findest du auf dem Host:

/mnt/user/appdata/borgmatic/ssh_keys/encrypted-key-backup
/mnt/user/appdata/borgmatic/ssh_keys/encrypted-key-backup.txt

Diese unbedingt offline sichern (USB-Stick, Tresor, Passwortmanager).


5. Restore / Download

5.1. Backup auflisten

borg list ssh://[email protected]/./repo

5.2. Alles extrahieren

borg extract --target ./export ssh://[email protected]/./repo::backup-2025-10-25T14:52:54

5.3. Nur bestimmtes Verzeichnis

borg extract --target ./export ssh://[email protected]/./repo::backup-2025-10-25T14:52:54 mnt/user/appdata_paperless

5.4. Als .tar.gz exportieren

borg export-tar ssh://[email protected]/./repo::backup-2025-10-25T14:52:54 ./paperless-backup.tar.gz

6. Zugriff von anderem System (z. B. WSL/PC)

Voraussetzungen:

  • borgbackup und openssh-client installiert
  • privater SSH-Key (id_ed25519) aus Unraid unter ~/.ssh/
  • chmod 600 ~/.ssh/id_ed25519

Schritte:

borg key import ssh://[email protected]/./repo encrypted-key-backup
borg list ssh://[email protected]/./repo
borg extract --target ./restore ssh://[email protected]/./repo::backup-2025-10-25T14:52:54

7. Wartung

AufgabeIntervallBefehl
Konsistenzprüfungmonatlichborgmatic check
Schlüssel-Backupbei Repo-Änderungborg key export ...
Healthchecklaufendvia Healthcheck-URL
Cron-Log prüfenwöchentlichUnraid Logs oder /var/log/syslog

Sicherheit & Absicherung

1. SSH-Keys

  • Privater Key (id_ed25519) niemals öffentlich teilen.
  • Nur BorgBase und dein Backup-Host dürfen diesen Key verwenden.
  • Rechte: chmod 600
  • Backup-Kopie auf verschlüsseltem Medium speichern.

2. Passphrase

  • Starkes, eindeutiges Passwort (mind. 16 Zeichen, zufällig generiert).
  • Passphrase offline notieren oder in Passwortmanager speichern.
  • Ohne Passphrase kein Restore möglich!

3. Offsite-Key-Backups

  • encrypted-key-backup und .txt offline sichern.
  • Nie zusammen mit der Passphrase ablegen.

4. Container-Zugriff

  • Docker-Borgmatic nur im Admin-Netz freigeben.
  • Keine offenen SSH-Ports zum Container.

5. BorgBase-Zugang

  • Zwei-Faktor-Authentifizierung aktivieren.
  • Repository auf „append-only“ stellen, wenn keine Löschungen nötig sind. (→ verhindert versehentliches Löschen von Archiven)

6. Restore-Tests

  • Regelmäßig Restore-Tests durchführen (z. B. monatlich mit --dry-run).
  • Prüfen, ob Daten vollständig und lesbar sind.