Files
memory/patterns/pve-notification-webhook.md

23 lines
1.2 KiB
Markdown

# PAT-011 — PVE Webhook Notifications Pipeline Repair
**Trigger**: PVE notifications (esp. vzdump) reach Telegram not / test returns 500.
**Signature diagnosis ladder**:
1. `pvesh create /cluster/notifications/targets/<name>/test` — error taxonomy:
- `Connection refused` → transport/down (check URL target alive)
- `failed to render webhook body` → template broken (syntax/base64)
- `http status: 400` → bridge rejected payload (escaping!)
2. Listener-Sweep über VLAN: `for ip in .xx…; do /dev/tcp/$ip/port probe; done`
3. Byte-Level-Truth via temp mini-sniffer (redirect URL, capture, restore!).
**Hard rules**:
- Mutations an `/etc/pve/notifications.cfg` NUR via `pvesh set` (hand-edits poison
global deserialization!). Vorher Snapshot.
- `body`/header-values/secrets = **base64 blobs**: `printf '%s' tpl | base64 -w0`.
- Handlebars helpers: `{{escape title}}` (Space!), NICHT `{{escape:title}}`.
- Immer `{{escape title}}`/`{{escape message}}` verwenden — rohe Interpolation bricht
bei Apostrophen/Multiline (Backup-Reports!).
- Sniffer-Redirect URL IMMER restaurieren.
Reference: `docs/solutions/bug-fixes/2026-09-30-pve-webhook-notifications-drift-base64-escape.md`