Настройка Telegram Webhook через Cloudflare Tunnel (macOS)
Эта инструкция позволяет быстро пробросить локальный сервер в интернет с помощью cloudflared и подключить Telegram Webhook для разработки и тестирования бота.
Инструкция от сообщества
Способ установки предложен пользователем Telegram-сообщества. Автор бота для технической поддержки не проверял работу данного метода.
Инструкцию подготовил: @Flatroy
Требования
- macOS
- Установленный Homebrew
- Telegram-бот с токеном
- Локально запущенный проект (например,
http://localhost:8000)
Шаг 1 — Установка cloudflared
Откройте терминал и выполните:
brew install cloudflaredПроверьте установку:
cloudflared --versionШаг 2 — Запуск локального сервера
Убедитесь, что проект уже запущен локально. Если используете другой порт — подставьте его в последующих командах вместо 8000.
Шаг 3 — Создание публичного туннеля
Запустите туннель:
cloudflared tunnel --url http://localhost:8000После запуска в терминале появится публичный адрес вида:
https://something-random.trycloudflare.comСкопируйте его — он понадобится в следующем шаге.
WARNING
Cloudflare генерирует новый URL при каждом запуске туннеля. При перезапуске потребуется заново регистрировать webhook. Для постоянного URL настройте именованный туннель: cloudflared tunnel login + cloudflared tunnel create.
Шаг 4 — Формирование URL вебхука
Возьмите значение secret_token из файла .env:
TELEGRAM_SECRET_KEY=ваш_секретный_ключСформируйте URL вебхука, подставив свой домен и секретный ключ:
https://<домен>.trycloudflare.com/api/telegram/bot&max_connections=45&drop_pending_updates=true&secret_token=<секретный_ключ>Шаг 5 — Регистрация webhook в Telegram
Откройте в браузере следующий URL, подставив токен бота и URL из шага 4:
https://api.telegram.org/bot<ТОКЕН>/setWebhook?url=https://<домен>.trycloudflare.com/api/telegram/bot&max_connections=45&drop_pending_updates=true&secret_token=<секретный_ключ>При успешной регистрации Telegram API вернёт:
{
"ok": true,
"result": true,
"description": "Webhook was set"
}Шаг 6 — Проверка статуса webhook
https://api.telegram.org/bot<ТОКЕН>/getWebhookInfoОжидаемый ответ:
{
"ok": true,
"result": {
"url": "https://...",
"pending_update_count": 0
}
}Устранение неполадок
Если бот не отвечает на сообщения — проверьте по списку:
- Порт в команде
cloudflaredсовпадает с портом локального сервера - Значение
secret_tokenв URL совпадает со значением в.env - Локальный сервер запущен и доступен по
http://localhost:8000 - Туннель активен — проверьте вывод в терминале
- Посмотрите логи cloudflared на наличие ошибок