Files
homelab-infra/ops/restore-tests/unraid-user-scripts.md
T

4.0 KiB

Unraid User Scripts fuer Restore-Checks

Ziel

Diese Vorlagen binden die validierten Restore-Checks in Unraid User Scripts ein.

Host-Repo-Pfad:

/mnt/user/services/homelab-infra

Wichtig - Cron-Semantik: Vixie-Cron verknuepft day-of-month und day-of-week mit OR, sobald beide gesetzt sind. Wir triggern daher an jedem Samstag/Sonntag und filtern den Monatstag per Shell-Guard im User-Script. Siehe ops/restore-tests/schedule.md.

Wichtig - keine doppelten Schreiber: die Restore-Skripte schreiben ihren Markdown-Report selbst nach /mnt/user/backups/restore-reports/<service>-YYYY-MM-DD.md. User-Scripts duerfen den Job-Output nicht in dieselbe Datei umleiten, sonst gewinnt der letzte Writer. Wrapper-Output landet stattdessen in /mnt/user/backups/restore-reports/_wrapper-<mode>-YYYY-MM-DD.log.

Script 1 - restore-freshness-weekly

Cron:

  • 30 6 * * 1 (Montag 06:30)

Inhalt:

#!/bin/bash
exec /mnt/user/services/homelab-infra/ops/restore-tests/run-restore-job-with-ntfy.sh \
  freshness homelab-info

Erwartung:

  • prueft Dump-Frische
  • prueft Report-Frische
  • startet keine Container

Script 2 - restore-vaultwarden-monthly

Cron:

  • 0 7 * * 6 (jeden Samstag 07:00)

Guard: nur am ersten Samstag im Monat ausfuehren.

#!/bin/bash
# Guard: nur 1.-7. Tag im Monat, damit "1. Samstag" eindeutig getroffen wird.
day=$(date +%-d)
if [ "$day" -lt 1 ] || [ "$day" -gt 7 ]; then
  exit 0
fi
exec /mnt/user/services/homelab-infra/ops/restore-tests/run-restore-job-with-ntfy.sh \
  vaultwarden homelab-info

Script 3 - restore-gitea-monthly

Cron:

  • 15 7 * * 6 (jeden Samstag 07:15)

Guard: nur am dritten Samstag im Monat ausfuehren.

#!/bin/bash
day=$(date +%-d)
if [ "$day" -lt 15 ] || [ "$day" -gt 21 ]; then
  exit 0
fi
exec /mnt/user/services/homelab-infra/ops/restore-tests/run-restore-job-with-ntfy.sh \
  gitea homelab-info

Script 4 - restore-paperless-bimonthly

Cron:

  • 0 8 * * 6 (jeden Samstag 08:00)

Guard: nur am zweiten Samstag in ungeraden Monaten ausfuehren.

#!/bin/bash
month=$(date +%-m)
day=$(date +%-d)
case "$month" in
  1|3|5|7|9|11) ;;
  *) exit 0 ;;
esac
if [ "$day" -lt 8 ] || [ "$day" -gt 14 ]; then
  exit 0
fi
exec /mnt/user/services/homelab-infra/ops/restore-tests/run-restore-job-with-ntfy.sh \
  paperless homelab-info

Script 5 - restore-immich-quarterly

Cron:

  • 30 8 * * 0 (jeden Sonntag 08:30)

Guard: nur am zweiten Sonntag in Feb/Mai/Aug/Nov ausfuehren.

#!/bin/bash
month=$(date +%-m)
day=$(date +%-d)
case "$month" in
  2|5|8|11) ;;
  *) exit 0 ;;
esac
if [ "$day" -lt 8 ] || [ "$day" -gt 14 ]; then
  exit 0
fi
exec /mnt/user/services/homelab-infra/ops/restore-tests/run-restore-job-with-ntfy.sh \
  immich homelab-info

Script 6 - restore-authelia-bimonthly

Cron:

  • 30 7 * * 6 (jeden Samstag 07:30)

Guard: nur am zweiten Samstag in geraden Monaten ausfuehren.

#!/bin/bash
month=$(date +%-m)
day=$(date +%-d)
case "$month" in
  2|4|6|8|10|12) ;;
  *) exit 0 ;;
esac
if [ "$day" -lt 8 ] || [ "$day" -gt 14 ]; then
  exit 0
fi
exec /mnt/user/services/homelab-infra/ops/restore-tests/run-restore-job-with-ntfy.sh \
  authelia homelab-info

Script 7 - monthly-random-restore

Cron:

  • 0 9 1 * * (erster Kalendertag im Monat 09:00) - kein Guard noetig.
#!/bin/bash
exec /mnt/user/services/homelab-infra/ops/restore-tests/monthly-random-restore.sh

Stand

  • die ersten Bash-Jobs wurden am 2026-05-07 hostseitig erfolgreich verifiziert
  • freshness, vaultwarden, gitea, paperless, immich und authelia sind als Host-Jobs verfuegbar
  • ntfy-Wrapper schreibt Erfolg/Fehler-Meldungen an die definierten Topics

Fehler-Topic

Fehler gehen unabhaengig vom Erfolgstopic nach homelab-alerts (siehe RESTORE_FAILURE_TOPIC im Wrapper), damit Restore-Probleme auf demselben Handy-Topic landen wie Prometheus-, Docker-, Borg- und Posture-Alarme.

Verwendete Hilfsskripte

  • ops/restore-tests/send-ntfy.sh
  • ops/restore-tests/run-restore-job-with-ntfy.sh
  • ops/restore-tests/run-restore-checks.sh