Веб-приложения и домены
Эта страница — для тех, кто публикует веб-сервис вместе с ботом: API, мини-приложение, панель, приём вебхуков Telegram и т.п. Базовые понятия о доменах и портах см. также в статье Работа с доменами и портами.Что даёт включение домена
- Запросы из интернета приходят на ваш домен по HTTPS (порт 443).
- Платформа маршрутизирует трафик в ваш контейнер на выбранный внутренний порт приложения.
- Для Telegram-бота можно указать вебхук на URL вида
https://ваш-домен/...— Telegram будет слать обновления на этот адрес.
Как устроен трафик (кратко)
- Пользователь или Telegram открывает
https://ваш-поддомен.bothost.tech(или ваш кастомный домен). - DNS указывает на центральный сервер платформы — там завершается TLS (сертификат).
- Дальше запрос проксируется на ноду, где крутится ваш контейнер, и попадает в приложение на нужном порту.
Порт приложения: два важных поля
- Порт в панели /
internal_port— это тот порт, на который смотрит прокси внутри Docker. Он должен совпадать с тем, на чём реально слушает ваше приложение. - Переменная
PORTв контейнере обычно выставляется платформой в то же значение.
PORT в переменных окружения, но не обновили порт в настройках бота, прокси будет стучаться «не туда» — часто это 502 или 504 Gateway Timeout.
Рекомендация: в коде читать порт из PORT и слушать 0.0.0.0:
import os
port = int(os.getenv("PORT", "3000"))
# uvicorn / flask / etc. — host="0.0.0.0", port=port0.0.0.0 и примеры — в доменах и портах.
Автоматический поддомен (bothost.tech)
При выборе автоматического домена для веб-интерфейса поддомен формируется из идентификатора бота. Символы подчёркивания в имени поддомена заменяются на дефисы, чтобы имя соответствовало правилам DNS (в имени хоста не должно быть_).
Пример: bot-1774542086-5810-user.bothost.tech вместо bot_1774....
Кастомный домен
Если вы подключаете свой домен, в DNS нужно настроить запись на IP, который выдаст поддержка (обычно это центральный сервер платформы). После проверки сертификатов запросы пойдут по той же схеме, что и для*.bothost.tech.
Вебхук Telegram и путь в приложении
- Вебхук задаётся URL вида
https://ваш-домен/webhook(или другой путь — как настроите в коде). - Ваше приложение должно реализовать HTTP-обработчик на этом пути (например, POST для Telegram).
- Если по корню
/открывается 404, это не всегда ошибка: многие боты не отдают страницу на/, а принимают только/webhook.
Частые проблемы
504 Gateway Timeout / «не доходит» трафик
Часто это не Telegram, а несовпадение порта в настройках и в приложении, либо сетевые настройки на ноде. Проверьте: порт в панели = порт в коде, приложение слушает0.0.0.0, контейнер в статусе Up, не в цикле перезапусков.
«Не могу открыть файл /app/http_wrapper.py»
Если включена опция HTTP-обёртки, платформа ожидает в образе сгенерированный файл обёртки. Если образ собран без этого шага или код монтируется с хоста без этого файла — контейнер не запустится. Для полноценного веб-приложения лучше поднимать свой сервер (FastAPI, Express и т.д.) и не полагаться только на обёртку.
404 на / или /health
Маршрутизация до контейнера может работать, а маршрута в приложении нет — тогда ответ 404 идёт от вашего кода. Добавьте нужный endpoint или проверьте путь вебхука.
Рекомендации для продакшена
- Явно задайте обработчики для путей, которые использует вебхук и браузер.
- Логируйте старт сервера и порт, на котором слушаете.
- После смены порта или домена сделайте повторный деплой, чтобы настройки и образ совпали.
Связанные материалы: домены и порты, переменные окружения.