На платформе Bothost вы можете подключить собственный домен или использовать бесплатный поддомен *.bothost.ru для доступа к вашему боту или веб-сервису через браузер.
Как это работает
Когда вы включаете опцию «Использовать домен», Bothost автоматически настраивает Reverse Proxy (обратный прокси). Это работает следующим образом:
Внешний мир: Пользователь заходит по адресу вашего домена (например, https://my-bot.bothost.ru). Все запросы приходят на стандартный порт 443 (HTTPS).
Шлюз хостинга: Система Bothost принимает запрос, проверяет SSL-сертификат и перенаправляет трафик внутрь вашего Docker-контейнера.
Ваш контейнер: Внутри контейнера ваш Python/Node.js сервер принимает этот запрос на том порту, который вы указали в настройках (по умолчанию 3000 или 8000).
Важность адреса 0.0.0.0
Для того чтобы Reverse Proxy смог передать запрос вашему коду, сервер внутри контейнера должен слушать на всех сетевых интерфейсах.
❌ Неправильно:127.0.0.1 или localhost. Это «внутренний адрес» контейнера. Если сервер запущен на этом адресе, его увидит только сам бот внутри себя, а внешняя система проксирования получит ошибку соединения.
✅ Правильно:0.0.0.0. Это означает, что сервер готов принимать входящие соединения со всех сторон, включая шлюз хостинга.
const express = require('express');
const app = express();
const port = 3000;
app.get('/', (req, res) => {
res.send('Hello World!');
});
// Слушаем на 0.0.0.0
app.listen(port, '0.0.0.0', () => {
console.log(Server running on port ${port});
});
Настройка порта в панели
В настройках бота есть поле «Порт». Значение в этом поле должно строго совпадать с тем портом, который вы указываете в коде своего приложения.
Использование переменной окружения PORT
Система Bothost автоматически передает выбранный вами порт в переменную окружения PORT. Рекомендуется использовать её в коде, чтобы при изменении порта в панели управления вам не приходилось менять код:
import os
import uvicorn
port = int(os.getenv("PORT", 8000))
uvicorn.run(app, host="0.0.0.0", port=port)
Если вы изменили порт в коде вручную (например, жестко прописали 5000), обязательно обновите его и в панели управления Bothost, иначе система будет пытаться отправить запросы на старый порт и вы увидите ошибку 502 Bad Gateway.
Автоматическая HTTP-обертка
Если вы используете домен, но в вашем коде нет веб-сервера (например, вы просто хотите видеть статус бота через веб), система может автоматически создать легкую HTTP-обертку. Однако для полноценных веб-приложений (Dashboard, Webhooks, API) рекомендуется использовать собственный сервер на базе FastAPI, Flask или Express.