All apps

notifio

Telegram and email notifications from one POST

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

Shell
# 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.

More apps