Alarm aufs iPhone, wenn deine Website ausfällt

Aktualisiert am 5. Oktober 2026 3 Min. Lesezeit

Dass deine Website ausgefallen ist, willst du wissen, bevor ein Kunde es dir sagt. Dafür braucht es zweierlei: etwas, das die Website alle paar Minuten prüft, und etwas, das dir aufs Handy Bescheid gibt. Und zwar einmal, nicht alle fünf Minuten aufs Neue, bis du das Problem behoben hast.

Honk übernimmt den zweiten Teil. Deine Website prüft es nicht selbst, deshalb kombiniert diese Anleitung Honk mit einem Prüfer: einem kleinen Skript auf einem Rechner, der rund um die Uhr läuft, oder Uptime Kuma, falls du es schon nutzt.

Voraussetzungen

  • Ein Honk-Konto. Honk gibt es vorerst nur auf Einladung: Zugang anfragen.
  • Ein Projekt für deine Websites mit Ingest-Schlüssel: Öffne in der Web-App das Projekt, dann Schlüssel.
  • Ein Rechner, der rund um die Uhr läuft und nicht der Server ist, auf dem die Website liegt: ein kleiner VPS, ein Raspberry Pi, ein NAS. Eine Prüfung auf demselben Server fällt mit ihm aus.

Weg 1: ein Prüfskript und Cron

Installiere die honk-me-CLI (so geht’s) und trag HONK_URL und HONK_KEY in die Crontab ein, wie in der Cron-Anleitung. Speichere dann dieses Skript als /usr/local/bin/check-site und mach es ausführbar:

#!/usr/bin/env bash
# check-site <url> [text]: a Blast when the site is down, one recovery when it's back.
# Down means: no 2xx answer within 10 s (after 2 retries), or the page lacks the text.
set -uo pipefail
url=$1 text=${2:-}
host=$(printf '%s' "$url" | sed -E 's#^https?://##; s#/.*$##')
key="site/$host"
state="${XDG_STATE_HOME:-$HOME/.local/state}/check-site/$host.down"
mkdir -p "$(dirname "$state")"

if body=$(curl -fsS --max-time 10 --retry 2 --retry-delay 5 "$url" 2>&1) &&
  { [ -z "$text" ] || grep -qF -- "$text" <<<"$body"; }; then
  if [ -e "$state" ]; then
    honk-me recovery --group-key "$key" --source "$(hostname)" --category infrastructure \
      --title "$host is back" --message "$url answers again." || true
    rm -f "$state"
  fi
else
  # sent on every failed check while it's down: Honk folds them into calm updates
  honk-me problem --group-key "$key" --source "$(hostname)" --category infrastructure \
    --severity blast --title "$host is down" --message "$url
${body:0:600}" || true
  touch "$state"
fi

Das Skript wertet die Website als ausgefallen, wenn sie auch nach zwei Wiederholungen nicht innerhalb von 10 Sekunden erfolgreich antwortet oder wenn auf der Seite ein Text fehlt, den du vorgibst. Die zweite Prüfung erkennt den Fall „Website lädt, zeigt aber eine Fehlerseite“. Nimm dafür ein Wort, das nur erscheint, wenn die Seite wirklich funktioniert, etwa „In den Warenkorb“ in deinem Shop.

Lass es alle fünf Minuten laufen, mit einer Zeile pro Website:

*/5 * * * * /usr/local/bin/check-site https://shop.example.com/ "Add to cart"
*/5 * * * * /usr/local/bin/check-site https://www.example.com/

Was passiert, wenn der Shop ausfällt:

  • Die erste fehlgeschlagene Prüfung pusht ein Dauerhupen: „shop.example.com is down“, mit dem Fehler.
  • Jede weitere Prüfung während des Ausfalls sendet dasselbe Problem erneut. Honk bündelt sie in einer Gruppe und schickt höchstens alle 5 Minuten ein ruhiges Update mit Zähler.
  • Die erste erfolgreiche Prüfung gibt Entwarnung: „shop.example.com is back“. Der Vorfall wird geschlossen, und eine Live-Aktivität, die ihn angezeigt hat, wechselt auf „Behoben“.

Weg 2: Uptime Kuma

Uptime Kuma ist ein kostenloses Monitoring-Tool zum Selbsthosten. Sein Webhook kann das JSON für Honk direkt senden, weil sich der Body frei als Template gestalten lässt.

Öffne in Uptime Kuma Settings ▸ Notifications ▸ Setup Notification und wähle Webhook:

  • Post URL: https://honk-me.app/v1/messages
  • Request Body: Custom Body, mit diesem Template:
{
  "title": {% if heartbeatJSON.status == 1 %}{{ name | append: " is back" | json }}{% else %}{{ name | append: " is down" | json }}{% endif %},
  "message": {{ msg | json }},
  "severity": "{% if heartbeatJSON.status == 1 %}beep{% else %}blast{% endif %}",
  "event_type": "{% if heartbeatJSON.status == 1 %}recovery{% else %}problem{% endif %}",
  "group_key": "uptime/{{ monitorJSON.id }}",
  "source": "uptime-kuma",
  "category": "infrastructure"
}
  • Additional Headers:
{ "Authorization": "Bearer honk_…" }

Uptime Kuma meldet sich, wenn ein Monitor seinen Zustand ändert. Du bekommst also ein Problem, wenn eine Website ausfällt, und eine Entwarnung, wenn sie wieder da ist. Jeder Monitor hat seine eigene Gruppe. Das Custom-Body-Template braucht eine aktuelle Version von Uptime Kuma. Der Button Test sendet ein Beispielereignis, das du danach aus dem Posteingang löschen kannst.

Gehostete Uptime-Dienste

Viele gehostete Prüfdienste können einen Webhook aufrufen, senden aber in ihrem eigenen Format. Richte den Webhook auf n8n, Make oder Zapier und schick Honk ein problem, wenn die Prüfung fehlschlägt, und eine recovery, wenn sie wieder klappt, beide mit demselben group_key. Wie das HTTP-Modul in Make aussieht, zeigt die Formular-Anleitung.

Nachts geweckt werden

Ruhezeiten halten Pushes nachts zurück. Soll dich ein ausgefallener Shop trotzdem wecken, sende das Problem mit --priority urgent, erlaube dringende Ereignisse beim Ingest-Schlüssel dieses Projekts und lass sie auch in deinen Ruhezeiten durch. Behalte diese Erlaubnis den ein, zwei Websites vor, auf die es wirklich ankommt.

Honk gibt es vorerst nur auf Einladung: Zugang anfragen. Alles in dieser Anleitung funktioniert schon im Free-Tarif.