Teil 3: Backup, Updates und Restore

Neben dem Snapshot des Jails-Datasets kann auch ein komplettes Backup als TAR-Archiv erstellt werden. Im ersten Teil der Artikelserie haben wir eingerichtet, dass alles, was für die Installation benötigt wird, in einem Verzeichnis /usr/local/www/vaultwarden/data gesammelt wird. Das TAR-Archiv enthält also

  • die Konfigurationsdateien,
  • Zertifikate
  • die SQLite-Datenbank und die
  • Daten der Sends und Anhänge.

Das ist ideal, um es (am besten verschlüsselt) extern zu sichern. Nun müssen wir noch entscheiden, wo das Archiv gespeichert werden soll. Hier im Beispiel verwenden wir das Verzeichnis /mnt/backup, welches von außerhalb des Jails gemountet werden kann. Damit sind die Backups sofort unabhängig gespeichert und können dann über Snapshots wieder separat gesichert und weiterverarbeitet werden.

Letzte Aktualisierung:

  • 01.01.2024: Anpassen von Ports und Details
  • 20.08.2023: Automatisierung für HAProxy erweitert
  • 19.11.2022: Erweiterung um Diagramm und kleinere Anpassungen.
  • 30.10.2022: Initiales Dokument.

Backup

Manuell

Ein manuelles Backup wird mit einem Befehl ausgeführt, insbesondere vor einem Update:

tar -cpzf /mnt/backup/`date +%Y%m%d`.tar.gz /usr/local/www/vaultwarden/data

Automatisch

Regelmäßige Backups sind das A und O einer Strategie, insbesondere wenn es sich um so wichtige Daten handelt.

Cron im Jail

Ein Cron-Job kann direkt in der Jail in der Datei /etc/crontab definiert werden, z.B. für jeden Tag um 22:00 Uhr. Darin sollte auch direkt ein Job enthalten sein, der alte Sicherungsdateien löscht (z.B. nach 30 Tagen):

0       22       *       *       *      root    tar -cpzf /mnt/backup/`date +%Y%m%d`.tar.gz /usr/local/www/vaultwarden/data
5       22       *       *       *      root    find /mnt/backup/ -type f -mtime +30d -delete

Cron im TrueNAS

Alternativ kann aber auch direkt über das Webinterface von TrueNAS unter "Tasks / Cron Jobs" ein Cron Job für die Jail mit iocage exec JAILNAME eingerichtet werden, z.B. für jeden Tag um 22:00 Uhr mit Aufräumen 5 Minuten später. Das Aufräumen sollte auch in der Jail selbst stattfinden, damit es nur ausgeführt wird, wenn die Jail auch wirklich läuft. Ansonsten laufen die Backups leer.

iocage exec vault "tar -cpzf /mnt/backup/`date +%Y%m%d`.tar.gz /usr/local/www/vaultwarden/data"
iocage exec vault "find /mnt/backup/ -type f -mtime +30d -delete"

Cron

Jail aktualisieren

So, nach der ganzen Arbeit mit den Backups kommt nun das Update. Das ist vergleichsweise harmlos:

service vaultwarden stop
pkg upgrade
service vaultwarden start

Restore

Jedes Backup ist nur so gut, wie auch ein Restore durchgespielt wurde und wieder ein lauffähiges System bereitstellt. Im Schnelldurchgang ist das der Prozess:

  • Neues Jail erstellen
  • Paketquellen auf die latest anpassen.
  • ggf. die Mountings einbinden (/mnt/backup und /usr/local/www/vaultwarden/data)
  • TAR Archiv entpacken (cd / und tar -xf 20240101.tar.gz)
  • Symbolischen Link setzen (ln -sf /usr/local/www/vaultwarden/data/rc.conf.d /usr/local/etc/rc.conf.d)
  • Pakete installieren (pkg install vaultwarden)
  • Dienst starten (service vaultwarden enable und service vaultwarden start)
  • Cron Jobs nicht vergessen

Voilá