Бесплатный хостинг Telegram-бота: что реально работает

Бесплатный хостинг для бота — почти всегда компромисс, и полезно понимать, почему. На Dockbox такого простоя нет: контейнер запущен постоянно — и у бота, и у сайта, а платформа сама перезапускает его при сбое. У бота простоя нет — и публичной ссылки тоже нет: Telegram сам к боту не обращается, это бот постоянно спрашивает Telegram, не пришли ли новые сообщения. Он занят всё время. Поэтому на большинстве бесплатных площадок держать бота удобно не получается: одни закрыли бесплатный тариф, другие просят карту иностранного банка.

Почему бесплатный хостинг для бота — всегда компромисс

Платформы отвечают на это по-разному. Heroku свой бесплатный тариф закрыл давно. У других зарубежных площадок он ещё есть, но для регистрации просят карту иностранного банка. Остаётся VPS: арендовать, поставить Python или Node.js, настроить автозапуск процесса — и платить каждый месяц, даже если бот у вас один и маленький.

На Dockbox бота можно запустить и попробовать бесплатно: без VPS, без карты и без настройки сервера. Первый месяц на тарифе Starter бесплатный. Бот работает постоянно, пока запущен его контейнер: платформа следит за процессом и сама перезапускает его при сбое, а код, настройки и секреты остаются на месте — ничего не удаляется. Тариф влияет только на ресурсы и число проектов: Starter даёт 1 vCPU, 2 ГБ RAM и один проект, Pro — 2 vCPU, 4 ГБ и 5 проектов, Team — безлимит проектов. Сайты работают так же постоянно: контейнер живёт ровно столько, сколько вы держите его запущенным.

Шаг 1. Получите токен у BotFather

Откройте @BotFather в Telegram, отправьте команду /newbot и ответьте на его вопросы. В ответ придёт токен — длинная строка вида 123456:ABC. Это ключ доступа к вашему боту, выданный самим Telegram. Он понадобится при настройке, поэтому держите его под рукой и никому не показывайте.

Шаг 2. Подготовьте код бота

Подойдёт бот на Python (библиотеки aiogram или python-telegram-bot) или на Node.js (telegraf или grammY). Один важный момент: токен нужно читать не из строки в коде, а из переменной окружения — значения, которое задаётся отдельно и не лежит внутри файлов. В Python это os.environ["BOT_TOKEN"], в Node.js — process.env.BOT_TOKEN:

import os
TOKEN = os.environ["BOT_TOKEN"]

Так токен не утечёт вместе с кодом. И не забудьте файл зависимостей: requirements.txt для Python или package.json для Node.js — по нему платформа поймёт, что установить.

Шаг 3. Загрузите проект в Dockbox

Загрузите код ZIP-архивом или импортируйте из репозитория на GitHub — приватный тоже подойдёт. Папку с зависимостями (venv в Python или node_modules в Node.js) включать не нужно: Dockbox сам определит язык и соберёт проект. Порт указывать не надо: бот — не сайт и входящие запросы не слушает.

Шаг 4. Добавьте токен в секреты и запустите

Dockbox спросит, какие секреты нужны проекту. Добавьте переменную с тем же именем, что и в коде, — например BOT_TOKEN — и вставьте значение токена от BotFather. Значение хранится отдельно от кода и зашифровано: в панели видны только имена переменных, а сам бот читает токен при старте.

Сборка и запуск видны в реальном времени. Следите за статусом сборки и логами прямо в панели. Как только проект перейдёт в рабочее состояние, напишите боту в Telegram — он должен ответить. Если бот позже упадёт, Dockbox перезапустит его сам, так что следить за ним вам не придётся.

Сколько бот живёт на бесплатном тарифе

Бот работает постоянно, пока запущен его контейнер: платформа следит за процессом и перезапускает его при сбое. Код, настройки и секреты остаются на месте, а проверить сборку и ответ бота можно сразу после деплоя. Для большего числа проектов и ресурсов есть тарифы Pro и Team — актуальные цены смотрите на dockbox.host в панели.

Почему тариф зависит от ресурсов, а не от типа проекта. И сайт, и бот занимают выделенные vCPU и память: у Starter это 1 vCPU, 2 ГБ RAM и 20 ГБ SSD, у Pro — 2 vCPU и 4 ГБ, у Team — ещё больше. Оба работают постоянно, пока запущен контейнер, и перезапускаются автоматически при сбое. У бота публичной ссылки нет — он сам обращается к Telegram, а не наоборот, и это никак не мешает ему работать. Лимита по времени на Dockbox нет ни у ботов, ни у сайтов: тарифы различаются ресурсами и числом проектов.

Когда ботов больше одного

Тариф Starter — это один проект, то есть один бот. Если хочется держать второго бота или другие проекты, есть тариф Pro (5 проектов) или Team (без ограничения). На то, как работает уже запущенный бот, смена тарифа не влияет: контейнер продолжает работать постоянно, а тариф определяет только ресурсы и число проектов. Оплата идёт вперёд за весь срок, а текущие цены видны в панели.

Что в итоге

Бота можно провести от кода до работы за несколько минут — не трогая сервер и не платя за него заранее. Первый месяц на тарифе Starter бесплатный — этого хватает, чтобы довести бота до работы. Дальше выбор простой: тариф с большим запасом ресурсов и числом проектов. И сайты, и боты на Dockbox работают постоянно, без ограничений по времени. Попробуйте Dockbox.

Частые вопросы

Можно ли держать Telegram-бота бесплатно постоянно?

Первый месяц — да, дальше тариф платный. Но ограничений по времени работы на Dockbox нет: бот не имеет публичной ссылки, и это не мешает ему работать — контейнер запущен постоянно, платформа перезапускает процесс при сбое, а код и секреты сохраняются. Ни у ботов, ни у сайтов нет лимита по времени: и те, и другие живут ровно столько, сколько вы держите их запущенными.

Что нужно, кроме кода бота?

Только токен от BotFather и файл зависимостей (requirements.txt или package.json). Ни арендованного сервера, ни установки Python или Node.js, ни настройки автозапуска, ни обслуживания системы.

Какой код запуска указывать для бота?

Обычно python main.py — где main.py это файл, в котором создаётся объект бота и запускается опрос Telegram. Для Node.js — что-то вроде npm start. Если точка входа называется иначе, укажите свою команду при настройке проекта.

Нужно ли указывать порт при деплое бота?

Нет. Бот — не сайт и входящие запросы не принимает, он сам опрашивает Telegram. Порт нужен только веб-приложению, которое работает через webhook.

Где хранить токен, если не в коде?

В секретах проекта. Значение шифруется и не показывается в открытом виде, а видны только имена переменных. В коде остаётся лишь чтение через os.environ — тогда токена нет ни в файлах, ни в репозитории.