Skip to content

team396dev/cf-alert

Repository files navigation

CF Alert Bot

Telegram-бот для мониторинга изменений в Cloudflare: DNS, SSL, WAF, Workers, Load Balancers, аудит-лог и др.


🚀 Инструкция по развёртыванию

1. Создание Telegram-бота

  1. Открой Telegram, найди @BotFather
  2. Отправь команду /newbot
  3. Придумай имя бота (например: My CF Alert Bot)
  4. Придумай username бота — должен заканчиваться на bot (например: mycfalert_bot)
  5. BotFather выдаст токен вида 123456789:AAFxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx — сохрани его

2. Получение ALERT_CHAT_ID

Вариант А — личные сообщения с ботом:

  1. Найди своего бота в Telegram и нажми Start
  2. Открой в браузере:
    https://api.telegram.org/bot<ТВОЙ_ТОКЕН>/getUpdates
    
  3. В ответе найди поле "chat": {"id": 123456789} — это и есть твой ALERT_CHAT_ID

Вариант Б — группа:

  1. Добавь бота в группу
  2. Напиши любое сообщение в группе
  3. Открой в браузере:
    https://api.telegram.org/bot<ТВОЙ_ТОКЕН>/getUpdates
    
  4. Найди поле "chat": {"id": -1001234567890} — ID группы отрицательный и начинается с -

💡 Если getUpdates вернул пустой массив — сначала напиши боту или в группу, затем обнови страницу.


3. Генерация ключа шифрования TOKEN_ENCRYPTION_KEY

Ключ используется для шифрования Cloudflare API-токенов в базе данных. Сгенерируй его один раз и сохрани:

python -c "from cryptography.fernet import Fernet; print(Fernet.generate_key().decode())"

Скопируй полученную строку — это твой TOKEN_ENCRYPTION_KEY.

⚠️ Не теряй этот ключ. Если он будет утерян или заменён — все сохранённые CF-токены станут нечитаемы и их придётся добавлять заново.


4. Создание файла .env

Создай файл .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 Интервал обновления кэша зон (сек)

5. Запуск через Docker Compose

docker compose up -d --build

При первом запуске автоматически:

  • Поднимается PostgreSQL
  • Применяются миграции Alembic (alembic upgrade head)
  • Запускается бот

Полезные команды:

# Посмотреть логи бота в реальном времени
docker compose logs -f bot

# Остановить все контейнеры
docker compose down

# Остановить и удалить данные БД (полный сброс)
docker compose down -v

6. Проверка работы

После запуска найди своего бота в Telegram и отправь /start — бот должен ответить.

Затем добавь свои Cloudflare API-токены через меню бота, и мониторинг начнёт работать автоматически.

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages