botdepobotdepoВсе статьи

11 октября 2026 г.

Как запустить Telegram-бота 24/7, чтобы он работал без вашего компьютера

Бот работает, пока открыт терминал на вашем компьютере. Закрыли ноутбук — бот замолчал. Чтобы он отвечал круглосуточно, его нужно запустить там, где он будет работать без вас, и сделать так, чтобы после падения он поднимался сам. Ниже честно про три варианта и про то, что в каждом ломается.

Вариант 1. Свой компьютер

Можно оставить бота работать дома: запустить внутри screen или tmux, чтобы он не умирал при закрытии терминала:

tmux new -s bot
python bot.py
# Ctrl+B, затем D — отсоединиться, бот продолжит работать
tmux attach -t bot   # вернуться

Для теста нормально, для живых пользователей — нет:

Вариант 2. VPS и systemd

Арендовать виртуальный сервер и запустить бота как системную службу. systemd будет держать его запущенным, перезапускать после падения и поднимать после перезагрузки сервера. Файл /etc/systemd/system/mybot.service:

[Unit]
Description=Telegram bot
After=network-online.target
Wants=network-online.target

[Service]
User=bot
WorkingDirectory=/home/bot/mybot
EnvironmentFile=/home/bot/mybot/.env
Environment=PYTHONUNBUFFERED=1
ExecStart=/home/bot/mybot/.venv/bin/python bot.py
Restart=always
RestartSec=5

[Install]
WantedBy=multi-user.target
sudo systemctl daemon-reload
sudo systemctl enable --now mybot     # запустить и включить автозапуск
journalctl -u mybot -f                # смотреть лог

.env в EnvironmentFile — строки вида BOT_TOKEN=123:ABC, без export. PYTHONUNBUFFERED=1 нужен, чтобы print сразу попадал в журнал, а не терялся при падении.

Это рабочий и самый гибкий вариант, но вся настройка и обслуживание на вас:

Вариант 3. Хостинг, который запускает код из репозитория

Платформы, где вы указываете репозиторий, а сборку, запуск и перезапуск берут на себя они. Сервер настраивать не нужно, новая версия выкатывается кнопкой или сама после push. Минусы — меньше контроля, и у универсальных платформ свои требования: нужен веб-порт, Dockerfile или особый файл конфигурации. Перед выбором проверьте, что площадка поддерживает «фоновый процесс без веб-сервера» — бот на long polling именно такой.

Что сделать при любом варианте

  1. Токен — не в коде. Читайте его из переменной окружения (os.getenv("BOT_TOKEN")). Токен в репозитории — это токен, который рано или поздно утечёт; если уже закоммитили, перевыпустите его в @BotFather.
  2. Файл зависимостей. Без requirements.txt сервер не знает, что ставить. Как его сделать.
  3. Данные не рядом с кодом. База SQLite и JSON-файлы должны лежать в папке, которая переживает обновление кода. Почему и куда.
  4. Один экземпляр бота. Остановите локальную копию, когда запускаете на сервере, иначе получите Conflict: terminated by other getUpdates request.
  5. Узнавать о падении раньше пользователей. Хоть простым скриптом, который пишет вам в Telegram, если бот не отвечает.

Вариант для тех, кто не хочет администрировать сервер

botdepo — хостинг именно для Telegram-ботов: вы даёте ссылку на репозиторий GitHub и токен, мы собираем и запускаем бота на сервере в Нидерландах (без проблем с доступом к Telegram), перезапускаем при падении, показываем логи в браузере и пишем вам в Telegram, если бот упал и сам не поднимается. Для первого бота есть бесплатный пробный период. Задеплоить бота.

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

Нужен ли боту белый IP или домен?

Для long polling — нет: бот сам ходит к Telegram за сообщениями. Домен и HTTPS нужны только для webhook.

Сколько ресурсов нужно простому боту?

Немного: типичный бот на aiogram или pyTelegramBotAPI занимает десятки мегабайт памяти и почти не грузит процессор, пока им не пользуются сотни людей одновременно.

Можно ли бесплатно?

Свой компьютер — бесплатно, но ненадёжно. У многих хостингов есть пробный период или бесплатный тариф с ограничениями — смотрите, не «засыпает» ли бот на нём без активности.