mistgate Документация

Наблюдатель панели

Настройте Cloudflare Worker, который проверяет панель раз в минуту и присылает уведомления о сбое и восстановлении в Telegram.

На этой странице

Наблюдатель панели — небольшой Cloudflare Worker, который раз в минуту проверяет публичный адрес панели. После трёх неудачных проверок подряд он отправляет одно сообщение в Telegram; когда панель снова отвечает, приходит одно сообщение о восстановлении с длительностью сбоя.

Если не задан хотя бы один из двух секретов Telegram, Worker ничего не делает.

Любой HTTP-статус ниже 500 считается ответом панели, в том числе её сайт-маска с кодом 404. Тайм-аут, ошибка соединения или TLS и любой ответ 5xx считаются сбоем. Worker не проксирует трафик, не меняет DNS и не добавляет маршрут на домен панели. Его публичный обработчик fetch всегда отвечает 404, а workers_dev выключен.

Запросы и стоимость#

Расписание запускается раз в минуту: 1 440 проверок в день, по одному запросу к панели и одному чтению KV на проверку. KV записывается только при изменении счётчика ошибок или состояния «сбой / восстановление»; на успешных проверках и во время долгого сбоя после порога записи нет.

Настройка#

Выполните команды из deploy/cloudflare-watcher:

  1. Скопируйте пример и создайте пространство KV:

    sh
    cp wrangler.toml.example wrangler.toml
    wrangler kv namespace create WATCH
  2. Вставьте выданный Wrangler ID пространства в wrangler.toml, в секцию [[kv_namespaces]].

  3. Задайте HEALTH_URL — публичный адрес панели, например https://panel.example.com/. Достаточно страницы-маски; не указывайте закрытый адрес.

  4. При необходимости задайте в [vars] HEALTH_TIMEOUT_MS (по умолчанию 8000), ALERT_AFTER (по умолчанию 3 неудачные проверки подряд), ALERT_NAME (по умолчанию Mistgate panel) и ALERT_LANG (en или ru, по умолчанию en).

  5. Добавьте токен Telegram-бота как секрет:

    sh
    wrangler secret put TELEGRAM_BOT_TOKEN

    Используйте того же бота, что и для алертов панели. Токен можно взять у BotFather; панель его больше не показывает.

  6. Возьмите ID чата из собственной привязанной карточки в разделе Интеграции → Алерты в Telegram и добавьте его как секрет:

    sh
    wrangler secret put TELEGRAM_CHAT_ID
  7. Установите зависимости и разверните Worker:

    sh
    pnpm install
    wrangler deploy

Worker вызывает только метод Telegram sendMessage. Он не опрашивает бота и не настраивает webhook, поэтому панель продолжает получать сообщения для привязки чата.

Проверка уведомлений#

На три минуты временно укажите в HEALTH_URL закрытый порт публичного хоста панели или остановите панель. После трёх проверок подряд Worker должен прислать уведомление о сбое. Верните исходный адрес или запустите панель; следующая успешная проверка должна прислать сообщение о восстановлении. После проверки верните прежнее значение HEALTH_URL.

Править страницу на GitHub