Zum Inhalt

Erste Schritte

Diese Seite führt dich von einer frischen Unraid-Box bis zu deinem ersten Backup.

Voraussetzungen

Voraussetzung Hinweise
Unraid 6.12+ Ältere Versionen sind nicht getestet. Unraid ist das Hauptziel, BombVault läuft aber auch auf einem schlichten Docker-Host und auf TrueNAS Scale (siehe Generischer Docker-Host).
Speicherort des restic-Repos Ein lokaler Pfad (empfohlen: dein Array oder Cache), SMB, NFS oder ein beliebiges rclone-Backend.
Docker-Socket Wird vom Template automatisch eingehängt (/var/run/docker.sock).
Unraid-Flash (/boot) Wird vom Template automatisch komplett eingehängt (/boot nach /host/boot). Ermöglicht das Flash-Backup und lässt einen wiederhergestellten Container als normale, bearbeitbare Unraid-App wiedererscheinen.
KVM-VMs (optional) Das VM-Backup spricht über SSH mit libvirt, kein libvirt-Mount. In den Einstellungen einrichten (siehe Konfiguration).
ZFS-Datasets (optional) Dieselbe SSH-Verbindung wie beim VM-Backup, zfs auf dem Host und Host Data als /mnt eingebunden mit dem Zugriffsmodus Read/Write - Slave, der Vorgabe des Templates. Siehe ZFS-Datasets.
Android-App (optional) Android 10 oder neuer, gekoppelt mit Servern ab Version 9.7.0. Siehe Android-App.

Auf Unraid installieren

Der einfachste Weg sind die Community Applications.

  1. Öffne den Apps-Tab in Unraid.
  2. Suche nach BombVault.
  3. Klicke auf Install, setze die erforderlichen Variablen (unten) und übernimm.

Manuelle Template-Installation

Falls du das Template lieber von Hand hinzufügst:

  1. Gehe zu Docker, Add Container, Template repositories und füge hinzu:
    https://github.com/junkerderprovinz/unraid-apps
    
  2. Suche in den Templates nach BombVault.
  3. Setze die erforderlichen Variablen und klicke auf Apply.

Generischer Docker-Host

Kein Unraid? BombVault läuft auch als schlichter Container auf jedem Docker-Host (darauf beruht auch die Container-Unterstützung auf TrueNAS Scale, noch vor einem eigenen Eintrag im dortigen App-Katalog).

  1. Hol dir die fertig anpassbare deploy/docker-compose.generic.yml aus dem Repo.
  2. Setze APP_KEY (siehe unten) und richte das Host-Data-Volume auf deine echte Datenwurzel. Die Kommentare in der Datei führen durch beides.
  3. docker compose up -d, dann https://<host-ip>:3443/ öffnen.

Was gegenüber Unraid anders ist:

  • Keine Flash-/USB-Domäne. Es gibt keinen Boot-Stick zu erfassen oder wiederherzustellen, die Flash-Domäne in den Einstellungen hat hier also nichts zu tun. Stattdessen bietet die Ordner-Domäne den Ein-Klick-Vorschlag Voreinstellung hinzufügen: Host-Systemkonfiguration an (ein /etc-Dateisatz als Anfang, den du vor dem Speichern prüfst und anpasst), als praktisches allgemeines Gegenstück.
  • Keine Unraid-eigenen Benachrichtigungen. BombVaults eigene Benachrichtigungskanäle (Webhook, Alarme bei fehlgeschlagenem Off-site und so weiter) arbeiten wie gewohnt; ausgelassen wird nur die Unraid-spezifische Meldung an dessen eigenes Benachrichtigungssystem, weil es ein solches hier nicht gibt.
  • VM-Sicherung ist optional und braucht einen separaten, per SSH erreichbaren libvirtd-Host. Siehe den auskommentierten Block in der Compose-Datei. Ein generischer Docker-Host bringt selbst keine VM-Verwaltung mit.
  • Kein Dashboard-Widget. Das BombVault Widget ist ein Unraid-Plugin, dieser Schritt entfällt also ebenfalls.
  • Den Datenordner eines Containers finden. Ohne Unraids appdata-Konvention wird der Datenordner eines Containers über die Segmente in DATA_ROOT_SEGMENTS, benannte Docker-Volumes, das Arbeitsverzeichnis eines Compose-Projekts und das Label bombvault.data gefunden (siehe Erkennung der Sicherungsquellen). Benannte Volumes und die /etc-Voreinstellung erreichen nur Pfade innerhalb des Host-Data-Mounts, richte Host Data also auf einen gemeinsamen übergeordneten Ordner, der auch die Datenwurzel von Docker abdeckt.
  • PLATFORM. Setze es auf generic oder truenas. Ohne Wert erkennt BombVault Unraid an dessen eigenem Marker auf dem Flash-Mount und behandelt alles andere als generisch, und die nur für Unraid gedachten Schritte werden übersprungen, statt versucht zu werden und fehlzuschlagen.

