Боты и автоматизация2026-07-21Обновлено: 2026-10-077 минАвтор:

Как сделать, чтобы бот работал круглосуточно: хостинг и запуск 2026

Проверено 7 октября 2026: цены и оплата хостинга из России, лимиты Yandex Cloud Functions, автозапуск systemd и Docker, ошибки Telegram Bot API, режим приватности и требования к вебхуку. Проверила Редакция Submarine School. Источники: timeweb.cloud, docs.amvera.ru, yandex.cloud, freedesktop.org, freedesktop.org, docs.docker.com, raw.githubusercontent.com, core.telegram.org.

Как сделать, чтобы бот работал круглосуточно: хостинг и запуск 2026

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

Почему бот перестаёт отвечать, когда вы закрыли ноутбук

Когда ноутбук выключен или спит, программа бота на нём не работает. Токен от BotFather даёт доступ к Telegram Bot API, но ничего не запускает. Логика (что ответить на /start, куда записать заявку) живёт в вашей программе. Пока эта программа не работает, серверы Telegram копят сообщения, а отвечать на них некому.

Причину остановки можно определить по тому, когда бот замолкает:

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

Если вы делали бота через готовую платформу, как в разборе способов создать бота в Telegram, проблема аптайма закрыта за вас. Если вы написали код бота, дальше его нужно где-то разместить.

Long polling и вебхук: два способа доставки сообщений

При long polling программа сама забирает сообщения у Telegram, при вебхуке Telegram отправляет их на ваш сервер. Документация Bot API называет эти способы взаимоисключающими.

  • Long polling (метод getUpdates). Ваша программа сама постоянно спрашивает Telegram: есть новые сообщения? Плюс: работает откуда угодно, даже с домашнего компьютера, не нужен домен и сертификат. Минус: программа обязана крутиться непрерывно.
  • Вебхук (метод setWebhook). Вы один раз сообщаете Telegram адрес вашего сервера, и он сам присылает туда каждое новое сообщение. Плюс: нет холостых запросов, подходит для serverless-функций, которые просыпаются только на входящее событие. Минус: нужен публичный HTTPS-адрес с настроенным сертификатом.

Пока установлен вебхук, getUpdates не работает. Чтобы вернуться к опросу, вебхук нужно снять методом deleteWebhook. Для первого бота проще начать с long polling, а на вебхук переходить, когда нагрузка выросла или вы хотите бесплатный serverless.

Представьте бота, который каждое утро сам готовит дайджест новостей и зачитывает его голосом. Такого ИИ-агента в Telegram показывают завтра в 12:00 МСК на бесплатном мастер-классе.

Записаться бесплатно

Куда залить бота: варианты и цены

Для бота подойдут VPS, платформа с запуском приложения, serverless-функция по вебхуку или домашний мини-сервер. Постоянно работающей программе нужна машина с доступом в интернет 24/7; варианты отличаются по цене и по объёму настройки.

Serverless (Yandex Cloud Functions) работает по вебхуку: функция просыпается на каждое сообщение. Каждый месяц не тарифицируются первые 1 000 000 вызовов функций и 10 ГБ×час выполнения по условиям free tier Yandex Cloud. ГБ×час считают как выделенную память функции, умноженную на время работы. Например, 500 сообщений в день дают 15 000 вызовов за 30 дней, если на сообщение приходится один вызов: при 128 МБ памяти и примерно секунде обработки получится около 0,5 ГБ×час, что укладывается в лимит с запасом. Если выделить 1 ГБ и тратить на сообщение 3 секунды, те же вызовы потребуют около 12,5 ГБ×час, и бесплатного лимита уже не хватит. Платёжный аккаунт привязать придётся. Физлица-резиденты РФ платят в рублях картами Мир, Visa и MasterCard российских банков.

VPS в России даёт полный контроль над виртуальным сервером и оплату рублёвой картой. У Timeweb Cloud конфигурация Cloud-40 с 2 ядрами, 2 ГБ RAM и 40 ГБ NVMe стоит 900 ₽ в месяц при оплате за 12 месяцев со скидкой 10%. Для одного небольшого бота этого обычно хватает. Оплатить можно банковской картой или через СБП.

