Как запустить Telegram-бота без VPS

Чтобы Telegram-бот отвечал всегда, а не только пока открыт терминал на ноутбуке, ему нужна машина, которая не выключается. Обычно на этом месте в инструкциях появляется VPS: арендовать сервер, поставить Python, настроить автозапуск, следить за обновлениями. Для первого бота или pet-проекта это лишняя работа — вы платите за сервер и тратите вечер на администрирование вместо самого бота. Ниже — как поднять бота в сети без собственного VPS: код собирается и запускается на платформе Dockbox.

Почему для бота по умолчанию предлагают VPS

Логика понятная: боту нужен процесс, который работает круглосуточно, а домашний компьютер для этого не годится. VPS — очевидный ответ: машина в дата-центре, доступ по SSH, вы командуете. Проблема в том, что «взять VPS» — это только первый шаг. Дальше начинается работа, которую в гайдах стыдливо называют «настроить окружение», и она редко занимает десять минут.

Что на самом деле тянет за собой VPS

Установка окружения. Python или Node.js, pip и venv, зависимости проекта, права пользователя. Мелочи, но именно они съедают вечер.

Автозапуск и перезапуск. Чтобы бот поднимался после перезагрузки сервера и собственных падений, нужен systemd-юнит или супервизор — и его отладка. Это отдельный навык, который вам, скорее всего, не нужен.

Слежение за сервером. Обновления безопасности, место на диске, логи, уведомления. За день ничего не сломается, но и само не рассосётся.

Оплата независимо от нагрузки. Сервер стоит денег все 30 дней месяца, даже если бот маленький и тихий.

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

Шаг 1. Приведите код к деплою

Платформа соберёт проект сама, но файл зависимостей нужен. Для Python — requirements.txt:

aiogram==3.15.0
python-dotenv==1.0.1

Для Node.js — package.json с зависимостями (telegraf, grammY). Токен в коде держать нельзя, только в переменной окружения. Плохой вариант:

TOKEN = "7123456789:AA..."
bot = Bot(token=TOKEN)

Хороший вариант:

import os
TOKEN = os.environ["BOT_TOKEN"]
bot = Bot(token=TOKEN)

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

Откройте @BotFather в Telegram, отправьте /newbot, задайте имя и username (должен заканчиваться на bot). В ответ придёт строка вида 7123456789:AA... — это ключ доступа к боту. В код его не вставляйте: токен, попавший в репозиторий, считается утёкшим, а вместе с ним под угрозой переписка пользователей и управление ботом.

Шаг 3. Загрузите проект и добавьте секреты

Подключите Git-репозиторий (можно приватный) или загрузите архив — Dockbox определит язык и соберёт проект в Docker-контейнер, писать Dockerfile не нужно. В настройках проекта добавьте секреты: BOT_TOKEN и всё остальное, что бот читает через os.environ. Токен подставляется как секретное значение — ни в коде, ни в архиве он не окажется. Дальше — запуск: проект собирается на серверах платформы, контейнер стартует, и бот начинает слушать Telegram.

Шаг 4. Проверьте, что бот отвечает

Отправьте боту /start — он должен ответить. Логи запуска видны в панели в реальном времени. Если бот молчит, причины почти всегда три: неверный токен, падение на старте из-за отсутствующей зависимости или незаданной переменной, либо второй запущенный экземпляр с тем же токеном (Telegram отвечает на это 409 Conflict). Всё это написано в логе прямым текстом.

Про тарифы и постоянную работу

Здесь принципиальная разница с VPS. Администрировать сервер не нужно, следить за процессом — тоже: контейнеры работают постоянно, без ограничения по времени и без «засыпания». Платформа сама перезапускает контейнер, если тот упал, — бот возвращается в строй без вашего участия.

Тарифы считаются не за сервер, а за ресурсы проекта:

Starter — 990 ₽/мес. 1 vCPU, 2 GB RAM, 20 GB SSD, один проект, автодеплой и SSL. Первый месяц бесплатный. Для одного бота этого достаточно, и ограничения по времени работы у тарифа нет.

Pro — 2 490 ₽/мес. 2 vCPU, 4 GB RAM, до пяти проектов, preview-окружения и свой домен.

Team — 4 990 ₽/мес. Проектов без ограничений и SLA.

Одному боту хватает Starter: он ждёт сообщений всё время, а не только пока кто-то открыл ссылку, поэтому засыпать ему не от чего.

Итог

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

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

Получится ли обойтись без своего сервера совсем?

Да. Вы не арендуете и не администрируете VPS: код уезжает на серверы платформы, Dockbox сам собирает контейнер и держит процесс запущенным. От вас — репозиторий, файл зависимостей и токен в секретах.

Бот работает ограниченное время?

Нет. Контейнеры работают постоянно: нет лимита по часам, нет режима засыпания и нет тарифа, который бота отключает. Если процесс упадёт, платформа перезапустит контейнер сама. Код, настройки и токен остаются на месте.

Нужен ли Dockerfile?

Нет. Достаточно requirements.txt для Python или package.json для Node.js — платформа определяет язык и собирает образ сама. Dockerfile пригодится только при нестандартных требованиях к сборке.

Что делать, если бот не отвечает после запуска?

Посмотрите логи в панели. Чаще всего забыта переменная окружения, не хватает зависимости или запущен второй экземпляр с тем же токеном — Telegram в этом случае отвечает 409 Conflict.

Сколько это стоит?

Starter — 990 ₽/мес, первый месяц бесплатный: 1 vCPU, 2 GB RAM, 20 GB SSD, автодеплой и SSL. Этого хватает одному боту. Pro (2 490 ₽/мес) нужен, если проектов несколько или не хватает ресурсов, Team (4 990 ₽/мес) — когда требуются безлимит проектов и SLA.