Getting started
Install Rabun.sh, start the hub, and send the first notification.
You will have a live hub and a toast on this machine — or on a phone — by the end of this page.
The source of truth is the Rabun.sh repository.
Install
Clone and install with Cargo. On Debian or Ubuntu you need pkg-config, libssl-dev, and build-essential. Rust 1.85 or newer.
git clone https://github.com/Burton-Workspaces/rabun-sh.git
cd rabun-sh
cargo install --path . --locked
rabun-sh --versionInit and serve
rabun-sh init
cp .env.example .env
rabun-sh check
rabun-sh serve
init writes rabun-sh.toml, .env.example (environment names, not tokens), and data/vapid.pem for Web Push. The hub listens on http://127.0.0.1:2586/ by default.
Pick a topic
The topic name is the password. Generate an unguessable one:
rabun-sh topic backups
Or open http://127.0.0.1:2586/ and click Generate. Leave that tab subscribed.
Publish
From another terminal:
curl -d "Backup successful" \
-H "Title: NAS" \
-H "Priority: high" \
-H "Tags: white_check_mark" \
http://127.0.0.1:2586/your-topic
Same thing with the CLI:
rabun-sh publish backups "done" --title Backup --priority high
The live list on the web page should show the message. On a desktop you can also subscribe without a browser:
rabun-sh subscribe backups --notifyPhone
On the web page, click Enable phone push and allow notifications. Install the page as a PWA if you want background push on a phone.
Or point the official ntfy Android or iOS app at the same origin, subscribe to the topic, and turn on instant delivery. If the phone is not on localhost, set RABUN_SH_BASE_URL in .env to the public HTTPS origin and restart serve.
Optional write token
When RABUN_SH_AUTH_TOKEN is unset, topics are open — the same model as public ntfy.sh. When it is set, publish needs Authorization: Bearer … (or Basic with an empty username). Subscribe stays open unless you set require_auth_read = true in the config.
Production
Pack the checkout and deploy over SSH. The public origin in the repository deploy notes is a Caddy virtual host plus a systemd unit beside Rabun.
./deploy/ubuntu/push.sh --pack --bootstrap --domain sh.example.com --env .env user@HOST
Put RABUN_SH_AUTH_TOKEN and RABUN_SH_BASE_URL in that process’s env file.
Next: architecture on GitHub, or browse the source.