· ~1 мин чтения · Пантюхов Роман Владимирович
Telegram недоступен с российского сервера: как настроить релей и не нарушить 152-ФЗ
Для сайта компании, которая собирает персональные данные россиян, нужен сервер в России — это требование закона о локализации. Но на таком сервере Telegram может оказаться недоступным: запросы к api.telegram.org повисают, а Telegram не может достучаться до адреса вебхука. Именно с этим я столкнулся, когда подключал к сайту бота для уведомлений о заявках.
Как распознать проблему
Симптомы: бот не отвечает на команду /start, в ответе метода getWebhookInfo видна ошибка «Connection timed out» и растёт счётчик необработанных обновлений, а команда curl https://api.telegram.org на самом сервере завершается ошибкой соединения. Важно проверить обе стороны: исходящие запросы и входящий вебхук. В моём случае не работало ни то, ни другое.
Схема релея
Решение — промежуточный сервер, у которого Telegram доступен. На нём в обратном прокси я добавил два маршрута. Первый принимает вебхук от Telegram и пересылает его на адрес сайта. Второй пересылает исходящие запросы бота к API Telegram и открыт только для IP-адреса основного сервера. В приложении достаточно вынести базовый адрес API в переменную окружения: по умолчанию там обычный адрес Telegram, на проде — адрес релея. Сам код бота остаётся прежним.
Что важно для безопасности
Релей не должен превращаться в открытый прокси. Исходящий маршрут пропускает только известный IP, вебхук проверяется сайтом по секретному ключу, а запросы без него получают отказ. Токен бота по-прежнему хранится только на основном сервере. Теперь персональные данные остаются в России, а через релей проходят лишь служебные сообщения Telegram. Для заявок с сайта это допустимо, но формулировку о передаче в Telegram нужно указать в политике и в согласии.
Проверка после запуска
Я проверил схему сквозным тестом: отправил от имени администратора команду боту через релей и убедился, что ответ пришёл. Параллельно проверил, что с чужих адресов исходящий маршрут отвечает отказом. Если вам нужен бот с уведомлениями, оплатой или Mini App, такие проекты я делаю вместе с настройкой серверной части.