Handbuch Technik API Admin

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?

PfadInhaltPrioritaet
/opt/plurikey/vaults/Alle Vault-Verzeichnisse (verschluesselte Secrets, Keys, Metadaten)KRITISCH
/opt/plurikey/data/plurikey.dbSQLite-Datenbank (Audit Trail, Hash-Chain)Wichtig
/etc/systemd/system/plurikey.servicesystemd Service-KonfigurationNiedrig

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-key erzeugt. 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.