Alertes de site en panne sur votre iPhone

Mis à jour le 5 octobre 2026 3 min de lecture

Mieux vaut apprendre que votre site est en panne avant qu’un client ne vous le signale. Il faut pour cela deux choses : un outil qui vérifie le site toutes les quelques minutes, et un autre qui prévient votre téléphone, une seule fois, sans le répéter toutes les cinq minutes jusqu’à la réparation.

Honk est le second. Il ne visite pas votre site de lui-même : ce guide l’associe donc à un outil de vérification, soit un petit script sur une machine toujours allumée, soit Uptime Kuma si vous l’utilisez déjà.

Avant de commencer

  • Un compte Honk. Honk est pour l’instant sur invitation : demandez un accès.
  • Un projet pour vos sites, avec une clé d’ingestion : dans l’app web, ouvrez le projet, puis Clés.
  • Une machine toujours allumée, qui n’est pas le serveur du site : un petit VPS, un Raspberry Pi, un NAS. Une vérification lancée sur le même serveur tomberait avec lui.

Méthode 1 : un script de vérification et cron

Installez la CLI honk-me (comment faire) et placez HONK_URL et HONK_KEY dans la crontab, comme dans le guide cron. Enregistrez ensuite ce script sous /usr/local/bin/check-site et rendez-le exécutable :

#!/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

Le script considère le site comme en panne s’il ne répond pas correctement en moins de 10 secondes, après deux nouvelles tentatives, ou si la page ne contient pas un texte que vous choisissez. Ce second critère couvre le cas du site qui se charge mais affiche une page d’erreur : choisissez un texte qui n’apparaît que si la page fonctionne vraiment, comme le bouton « Ajouter au panier » de votre boutique.

Lancez-le toutes les cinq minutes, une ligne par site :

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

Quand la boutique tombe en panne :

  • La première vérification en échec envoie un Klaxon continu intitulé « shop.example.com is down », avec l’erreur.
  • Tant que la panne dure, chaque vérification renvoie le même problème. Honk les regroupe et envoie au plus une mise à jour discrète toutes les 5 minutes, avec un compteur.
  • La première vérification réussie envoie un rétablissement intitulé « shop.example.com is back ». L’incident est clos et, si une Activité en direct l’affichait, elle passe à « Rétabli ».

Méthode 2 : Uptime Kuma

Uptime Kuma est un outil de surveillance gratuit et auto-hébergé. Ses notifications webhook peuvent envoyer directement le JSON attendu par Honk, car le corps de la requête est un modèle personnalisable.

Dans Uptime Kuma, ouvrez Settings ▸ Notifications ▸ Setup Notification et choisissez Webhook :

  • Post URL : https://honk-me.app/v1/messages
  • Request Body : Custom Body, avec ce modèle :
{
  "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 envoie une notification quand une sonde change d’état : vous recevez un problème quand un site tombe et un rétablissement quand il revient. Chaque sonde a son propre groupe. Le corps personnalisé demande une version récente d’Uptime Kuma. Le bouton Test envoie un événement d’exemple, que vous pourrez supprimer de la boîte de réception.

Services de surveillance hébergés

Beaucoup de services hébergés savent appeler un webhook, mais avec leur propre format. Faites-le pointer vers n8n, Make ou Zapier, puis envoyez à Honk un problem quand la vérification échoue et un recovery quand elle réussit, avec la même group_key pour les deux. Le guide des formulaires montre le module HTTP de Make.

Être réveillé en cas de panne

La nuit, les heures calmes retiennent les push. Si une panne de la boutique doit vous réveiller, envoyez le problème avec --priority urgent, puis autorisez les messages urgents sur la clé d’ingestion du projet et dans vos heures calmes. Réservez-le à un ou deux sites vraiment essentiels.

Pour l’instant, Honk est sur invitation : demandez un accès. Tout ce guide fonctionne avec le forfait Free.