PaaS-платформы для ботов, например Amvera Cloud, сами собирают и запускают приложение, когда вы отправляете код через git push. Меньше настройки сервера, но меньше и контроля. У Amvera тариф «Пробный» с 0,1 ЦПУ, 100 МБ ОЗУ и 2 ГБ SSD стоит 170 ₽ за 30 дней, «Начальный» с 0,25 ЦПУ, 500 МБ ОЗУ и 5 ГБ SSD стоит 290 ₽ за 30 дней. Оба тарифа платные, тарификация поминутная. Баланс пополняется российской картой через Робокассу.

Зарубежный VPS проще взять в зарубежной локации российского провайдера. У Timeweb Cloud есть Нидерланды, Германия, Казахстан и Нью-Йорк, а оплата остаётся той же: рубли, карта российского банка или СБП. Напрямую у зарубежного хостера может не получиться: в декабре 2023 года Hetzner расторг договоры с клиентами, у которых в аккаунте был указан российский почтовый адрес, и договоры прекратились 31 января 2024 года.

Свой мини-сервер: старый ноутбук или одноплатник дома. Стоит только электричества, но аптайм равен аптайму вашего роутера и электросети.

Сначала выполните на выбранном сервере команду curl https://api.telegram.org/bot<токен>/getMe, подставив свой токен: в ответ должны прийти данные бота. Если запрос зависает до таймаута или завершается сетевой ошибкой, проблема в сети площадки; практичный выход описан выше: сервер в зарубежной локации. Если пришли "error_code":401 и Unauthorized, сеть работает, а токен неверный или отозван. Как запуск из терминала связан с регистрацией бота в кабинете платформы, объясняет материал как сделать ботов через консоль.

Самое интересное начинается, когда за ботом стоит агент. Завтра в 12:00 МСК на бесплатном мастер-классе ему дают задачу голосом, и он сам собирает данные в Google-таблицу, а в Claude Code за эфир проходят путь от идеи до работающего сервиса.

Занять место

Автозапуск: чтобы бот поднимался сам

На Linux автозапуск и перезапуск бота настраивают через systemd. Просто запустить программу по SSH мало: закроете сессию, и процесс умрёт вместе с ней. Нужен системный сервис, который стартует при загрузке и перезапускается после падения.

  1. Подключитесь к серверу по SSH и поставьте окружение: Python или Node.js нужной версии, зависимости проекта.
  2. Залейте код командой git clone из вашего репозитория. Токен держите в переменной окружения или в файле .env, который в репозиторий не попадает.
  3. Запустите бота руками и напишите ему в Telegram. Убедитесь, что он отвечает. Пока этот шаг не пройден, автозапуск настраивать рано.
  4. Опишите бота как systemd-сервис в файле /etc/systemd/system/mybot.service с секциями [Unit], [Service] и [Install] по примеру ниже. Укажите рабочую папку, команду запуска и параметры Restart=always и RestartSec=5: система поднимет процесс после падения. Число частых перезапусков ограничено.
  5. Перед включением сервиса и после каждой правки его файла выполните sudo systemctl daemon-reload. Затем включите автозагрузку командой sudo systemctl enable --now mybot и проверьте systemctl status mybot. Для автозагрузки нужна секция [Install] с WantedBy=multi-user.target, которую использует команда systemctl enable. Теперь бот стартует и после перезагрузки сервера.
  6. Смотрите логи командой journalctl -u mybot -f. Это первое место, куда идти, когда бот замолчал.

Пример содержимого /etc/systemd/system/mybot.service; имя пользователя bot и пути условные, замените их на свои:

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

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

[Install]
WantedBy=multi-user.target

systemd сам не читает .env из папки проекта: файл подключается директивой EnvironmentFile=. В ExecStart укажите полный путь к Python из виртуального окружения; для Node.js там будет путь к node и файлу бота.

Если вы работаете с контейнерами, запустите бота командой docker run -d --restart unless-stopped --env-file .env --name mybot <образ>, подставив имя своего образа. С политикой unless-stopped контейнер поднимется после падения и после перезагрузки сервера, если Docker включён в автозагрузку командой sudo systemctl enable docker. Остановленный вручную контейнер останется остановленным и после перезапуска Docker.

Сначала добейтесь, чтобы бот стабильно работал на сервере при ручном запуске, и только потом заворачивайте его в автозапуск. Иначе вы чините две проблемы сразу и не понимаете, какая из них ваша.

По теме: Как сделать, чтобы бот отправлял сообщения сам: расписание и события

Бот молчит, дублирует ответы, ловит 409: разбор ошибок