TrueNAS Scale nimmt denselben Compose-Weg; ein Katalogeintrag ist im Repository vorbereitet, aber noch nicht eingereicht. Das VM-Backup braucht dort LIBVIRT_URI, weil das libvirtd von TrueNAS an einem eigenen Socket lauscht (/run/truenas_libvirt/libvirt-sock), den die drei LIBVIRT_*-Variablen nicht ausdrücken können (siehe Konfiguration). Wie weit das erprobt ist: Das Zvol-Backup lief gegen eine echte TrueNAS-Scale-Box, auf einem Zvol, das an einer laufenden VM hing, und zfs snapshot, zfs send, restic und zfs receive haben es Byte für Byte hin und zurück gebracht. Eine vollständige, von BombVault selbst gesteuerte Wiederherstellung wurde auf TrueNAS-Hardware noch nicht ausgeführt, und dieses Zvol war dünn provisioniert, der Durchsatz bei vielen Gigabyte ist also ungetestet. Teste dort eine Wiederherstellung, bevor du dich darauf verlässt.

Die eine erforderliche Einstellung

Die einzige Variable, die du setzen musst, ist APP_KEY, ein 32-Byte-Hex-Geheimnis (64 Hex-Zeichen), das zum Ableiten des restic-Repository-Passworts dient.

Erzeuge eines auf einer beliebigen Maschine:

openssl rand -hex 32

Füge das Ergebnis in das Feld APP_KEY des Templates ein (Unraid) oder in die Umgebungsvariable APP_KEY in docker-compose.yml (generischer Docker-Host).

Verliere deinen APP_KEY nicht

Geht APP_KEY verloren, sind deine verschlüsselten Backups unwiederbringlich. Bewahre ihn an einem sicheren Ort getrennt vom Server auf. Sobald BombVault läuft, nutze das Ein-Klick-Wiederherstellungspaket für den Verschlüsselungsschlüssel (siehe Off-site & Wiederherstellung), um das vollständige Recovery-Bundle zu speichern.

Das Template hängt außerdem den Docker-Socket, den Flash (/boot) und das Wurzelverzeichnis Host Data (/mnt) für dich ein. Backup-Quellen und -Ziele liegen beide unter Host Data. Die vollständige Variablenreferenz und die Off-site-Einrichtung findest du unter Konfiguration.

Erster Start

Das Dashboard nach der ersten Sicherung: was geschützt ist, was als Nächstes läuft, und ein mitlaufendes Protokoll.

Das Dashboard nach der ersten Sicherung: was geschützt ist, was als Nächstes läuft, und ein mitlaufendes Protokoll.

  1. Öffne die Web-Oberfläche unter https://<your-unraid-ip>:3443 (selbstsigniertes Zertifikat von Haus aus).
  2. Aktiviere in den Einstellungen die gewünschten Backup-Bereiche (Container, VMs, Flash, Selbst-Backup, Ordner, ZFS-Datasets) und wähle eine Akzentfarbe.
  3. Wähle im Container-Tab einen Container und klicke auf Jetzt sichern, um deinen ersten Wiederherstellungspunkt zu erstellen. Repository-Pfade sind standardmäßig /mnt/user/bombvault/{container,vms,flash,config,files,zfs} und werden beim ersten Backup angelegt.
  4. Richte die Planung unter Einstellungen, Zeitpläne ein. Es gibt ein Ein-Klick-Alle in den Zeitplan für Container und VMs.

