Proxmox Backup Server 3.2 added webhook notification targets as a first-class transport. This score gives Tempo a place to receive those notifications and attaches 10 one-click actions on each event — open the PBS UI, jump into datastores or the task list, SSH to the server, tail the task log remotely, copy details for an incident ticket.

No adapter on the Tempo side is required. You configure PBS to POST to Tempo, and Tempo does the rest.


Install

  1. Download proxmox-backup.tempo-score from the button above.
  2. Double-click it. Tempo opens a review sheet — click Install. The score is saved to ~/Library/Application Support/Tempo/Scores/proxmox-backup.tempo-score.
  3. In Tempo Settings → Ingestion, add a token named pbs bound to com.proxmox.backup. Copy the token — you’ll paste it into PBS in step 5.
  4. Note your Tempo endpoint: http://<your-mac-hostname>:7776/events (or 127.0.0.1 if Tempo is loopback-only).
  5. Configure PBS (see below).

PBS side — configure the webhook target

Datacenter → Notifications → Add → Webhook

FieldValue
Nametempo
URLhttp://your-mac.local:7776/events
MethodPOST
Disable(leave unchecked)

In Headers:

KeyValue
Content-Typeapplication/json
X-Tempo-Token<paste token from Tempo>

In Body, paste this template. The one line marked with // CHANGE ME is the only value you adjust for your setup.

{
  "title": "{{ title }}",
  "providerIdentifier": "com.proxmox.backup",
  "eventType": "alert",
  "metadata": {
    "hostname": "pbs.home.arpa",
    "severity": "{{ severity }}",
    "title": "{{ escape title }}",
    "message": "{{ escape message }}"
  }
}

Save the target. Then go to Datacenter → Notifications → Matchers and either add the new tempo target to the default matcher, or create a dedicated matcher that forwards all PBS events to tempo.

What PBS actually sends

PBS’ webhook template language is Handlebars. The variables this score relies on are:

Event categories in PBS that fire notifications by default include: backup success/failure, verification, garbage collection, sync jobs, prune jobs, tape operations, and package updates. Disable the ones you don’t want to see in Tempo from the PBS notification matcher, not from the score.

Actions provided (10 total)

GroupActions
PBS UIOpen PBS dashboard · Open datastore view · Open running tasks
ShellSSH to PBS · Ping PBS · Tail PBS task log (SSH)
ClipboardCopy hostname · Copy message
DocsPBS docs · Proxmox wiki

Customizing

Verifying

After step 5, trigger a test notification: Datacenter → Notifications → [tempo row] → Test (if available in your PBS version) or manually run a small backup job and wait for its completion notification.

Tempo’s live feed should show a new alert within a second or two. If not, run the troubleshooting checks below.


Troubleshooting

If the test notification doesn’t land in Tempo’s feed, run these five checks in order. Each narrows the problem to a specific layer (reachability, token, payload, process, history).

1. Is Tempo reachable from PBS? — SSH to PBS and run:

curl -v http://your-mac.local:7776/health

A 200 OK means reachability is fine. A timeout or “No route to host” is a network problem (firewall on the Mac, VLAN routing, Proxmox host firewall) — nothing after this point will work until it’s fixed.

2. Does the token work and does Tempo accept your payload shape? — still on PBS, send a synthetic event that mimics the webhook body template exactly:

curl -X POST http://your-mac.local:7776/events \
  -H 'Content-Type: application/json' \
  -H 'X-Tempo-Token: YOUR_TOKEN_HERE' \
  -d '{"title":"pbs probe","providerIdentifier":"com.proxmox.backup","eventType":"alert","metadata":{"hostname":"pbs.home.arpa","severity":"info","title":"pbs probe","message":"manual troubleshooting"}}'

A 200 or 202 with “pbs probe” appearing in Tempo’s feed means ingestion works end-to-end. A 401 means the token is wrong or not bound to com.proxmox.backup; a 422 means the JSON is malformed — usually because {{ escape }} was omitted and the real message contained a quote.

3. Are the packets actually reaching the Mac? — open Terminal on the Mac and watch inbound traffic:

sudo tcpdump -i any -A 'tcp port 7776 and src host pbs.home.arpa'

Then trigger a PBS notification. You should see HTTP POST traffic with the JSON body visible. If nothing appears, PBS is failing to reach the Mac even though step 1 succeeded — usually because PBS’ webhook URL is typo’d or the Proxmox host firewall is dropping outbound.

4. What is Tempo doing right now? — stream Tempo’s live logs:

log stream --predicate 'subsystem == "app.tempoapp.Tempo"' --level debug

Useful to watch the ingestion decision in real time: token lookup, validation, DB write.

5. What did Tempo see historically? — grep the rolling file log:

grep -h com.proxmox.backup ~/Library/Application\ Support/Tempo/Logs/tempo-*.log | tail -50

Every PBS event Tempo has touched appears here with timestamp and outcome. This is also what Settings → Help → Export diagnostics bundle packages up — if you’re asking for support, run step 5 first and attach the output.


References