Bez popisu

Philipp Heckel 5f2bb4f876 Readme před 4 roky
assets 317621c696 Styling před 4 roky
cmd b145e693a5 Add firebase support před 4 roky
config 4b455e0fd8 Config file před 4 roky
examples 1321bf19dc Make things prettier, better sound, FAQ, icon in desktop notification před 4 roky
scripts e1c9fef6dc Makefile, Dockerfile, GoReleaser, config.yml, systemd service před 4 roky
server 91541f9c69 Add logo and color před 4 roky
util b145e693a5 Add firebase support před 4 roky
.gitignore e1c9fef6dc Makefile, Dockerfile, GoReleaser, config.yml, systemd service před 4 roky
.goreleaser.yml e1c9fef6dc Makefile, Dockerfile, GoReleaser, config.yml, systemd service před 4 roky
Dockerfile e1c9fef6dc Makefile, Dockerfile, GoReleaser, config.yml, systemd service před 4 roky
LICENSE e79b50f010 Initial commit před 4 roky
Makefile e1c9fef6dc Makefile, Dockerfile, GoReleaser, config.yml, systemd service před 4 roky
README.md 5f2bb4f876 Readme před 4 roky
go.mod ad17be1683 WIP: Firebase support před 4 roky
go.sum ad17be1683 WIP: Firebase support před 4 roky
main.go e1c9fef6dc Makefile, Dockerfile, GoReleaser, config.yml, systemd service před 4 roky

README.md

ntfy

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. No signups or cost.

Usage

Subscribe to a topic

Topics are created on the fly by subscribing to them. You can create and subscribe to a topic either in a web UI, or in your own app by subscribing to an SSE/EventSource, or a JSON or raw feed.

Because there is no sign-up, the topic is essentially a password, so pick something that's not easily guessable.

Here's how you can create a topic mytopic, subscribe to it topic and wait for events. This is using curl, but you can use any library that can do HTTP GETs:

# 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

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):

while read msg; do
  [ -n "$msg" ] && notify-send "$msg"
done < <(stdbuf -i0 -o0 curl -s ntfy.sh/mytopic/raw)

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

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.

Installation

Please check out the releases page for binaries and deb/rpm packages.

  1. Install ntfy using one of the methods described below
  2. Then (optionally) edit /etc/ntfy/config.yml
  3. Then just run it with ntfy (or systemctl start ntfy when using the deb/rpm).

Binaries and packages

Debian/Ubuntu (from a repository):

curl -sSL https://archive.heckel.io/apt/pubkey.txt | sudo apt-key add -
sudo apt install apt-transport-https
sudo sh -c "echo 'deb [arch=amd64] https://archive.heckel.io/apt debian main' > /etc/apt/sources.list.d/archive.heckel.io.list"  
sudo apt update
sudo apt install ntfy

Debian/Ubuntu (manual install):

sudo apt install tmux
wget https://github.com/binwiederhier/ntfy/releases/download/v1.1.2/ntfy_1.1.2_amd64.deb
dpkg -i ntfy_1.1.2_amd64.deb

Fedora/RHEL/CentOS:

rpm -ivh https://github.com/binwiederhier/ntfy/releases/download/v1.1.2/ntfy_1.1.2_amd64.rpm

Docker:

docker run --rm -it binwiederhier/ntfy

Go:

go get -u heckel.io/ntfy

Manual install (any x86_64-based Linux):

wget https://github.com/binwiederhier/ntfy/releases/download/v1.1.2/ntfy_1.1.2_linux_x86_64.tar.gz
sudo tar -C /usr/bin -zxf ntfy_1.1.2_linux_x86_64.tar.gz ntfy
./ntfy

Building

Building ntfy is simple. Here's how you do it:

make build-simple
# Builds to dist/ntfy_linux_amd64/ntfy

To build releases, I use GoReleaser. If you have that installed, you can run make build or make build-snapshot.

TODO

  • add HTTPS
  • make limits configurable
  • limit max number of subscriptions

Contributing

I welcome any and all contributions. Just create a PR or an issue.

License

Made with ❤️ by Philipp C. Heckel, distributed under the Apache License 2.0.

Third party libraries and resources: