From 008ab9bc4a5118910711658d2fe94d26087ed223 Mon Sep 17 00:00:00 2001 From: Micha Date: Thu, 7 May 2026 11:26:15 +0200 Subject: [PATCH] Add ntfy wrapper for restore jobs --- docs/RESTORE_HANDBOOK.md | 6 +++++ ops/restore-tests/automation-plan.md | 7 ++++++ .../run-restore-job-with-ntfy.sh | 23 +++++++++++++++++++ ops/restore-tests/send-ntfy.sh | 20 ++++++++++++++++ ops/restore-tests/unraid-user-scripts.md | 16 ++++++------- 5 files changed, 64 insertions(+), 8 deletions(-) create mode 100644 ops/restore-tests/run-restore-job-with-ntfy.sh create mode 100644 ops/restore-tests/send-ntfy.sh diff --git a/docs/RESTORE_HANDBOOK.md b/docs/RESTORE_HANDBOOK.md index e8199ac..08d7736 100644 --- a/docs/RESTORE_HANDBOOK.md +++ b/docs/RESTORE_HANDBOOK.md @@ -190,6 +190,12 @@ bash /mnt/user/services/homelab/ops/restore-tests/run-restore-checks.sh gitea bash /mnt/user/services/homelab/ops/restore-tests/run-restore-checks.sh paperless ``` +### Optional mit `ntfy` + +```bash +bash /mnt/user/services/homelab/ops/restore-tests/run-restore-job-with-ntfy.sh freshness homelab-restore +``` + --- ## 11. Naechste Ausbaustufen diff --git a/ops/restore-tests/automation-plan.md b/ops/restore-tests/automation-plan.md index d9f3980..873337b 100644 --- a/ops/restore-tests/automation-plan.md +++ b/ops/restore-tests/automation-plan.md @@ -41,6 +41,13 @@ Die bereits validierten Restore-Tests fuer `vaultwarden`, `gitea` und `paperless - optional Hermes-Zusammenfassung ueber vorhandene Reports - spaeter Job-Metadaten, Rotation und Sammel-Reports weiter ausbauen +### `ntfy`-Muster + +- Script: `run-restore-job-with-ntfy.sh` +- Hilfsskript: `send-ntfy.sh` +- nur kurze Erfolg/Fehler-Meldung +- eigentlicher Detailnachweis bleibt die Markdown-Reportdatei + ## Host-Integration Empfohlen: diff --git a/ops/restore-tests/run-restore-job-with-ntfy.sh b/ops/restore-tests/run-restore-job-with-ntfy.sh new file mode 100644 index 0000000..9180d55 --- /dev/null +++ b/ops/restore-tests/run-restore-job-with-ntfy.sh @@ -0,0 +1,23 @@ +#!/bin/bash +set -euo pipefail + +SCRIPT_DIR="$(cd "$(dirname "$0")" && pwd)" +MODE="${1:-}" +TOPIC="${2:-homelab-restore}" + +if [ -z "$MODE" ]; then + echo "Usage: $0 [topic]" >&2 + exit 1 +fi + +REPORT_ROOT="/mnt/user/backups/restore-reports" +REPORT_FILE="$REPORT_ROOT/${MODE}-$(date +%F).md" + +mkdir -p "$REPORT_ROOT" + +if "$SCRIPT_DIR/run-restore-checks.sh" "$MODE" > "$REPORT_FILE"; then + "$SCRIPT_DIR/send-ntfy.sh" "$TOPIC" "Restore job ok: $MODE" "Restore job succeeded. Report: $REPORT_FILE" default || true +else + "$SCRIPT_DIR/send-ntfy.sh" "$TOPIC" "Restore job failed: $MODE" "Restore job failed. Report: $REPORT_FILE" high || true + exit 1 +fi diff --git a/ops/restore-tests/send-ntfy.sh b/ops/restore-tests/send-ntfy.sh new file mode 100644 index 0000000..ac5d19c --- /dev/null +++ b/ops/restore-tests/send-ntfy.sh @@ -0,0 +1,20 @@ +#!/bin/bash +set -euo pipefail + +TOPIC="${1:-}" +TITLE="${2:-}" +MESSAGE="${3:-}" +PRIORITY="${4:-default}" + +if [ -z "$TOPIC" ] || [ -z "$TITLE" ] || [ -z "$MESSAGE" ]; then + echo "Usage: $0 <message> [priority]" >&2 + exit 1 +fi + +NTFY_URL="${NTFY_URL:-https://ntfy.kaleschke.info}" + +curl -fsS \ + -H "Title: $TITLE" \ + -H "Priority: $PRIORITY" \ + -d "$MESSAGE" \ + "$NTFY_URL/$TOPIC" >/dev/null diff --git a/ops/restore-tests/unraid-user-scripts.md b/ops/restore-tests/unraid-user-scripts.md index 4375117..d520826 100644 --- a/ops/restore-tests/unraid-user-scripts.md +++ b/ops/restore-tests/unraid-user-scripts.md @@ -76,7 +76,7 @@ bash /mnt/user/services/homelab/ops/restore-tests/run-restore-checks.sh paperles - die Bash-Jobs wurden am 2026-05-07 hostseitig erfolgreich verifiziert - `freshness`, `vaultwarden`, `gitea` und `paperless` laufen damit prinzipiell automatisch -- `ntfy` kommt erst als naechster Ausbau +- `ntfy` kann jetzt optional per Wrapper-Skript ergaenzt werden ## V2 Zielbild @@ -91,16 +91,16 @@ Als naechster Ausbau kommen dazu: ## Optionales `ntfy` Wrapper-Muster -Wenn `ntfy` spaeter dazukommt, soll der Host-Job nur Erfolg/Fehler referenzieren, nicht den ganzen Report in die Nachricht kippen. +Wenn `ntfy` genutzt wird, soll der Host-Job nur Erfolg/Fehler referenzieren, nicht den ganzen Report in die Nachricht kippen. Beispiel: ```bash #!/bin/bash -REPORT="/mnt/user/backups/restore-reports/freshness-$(date +%F).md" -if bash /mnt/user/services/homelab/ops/restore-tests/run-restore-checks.sh freshness > "$REPORT"; then - echo "Restore freshness check ok: $REPORT" -else - echo "Restore freshness check failed: $REPORT" -fi +bash /mnt/user/services/homelab/ops/restore-tests/run-restore-job-with-ntfy.sh freshness homelab-restore ``` + +Verwendete Hilfsskripte: + +- `ops/restore-tests/send-ntfy.sh` +- `ops/restore-tests/run-restore-job-with-ntfy.sh`