About notifio
notifio turns an HTTP POST into a notification. You list channels in a config file, each one a Telegram bot or an SMTP relay, and mint a token for a channel. Anything holding that token can send a message with one request, without knowing either protocol or holding the bot token or the mail password.
The token decides where a message goes. Each token is issued for one channel, and a channel can pin its recipient and sender so a caller can't change them. A leaked token reaches one destination, and sending notifications somewhere else is a change to the config, not to every app that sends them.
- Plain text, HTML or Markdown, with attachments. Markdown is rendered to suit each channel.
- JSON, form or multipart requests.
- A GitHub Action for sending from CI.
- It only sends: no queue, no retries, no record beyond the log.
Run it
# channels go in ./notifio/config.json: notifio won't start without it
docker run -d --name notifio \
-v "$PWD/notifio:/data" \
-p 8080:80 \
ghcr.io/reeywhaar/notifio:latest
# mint a token for the "alerts" channel, then send
TOKEN=$(docker exec notifio notifio token add grafana alerts)
curl -X POST http://localhost:8080/api/send \
-H "Authorization: Bearer $TOKEN" \
--data-urlencode 'body=Disk at 91%'
Configuration, backups and the rest are in the README.