Backup & Restore
PluriKey speichert Secrets als age-verschluesselte Dateien in normalen Verzeichnissen. Kein proprietaeres Format — ein Backup ist eine einfache Dateikopie.
Kein Datenbank-Export noetig
Anders als bei Cloud-Passwort-Managern sind deine Daten bereits Dateien. rsync, tar, cp — jedes Standard-Tool funktioniert.
Was muss gesichert werden?
| Pfad | Inhalt | Prioritaet |
|---|---|---|
/opt/plurikey/vaults/ | Alle Vault-Verzeichnisse (verschluesselte Secrets, Keys, Metadaten) | KRITISCH |
/opt/plurikey/data/plurikey.db | SQLite-Datenbank (Audit Trail, Hash-Chain) | Wichtig |
/etc/systemd/system/plurikey.service | systemd Service-Konfiguration | Niedrig |
Vault-Struktur verstehen
vaults/benutzername/
.age-recipients # Public Keys fuer Verschluesselung
.identity # Verschluesselter Private Key
.plurikey.json # Vault-Metadaten (Name, Datum)
domain.age # Verschluesseltes Secret (1 Datei pro Eintrag)
kategorie/
subdomain.age # Secrets in Unterverzeichnissen
Alle .age-Dateien sind mit age verschluesselt. Selbst wenn ein Backup kompromittiert wird, sind die Secrets ohne Master-Key nicht lesbar.
Manuelles Backup
Mit rsync
# Vault-Verzeichnisse sichern
rsync -av --delete /opt/plurikey/vaults/ /backup/plurikey/vaults/
# Audit-Trail sichern (SQLite WAL erst flushen)
sqlite3 /opt/plurikey/data/plurikey.db "PRAGMA wal_checkpoint(TRUNCATE);"
rsync -av /opt/plurikey/data/plurikey.db /backup/plurikey/plurikey.db
Als tar-Archiv
# Komplettes Backup mit Zeitstempel
tar czf /backup/plurikey-$(date +%Y%m%d-%H%M%S).tar.gz \
-C /opt/plurikey vaults/ data/plurikey.db
Auf einen Remote-Server
# Per rsync ueber SSH
rsync -avz /opt/plurikey/vaults/ user@backup-server:/backup/plurikey/vaults/
# Per scp als Archiv
scp /backup/plurikey-20260311.tar.gz user@backup-server:/backup/
Automatisches Backup (Cron)
Backup-Script unter /opt/plurikey/bin/backup.sh:
#!/bin/bash
BACKUP_DIR="/backup/plurikey"
DATE=$(date +%Y%m%d-%H%M%S)
mkdir -p "$BACKUP_DIR"
# SQLite WAL flushen
sqlite3 /opt/plurikey/data/plurikey.db "PRAGMA wal_checkpoint(TRUNCATE);"
# Backup erstellen
tar czf "$BACKUP_DIR/plurikey-$DATE.tar.gz" \
-C /opt/plurikey vaults/ data/plurikey.db
# Alte Backups loeschen (aelter als 30 Tage)
find "$BACKUP_DIR" -name "plurikey-*.tar.gz" -mtime +30 -delete
echo "$(date): Backup erstellt: $BACKUP_DIR/plurikey-$DATE.tar.gz"
Cron-Job einrichten (taeglich um 3:00 Uhr):
# crontab -e
0 3 * * * /opt/plurikey/bin/backup.sh >> /var/log/plurikey-backup.log 2>&1
Restore
Aus einem tar-Archiv
# Server stoppen
sudo systemctl stop plurikey
# Backup entpacken
tar xzf /backup/plurikey-20260311-030000.tar.gz -C /opt/plurikey
# Berechtigungen pruefen
chown -R root:root /opt/plurikey/vaults/
# Server starten
sudo systemctl start plurikey
Einzelnen Vault wiederherstellen
# Nur einen bestimmten Vault extrahieren
tar xzf /backup/plurikey-20260311.tar.gz \
-C /opt/plurikey vaults/benutzername/
Audit Trail verifizieren
PluriKey fuehrt einen Hash-Chain-basierten Audit Trail. Nach einem Restore die Integritaet pruefen:
/opt/plurikey/bin/plurikey-cli \
--path /opt/plurikey/vaults/benutzername audit-verify
Verifikation fehlgeschlagen?
Wenn audit-verify Fehler meldet, wurde die Hash-Chain unterbrochen. Das kann bedeuten: Backup unvollstaendig, Dateien manipuliert, oder DB und Vault-Dateien aus unterschiedlichen Zeitpunkten. Stelle sicher, dass DB und Vaults aus demselben Backup stammen.
Wichtige Hinweise
- Recovery Key getrennt aufbewahren! Der Recovery Key (BIP39 Mnemonic) wird beim
setup-keyerzeugt. Bewahre ihn getrennt vom Backup auf — z.B. ausgedruckt im Tresor. - SQLite WAL beachten: Vor dem Backup immer
PRAGMA wal_checkpoint(TRUNCATE)ausfuehren, damit alle Aenderungen in die Hauptdatei geschrieben werden. - Backup testen! Pruefe regelmaessig, ob ein Restore funktioniert. Ein Backup das nicht wiederhergestellt werden kann, ist kein Backup.
- Verschluesseltes Backup: Die Vault-Dateien sind bereits age-verschluesselt. Zusaetzliches Verschluesseln des Backups ist optional, schadet aber nicht.
- 3-2-1 Regel: 3 Kopien, 2 verschiedene Medien, 1 offsite. Gerade fuer Passwoerter ist Redundanz entscheidend.