I use ntfy (on another instance) + healthchecks.io to wake me up at night when ntfy.sh is down (crazy inception, right?). It’s the “poor man’s PagerDuty” if you will. It works amazingly.

Here’s how I set it up:

  • I signed up healthchecks.io (free plan) and configured a project for “ntfy.sh” with a “ntfy” integration, i.e. publish to ntfy.example.com/<secret> with max priority
  • I have two different hosts execute small “integration ntfy.sh tests” and only ping healthchecks.io if they succeed. If they don’t healthchecks.io will publish to ntfy.example.com/<secret>
  • In the ntfy Android app, I subscribe to ntfy.example.com/<secret>, enable “Keep alerting on highest priority”, and make it override DND (do not disturb) for this topic.

Now when ntfy.sh goes down, the integration tests in the cronjobs will fail, and so healthchecks.io will not be pinged, which will trigger it to publish to ntfy.example.com/<secret> and let my phone consistently ring until I acknowledge it.