Self-Hosted Push Notifications with ntfy and the *arr Stack

Notifications from my media stack, with no Discord and no cloud.

Self-Hosted Push Notifications with ntfy and the *arr Stack

I wanted to know when my media stack grabbed something, without routing my notifications through Discord or a third-party push service. The answer was ntfy, self-hosted.

ntfy in a container

ntfy is a dead-simple pub/sub notification server: publish to a topic over HTTP, subscribe from a phone or browser app. Self-hosted, it's one container behind Traefik. I set it to deny-all by default with a single user scoped to one topic, so it isn't an open relay.

Wiring up the *arr apps

Sonarr, Radarr, Lidarr and Readarr all have a native ntfy connection under Settings → Connect. Point it at the server, set the topic, pick your events (grab / import / upgrade / health), done.

The gotcha that cost me an hour

Creating the connection via the API kept failing with:

Unable to send test message: Value cannot be null. (Parameter 'source')

The *arr ntfy connector calls .Select() on its Tags field, and if you omit that field it's null, so the whole request throws. The fix: include an empty tags array in the payload even if you don't use tags. Once I did, every test message went straight to my phone.

No Discord, no cloud, no monthly anything. Just my own little notification bus.

Subscribe to Just another Geek

Don’t miss out on the latest issues. Sign up now to get access to the library of members-only issues.
jamie@example.com
Subscribe