Optional: eine Backup-Reihenfolge festlegen

Wenn manche Container immer vor anderen gesichert werden sollen (zum Beispiel eine Datenbank vor der App, die sie nutzt), öffne das Panel Backup-Reihenfolge auf der Container-Seite und ziehe sie in die gewünschte Reihenfolge. Geplante und Mehrfachauswahl-Läufe folgen ihr dann; alles, was du unsortiert lässt, wird wie bisher zuerst nach höchster Überfälligkeit gesichert.

Host-Integration-Check

Öffne /spike in der Web-Oberfläche, nachdem der Container gestartet ist. Es prüft jeden Mount und jedes CLI (Docker-Socket, libvirt, restic, qemu-img, rclone) und meldet fehlende Teile, sodass du bestätigen kannst, dass der Container korrekt verdrahtet ist, bevor du dich darauf verlässt.

Einfach vs. Erweitert

Die Einstellungen haben keinen Speichern-Knopf: jede Änderung wird sofort geschrieben.

Die Einstellungen haben keinen Speichern-Knopf: jede Änderung wird sofort geschrieben.

Standardmäßig zeigt die Oberfläche nur das Wesentliche (sichern, wiederherstellen, planen). Nutze den Schalter Einfache Ansicht / Erweiterte Ansicht in der Seitenleiste, um die Expertensteuerung freizuschalten: Aufbewahrung, Off-site-Kopie, Pre/Post-Hooks, Wiederherstellung auf Dateiebene, Benachrichtigungen, Prometheus-Metriken und die Integritäts-/Wartungswerkzeuge. Es ist eine Einstellung pro Browser und standardmäßig aus, sodass Einsteiger eine aufgeräumte Oberfläche bekommen und Power-User alles.

Aus dem Quellcode bauen

BombVault ist ein einzelnes statisches Go-Binary, das eine JSON-API und eine eingebettete React-Oberfläche ausliefert. Baue zuerst die Oberfläche, dann starte das Binary:

npm --prefix web ci
npm --prefix web run build     # schreibt web/dist, das das Binary einbettet
export APP_KEY=$(openssl rand -hex 32)
go test ./...                  # Unit- und Integrationstests, mit einem echten restic-Durchlauf hin und zurück
golangci-lint run ./...
go run ./cmd/bombvault         # antwortet unter https://localhost:3443 mit einem selbstsignierten Zertifikat

Der Build der Oberfläche wird auch für go run gebraucht. Das Repository enthält unter web/dist nur einen leeren Marker, ohne npm --prefix web run build bettet das Binary also nichts ein und antwortet mit 500 SPA index not found, und das ist so zu erwarten. Docker, libvirt und Unraid lassen sich in der CI nicht testen, prüfe Mounts, restic und die SSH-Verbindung für das VM-Backup also auf einem echten Host mit dem Host-Integration-Check (/spike), bevor du einen Pull Request öffnest.

Nächste Schritte

  • Durchstöbere die vollständigen Funktionen.
  • Hol dir jeden Server deiner Gruppe mit der Android-App aufs Handy.
  • Füge eine oder mehrere Off-site & Wiederherstellung-Repliken hinzu (jeder Bereich kann gleichzeitig an mehrere Ziele liefern) und speichere dein Recovery-Kit.
  • Klonst du ein Setup oder wechselst auf eine neue Box? Nimm deine gesamte Konfiguration mit der Karte Einstellungen exportieren / importieren mit. Siehe Konfiguration.
  • Auf ein Problem gestoßen? Siehe Fehlerbehebung.