Docs menu

Proxmox VE

Proxmox VE (8.3 and later) has webhook notification targets with a fully templatable body, so backup results, replication failures, fencing events and update notices can land on your phone as Pinglet push. No glue service needed.

Setup

In the web UI, go to Datacenter → Notifications → Notification Targets → Add → Webhook:

Setting Value
URL https://pinglet.dev/acme/proxmox
Method POST
Header Content-Type: application/json
Header Authorization: Bearer {{ secrets.apikey }}
Secret apikey = pinglet_<your key>
Body see below
{
  "title": "Proxmox: {{ fields.hostname }}",
  "message": "{{ escape title }}",
  "level": "{{#if (eq severity "error")}}error{{else}}{{#if (eq fields.type "vzdump")}}success{{else}}info{{/if}}{{/if}}",
  "priority": "{{#if (eq severity "error")}}urgent{{else}}silent{{/if}}",
  "badges": { "type": "{{ fields.type }}" }
}

Replace acme/proxmox with your namespace and preferred topic name. The topic is created on the first notification. Storing the key as a webhook secret keeps it out of the world-readable notification config; secrets live in a root-only file.

Then point a notification matcher at the target (Datacenter → Notifications → Notification Matchers). A new matcher with no match rules sends it every notification and leaves the default email matcher as it is. Use Test on the target to check the wiring, then subscribe to the topic in the Pinglet app using the share link from your dashboard.

Backup jobs created on older releases may still use legacy email notifications, which bypass matchers and targets. Under Datacenter → Backup, check each job uses the notification system.

What arrives

The body maps Proxmox’s severity to Pinglet’s level and priority, so one target covers every event:

Proxmox event fields.type Level Priority
Backup failed vzdump error urgent
Replication job failed replication error urgent
Node fenced fencing error urgent
Backup succeeded vzdump success silent
Updates available, mail for root package-updates, system-mail info silent

The push message is Proxmox’s notification title, for example vzdump backup status (pve1.lan): backup failed: storage 'nas' is not online, not its full body. See the notes below for why.

Backup heartbeat

A failed backup notifies; a backup that never runs (node off, job disabled) doesn’t. Webhook targets can send a GET, so a successful backup can check in to a heartbeat topic directly. Add a second webhook target:

Setting Value
Method GET
URL https://pinglet.dev/v1/ping/{{ secrets.token }}
Secret token = the token from the heartbeat’s check-in URL

Route to it with a matcher whose rules are all of: match field type = vzdump, and match severity info. To watch one job of several, also match field job-id (only scheduled jobs set it).

Notes

  • {{ escape ... }} JSON-escapes a value, quotes and newlines included, so free text can’t break the body. Use it for any free-text field.
  • The body sends {{ title }} rather than {{ message }} on purpose. A backup notification’s message holds a table of every guest plus the full log of each, which for more than a handful of guests is far bigger than a push notification can carry. The full log stays in the task history, and in the email if you keep the default matcher.