Un noeud devient indisponible — le script bascule lui-même le domaine sur l’IP suivante du pool et vous en informe dans Telegram. Le trafic n’est pas interrompu, et vous n’avez pas à modifier le DNS manuellement.

Le script a été testé et débogué, il peut être utilisé en production. Il est fourni « tel quel ».

Pourquoi est-ce nécessaire#

Le scénario est familier à tous ceux qui travaillent avec le trafic :

  • Le site ou la page d’atterrissage cesse soudainement de répondre
  • La cause : le noeud est bloqué ou indisponible
  • Le trafic est perdu tant que vous ne modifiez pas manuellement l’enregistrement A dans Cloudflare

Désormais, cela se fait automatiquement.

Comment fonctionne l’automatisation#

Nous avons préparé un script PHP qui peut être exécuté via cron ou en tant que démon. Il effectue les opérations suivantes :

  • Vérifie la disponibilité du noeud via une URL définie (GET ou POST avec payload JSON).
  • Si aucune réponse correcte (200, 301, 302) n’est reçue dans les 5 secondes, le noeud est considéré comme indisponible.
  • Interroge la liste des enregistrements A dans Cloudflare via l’API.
  • Trouve l’IP actuelle et la remplace par la suivante du pool défini, de manière cyclique :
Pool : [1.1.1.1, 2.2.2.2, 3.3.3.3]
IP actuelle : 2.2.2.2 → nouvelle : 3.3.3.3
Si c'est la dernière → retour à la première
  • Met à jour l’enregistrement DNS via l’API Cloudflare.
  • Envoie une notification dans Telegram pour que vous soyez informé.

Ce que cela apporte#

  • Interruption minimale — l’IP change quelques secondes après la panne.
  • Mise à l’échelle simple — ajoutez au pool autant de noeuds que vous le souhaitez.
  • Autonomie totale — aucune modification manuelle du DNS.
  • Notifications Telegram — vous êtes informé de toutes les actions en temps réel.

Comment configurer#

  • Installez PHP >= 7.4.
  • Indiquez dans la configuration :
    • le domaine
    • le nom d’hôte (par exemple, node1.domain.com)
    • le Cloudflare API Token et le Zone ID
    • le pool d’adresses IP
    • le token du bot Telegram
    • le chat ID (voir ci-dessous)
  • Ajoutez l’appel du script dans le cron ou lancez-le en tant que service systemd.

Comment obtenir le chat ID Telegram#

Il existe deux méthodes simples :

Méthode 1 — via @userinfobot#
  • Ouvrez Telegram.
  • Trouvez le bot @userinfobot.
  • Lancez-le — il affichera immédiatement votre ID. C’est le chat_id recherché.
Méthode 2 — via votre propre bot#

Si vous souhaitez recevoir des notifications de votre propre bot :

  • Envoyez un message quelconque à votre bot.
  • Accédez au lien suivant en y insérant votre token :
https://api.telegram.org/bot<YOUR_BOT_TOKEN>/getUpdates

Trouvez dans la réponse JSON la ligne :

"chat": {
  "id": 123456789,
  ...
}

123456789 est votre chat_id.

Comment exécuter le script#

Choisissez la méthode qui vous convient :

1. Via cron#

Exécutez le script régulièrement, par exemple toutes les 2 minutes :

*/2 * * * * php /path/to/checker.php

Remplacez /path/to/checker.php par le chemin réel vers votre fichier.

2. Via le web (par HTTP)#

Placez le script sur un serveur accessible par URL, par exemple :

https://yourhost.com/tools/checker.php

Vous pouvez l’appeler :

  • depuis des systèmes de monitoring (UptimeRobot, Pingdom, HetrixTools)
  • depuis un pipeline CI/CD (GitLab CI, Jenkins)
  • depuis des systèmes d’automatisation (Home Assistant, Zabbix)
  • manuellement via un navigateur ou curl :
curl https://yourhost.com/tools/checker.php

Télécharger le script