409 Conflict. Типичная ошибка при переезде на сервер. Если один токен опрашивают два процесса, например старый бот на ноутбуке и новый на сервере, ответ будет Conflict: terminated by other getUpdates request; make sure that only one bot instance is running. При попытке опроса с активным вебхуком сервер Bot API возвращает другой ответ: Conflict: can't use getUpdates method while webhook is active; use deleteWebhook to delete the webhook first. Остановите лишний процесс, а при переходе на polling снимите вебхук методом deleteWebhook.

Бот отвечает по два раза. Проверьте, не остался ли запущенным старый контейнер или вторая копия сервиса, и не выложили ли вы бота на двух площадках сразу. Другая причина возможна на вебхуке: если ваш сервер не вернул успешный ответ с кодом 2XX вовремя, Telegram повторяет запрос. Отвечайте на вебхук быстро и не обрабатывайте повторно update_id, который уже видели.

Бот молчит, а ошибок в логах нет. Если вы на вебхуке, запросите getWebhookInfo: в ответе есть поле с последней ошибкой доставки. Обычно там видна причина, например невалидный сертификат или отвечающий ошибкой сервер. На polling первым делом проверьте systemctl status mybot: чаще всего процесс не запущен. У Python-бота вывод print может не попадать в лог, пока не задана переменная окружения PYTHONUNBUFFERED=1.

401 Unauthorized. Bot API так отвечает, когда токен неверный или отозван. Токен перестаёт работать сразу после того, как вы перевыпустили его в BotFather. Впишите новый токен в переменную окружения и перезапустите сервис. Заодно проверьте, не лежит ли старый токен в публичном репозитории: утёкшим токеном может пользоваться кто угодно.

В личке отвечает, в группе молчит. Чаще всего так работает режим приватности: по умолчанию бот в группе видит только команды, ответы на свои сообщения и служебные сообщения. Если сделать бота администратором группы, он получает все сообщения; после отключения режима приватности у BotFather бота нужно заново добавить в группу. Права бота для группы настраиваются под сообщения, которые он должен обрабатывать.

Что выбрать под свою задачу

  • Бот для себя или для теста идеи: long polling плюс самый дешёвый VPS. Меньше всего движущихся частей.
  • Бот для клиентов, где важна каждая заявка: вебхук, VPS с оплатой в рублях, systemd с перезапуском.
  • Бот с редкими всплесками сообщений: serverless по вебхуку, платите только за вызовы и время работы функции сверх бесплатного лимита.

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

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

Можно ли сделать, чтобы бот работал без компьютера?

Да, именно для этого код и переносят на сервер. После настройки автозапуска ваш компьютер участвует только в моменты, когда вы правите код и выкладываете обновление.

Нужен ли домен и SSL-сертификат?

Для long polling нет, боту достаточно исходящего доступа в интернет. Для вебхука нужен публичный HTTPS-адрес на одном из портов 443, 80, 88 или 8443. Собственный домен не обязателен: Telegram принимает и самоподписанный сертификат, если загрузить его в параметре certificate метода setWebhook. У serverless-платформ HTTPS-адрес выдаётся вместе с функцией.

Хватит ли 1 ГБ оперативной памяти?

Для бота, который принимает заявки и пишет в таблицу, обычно с запасом. Требования растут, когда бот сам обрабатывает файлы или картинки. Если бот только пересылает запросы во внешнюю нейросеть по API, вычисления происходят не у вас, и памяти нужно немного.

Реально ли держать бота онлайн бесплатно?

На небольших объёмах да, за счёт бесплатных лимитов serverless-платформ. Но бесплатный тариф почти всегда требует привязанной карты и не даёт гарантий по времени ответа. Для бота, на котором висят деньги или заявки, дешевле взять недорогой VPS и спать спокойно.

Как обновлять бота, не ломая работу?

Выложите новый код на сервер и перезапустите сервис командой sudo systemctl restart mybot. Пауза составит секунды. Сообщения за это время Telegram сохранит и доставит после старта: необработанные обновления хранятся до 24 часов. При polling не запускайте новую версию, не остановив старую, иначе получите 409.

Бот на сервере отвечает круглосуточно. Какую работу ему можно поручить, увидите завтра в 12:00 МСК на бесплатном мастер-классе: агент Якова в Telegram каждый день собирает дайджест новостей, ведёт канал и расшифровывает аудио.

Записаться бесплатно
Разборы, кейсы и фишки вайбкодинга каждую неделю в телеграм-канале «Яков вайбкодит».
Смотрите ИИ-агента в деле: завтра в 12:00 МСК, бесплатно Записаться