Apprise¶
Apprise is a universal notification library that speaks Discord, Telegram, Matrix, Slack, Pushover, SMTP, and roughly seventy other targets through a single HTTP API. TraceApps posts to Apprise once; Apprise fans the message out to every destination you configured. Handy when you want the same notification in Discord and email and your ntfy topic without wiring three services into the app.
Setup¶
1. Run Apprise. The maintained image is caronc/apprise. Minimal compose:
services:
apprise:
image: caronc/apprise:latest
restart: unless-stopped
volumes:
- ./apprise/config:/config
ports:
- "8000:8000"
2. Give Apprise its targets. Drop a config.yml into ./apprise/config/ naming each destination. One tag can group several URLs so a single POST fans out to all of them:
urls:
- discord://webhook_id/webhook_token:
- tag: cooktrace
- mailto://user:pass@smtp.example.com:
- tag: cooktrace
- ntfys://ntfy.example.com/nutritrace:
- tag: nutritrace
The full URL grammar is on the Apprise wiki. Reload Apprise (docker compose restart apprise) after editing.
3. Point TraceApps at it. In the app, open Settings, Notifications:
- Set Push service to
Apprise. - Apprise Server URL: base URL of your Apprise instance, e.g.
http://apprise:8000if it is on the same docker network, orhttps://apprise.example.comif it sits behind your reverse proxy. The app appends/notifyinternally, so do not include a path. - Tag (optional): the tag you defined in
config.yml. Leave blank to send to all configured URLs.
The stored setting keys are notifPushService=apprise, appriseUrl, and appriseTag. Values live per user in user_settings and never leave the server after storage; the browser sends { title, message, priority } to POST /api/notify and the server posts the outbound call.
4. Test. Hit the "Send test" button next to the dropdown. A Test notification, push service connected message should land on every configured Apprise target within a second.
Priority mapping¶
TraceApps sends a numeric priority (1 to 8). Apprise doesn't have a native priority field, so the server maps priority >= 7 to Apprise type: warning and everything else to type: info. Individual notification services then map warning to whatever they support (Discord embed colour, Pushover priority, etc).