2021-10-23 22:22:17 +03:00
|
|
|
# ntfy
|
2021-10-23 04:26:01 +03:00
|
|
|
|
2021-10-24 04:29:45 +03:00
|
|
|
ntfy (pronounce: *notify*) is a super simple pub-sub notification service. It allows you to send desktop and (soon) phone notifications
|
|
|
|
via scripts. I run a free version of it on *[ntfy.sh](https://ntfy.sh)*. **No signups or cost.**
|
2021-10-23 04:26:01 +03:00
|
|
|
|
2021-10-23 22:22:17 +03:00
|
|
|
## Usage
|
2021-10-23 04:26:01 +03:00
|
|
|
|
2021-10-23 22:22:17 +03:00
|
|
|
### Subscribe to a topic
|
2021-10-24 04:29:45 +03:00
|
|
|
You can subscribe to a topic either in a web UI, or in your own app by subscribing to an
|
|
|
|
[SSE](https://en.wikipedia.org/wiki/Server-sent_events)/[EventSource](https://developer.mozilla.org/en-US/docs/Web/API/EventSource),
|
|
|
|
or a JSON or raw feed.
|
2021-10-23 04:26:01 +03:00
|
|
|
|
2021-10-24 04:29:45 +03:00
|
|
|
Here's how to see the raw/json/sse stream in `curl`. This will subscribe to the topic and wait for events.
|
2021-10-23 22:22:17 +03:00
|
|
|
|
|
|
|
```
|
2021-10-24 04:29:45 +03:00
|
|
|
# Subscribe to "mytopic" and output one message per line (\n are replaced with a space)
|
|
|
|
curl -s ntfy.sh/mytopic/raw
|
|
|
|
|
|
|
|
# Subscribe to "mytopic" and output one JSON message per line
|
|
|
|
curl -s ntfy.sh/mytopic/json
|
|
|
|
|
|
|
|
# Subscribe to "mytopic" and output an SSE stream (supported via JS/EventSource)
|
|
|
|
curl -s ntfy.sh/mytopic/sse
|
2021-10-23 22:22:17 +03:00
|
|
|
```
|
|
|
|
|
2021-10-24 04:29:45 +03:00
|
|
|
You can easily script it to execute any command when a message arrives. This sends desktop notifications (just like
|
|
|
|
the web UI, but without it):
|
2021-10-23 22:22:17 +03:00
|
|
|
```
|
2021-10-24 04:29:45 +03:00
|
|
|
while read msg; do
|
2021-10-23 22:22:17 +03:00
|
|
|
notify-send "$msg"
|
2021-10-24 04:29:45 +03:00
|
|
|
done < <(stdbuf -i0 -o0 curl -s ntfy.sh/mytopic/raw)
|
2021-10-23 22:22:17 +03:00
|
|
|
```
|
|
|
|
|
|
|
|
### Publish messages
|
|
|
|
Publishing messages can be done via PUT or POST using. Here's an example using `curl`:
|
|
|
|
```
|
|
|
|
curl -d "long process is done" ntfy.sh/mytopic
|
|
|
|
```
|
|
|
|
|
2021-10-24 04:29:45 +03:00
|
|
|
Messages published to a non-existing topic or a topic without subscribers will not be delivered later. There is (currently)
|
|
|
|
no buffering of any kind. If you're not listening, the message won't be delivered.
|
|
|
|
|
|
|
|
## FAQ
|
|
|
|
|
|
|
|
### Isn't this like ...?
|
|
|
|
Probably. I didn't do a whole lot of research before making this.
|
|
|
|
|
|
|
|
### Can I use this in my app?
|
|
|
|
Yes. As long as you don't abuse it, it'll be available and free of charge.
|
|
|
|
|
|
|
|
### What are the uptime guarantees?
|
|
|
|
Best effort.
|
|
|
|
|
|
|
|
### Why is the web UI so ugly?
|
|
|
|
I don't particularly like JS or dealing with CSS. I'll make it pretty after it's functional.
|
|
|
|
|
2021-10-23 22:22:17 +03:00
|
|
|
## TODO
|
|
|
|
- rate limiting / abuse protection
|
|
|
|
- release/packaging
|
2021-10-24 04:29:45 +03:00
|
|
|
- add HTTPS
|
2021-10-23 22:22:17 +03:00
|
|
|
|
|
|
|
## Contributing
|
|
|
|
I welcome any and all contributions. Just create a PR or an issue.
|
|
|
|
|
|
|
|
## License
|
|
|
|
Made with ❤️ by [Philipp C. Heckel](https://heckel.io), distributed under the [Apache License 2.0](LICENSE).
|