Telegram-бот для мониторинга изменений в Cloudflare: DNS, SSL, WAF, Workers, Load Balancers, аудит-лог и др.
- Открой Telegram, найди @BotFather
- Отправь команду
/newbot - Придумай имя бота (например:
My CF Alert Bot) - Придумай username бота — должен заканчиваться на
bot(например:mycfalert_bot) - BotFather выдаст токен вида
123456789:AAFxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx— сохрани его
- Найди своего бота в Telegram и нажми Start
- Открой в браузере:
https://api.telegram.org/bot<ТВОЙ_ТОКЕН>/getUpdates - В ответе найди поле
"chat": {"id": 123456789}— это и есть твойALERT_CHAT_ID
- Добавь бота в группу
- Напиши любое сообщение в группе
- Открой в браузере:
https://api.telegram.org/bot<ТВОЙ_ТОКЕН>/getUpdates - Найди поле
"chat": {"id": -1001234567890}— ID группы отрицательный и начинается с-
💡 Если
getUpdatesвернул пустой массив — сначала напиши боту или в группу, затем обнови страницу.
Ключ используется для шифрования Cloudflare API-токенов в базе данных. Сгенерируй его один раз и сохрани:
python -c "from cryptography.fernet import Fernet; print(Fernet.generate_key().decode())"
Скопируй полученную строку — это твой TOKEN_ENCRYPTION_KEY.
⚠️ Не теряй этот ключ. Если он будет утерян или заменён — все сохранённые CF-токены станут нечитаемы и их придётся добавлять заново.
Создай файл .env рядом с docker-compose.yaml и заполни его:
# Обязательные переменные
TELEGRAM_TOKEN=123456789:AAFxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
ALERT_CHAT_ID=123456789
TOKEN_ENCRYPTION_KEY=ваш-сгенерированный-ключ-из-шага-3
# Опционально — SOCKS5-прокси (если Telegram недоступен напрямую)
# SOCKS5_PROXY=socks5://user:password@host:1080
DATABASE_URLуказывать в.envне нужно — он задаётся внутриdocker-compose.yamlавтоматически.
| Переменная | Обязательная | По умолчанию | Описание |
|---|---|---|---|
TELEGRAM_TOKEN |
✅ | — | Токен бота от BotFather |
ALERT_CHAT_ID |
✅ | — | ID чата или пользователя для алертов |
TOKEN_ENCRYPTION_KEY |
✅ | — | Ключ шифрования CF-токенов в БД |
SOCKS5_PROXY |
❌ | — | SOCKS5-прокси для Telegram API |
MONITOR_INTERVAL_AUDIT |
❌ | 120 |
Интервал проверки аудит-лога (сек) |
MONITOR_INTERVAL_DNS |
❌ | 300 |
Интервал проверки DNS (сек) |
MONITOR_INTERVAL_REDIRECTS |
❌ | 300 |
Интервал проверки редиректов (сек) |
MONITOR_INTERVAL_WORKERS |
❌ | 300 |
Интервал проверки Workers (сек) |
MONITOR_INTERVAL_SSL |
❌ | 300 |
Интервал проверки SSL (сек) |
MONITOR_INTERVAL_WAF |
❌ | 600 |
Интервал проверки WAF (сек) |
MONITOR_INTERVAL_LB |
❌ | 600 |
Интервал проверки Load Balancers (сек) |
MONITOR_INTERVAL_ZONES |
❌ | 600 |
Интервал обновления кэша зон (сек) |
docker compose up -d --buildПри первом запуске автоматически:
- Поднимается PostgreSQL
- Применяются миграции Alembic (
alembic upgrade head) - Запускается бот
# Посмотреть логи бота в реальном времени
docker compose logs -f bot
# Остановить все контейнеры
docker compose down
# Остановить и удалить данные БД (полный сброс)
docker compose down -vПосле запуска найди своего бота в Telegram и отправь /start — бот должен ответить.
Затем добавь свои Cloudflare API-токены через меню бота, и мониторинг начнёт работать автоматически.