Где разместить Telegram-бота на Python: чтобы работал круглосуточно
Бот живёт, пока открыт терминал на вашем ноутбуке. Чтобы он отвечал круглосуточно, нужно примерно 170—300 ₽ в месяц — или ноль рублей в лимитах Yandex Cloud. Разбираем все варианты: цены, оплату картой РФ, базу данных и webhook против polling.
Вы написали бота на aiogram или python-telegram-bot и запускали его на своём компьютере. На хостинге бот приживётся легко: код тот же, токен тот же. Решить нужно три вещи: где крутить процесс круглосуточно, как оплатить из России и что делать с базой данных. Разберём по порядку все варианты — от очень дешёвого VPS до бесплатного serverless.
Что нужно боту от хостинга
Telegram-бот — это обычная программа, которой нужны четыре вещи:
- Постоянная работа. Бот в режиме polling держит открытое соединение с api.telegram.org и должен жить, пока ваш ноутбук спит. В режиме webhook бот ждёт входящие HTTPS-запросы от Telegram. В обоих случаях нужен процесс или адрес, который работает 24/7 — и не «засыпает» при простое.
- Автоперезапуск. Скрипт бота упадёт из-за сбоя сети — хостинг обязан поднять его сам.
- Около 100—300 МБ памяти. Типовой бот на aiogram с хранением состояния в памяти занимает 50—150 МБ RAM и почти не грузит процессор. Хватит самой дешёвой машины у любого провайдера.
- Место для данных. Состояние диалогов, пользователи, счётчики — всё, что бот не должен терять при рестарте.
Из этих требований и растут два семейства решений: вы сами настраиваете сервер (VPS) или платите сервису за то, чтобы он делал это за вас (PaaS, serverless). Как они соотносятся по деньгам и усилиям — таблица:
| Формат | Минимальная цена | Настройка | Кому подходит |
|---|---|---|---|
| VPS | ~170—260 ₽/мес | 1—2 часа | Уже знакомы с Linux или хотите научиться |
| PaaS (Git-деплой) | ~170—290 ₽/мес либо $3—10 | 10—30 минут | Хотите быстрые обновления через git push |
| Serverless | 0 ₽ в лимитах | 1—2 часа | Бот с webhook и готовностью переписать точку входа |
| Хостинг «только Python» | $10/мес | 10—20 минут | Не хотите ни Docker, ни сервера |
Вариант 1. VPS: сервер целиком за пару сотен рублей
Виртуальный сервер — это маленький Linux, который вы получаете полностью под себя. По классике: заходите по SSH, ставите Python, создаёте виртуальное окружение, запускаете бота через systemd — так он автоматически стартует при перезагрузке и перезапускается при падении. Пошагово весь этот путь расписан в отдельной статье — не будем повторяться, остановимся на деньгах.
Стартовые тарифы российских провайдеров укладываются в 170—260 ₽ в месяц:
| Провайдер | От | Особенность |
|---|---|---|
| Aeza | ~190 ₽/мес | Почасовая тарификация, локации РФ и Европы |
| Timeweb Cloud | ~220 ₽/мес | Почасовой биллинг, локации на 3 континентах |
| VDSina | ~240 ₽/мес | Можно платить посуточно — удобно для тестов |
| Beget VPS | ~250 ₽/мес | KVM и NVMe-диски, проверенная платформа |
| Selectel | ~260 ₽/мес | Поминутный биллинг, облако «на вырост» |
Оплата — российскими картами и по счёту у всех пяти; у Aeza ещё и криптовалютой. Что вы получаете взамен:
- любой стек и несколько проектов на одном сервере: бот, сайт, cron-скрипт, да хоть второй бот;
- бот живёт на своём постоянном IP без сюрпризов;
- один и тот же сервер под старым и новым проектами без переездов.
Минусы тоже понятны: настройка — полностью на вас. Первый сервер с нуля займёт час-полтора: установка ОС, ключи SSH, Python, systemd, бэкапы. По сути вы платите 1—2 часа времени, чтобы потом месяцами платить 200—300 ₽ за всё сразу. Если это ок — сравнение VPS-провайдеров в нашем каталоге поможет выбрать.
Вариант 2. PaaS: бот из Git за полчаса
Платформы-как-сервис берут код из Git-репозитория, сами ставят зависимости и запускают процесс. Не нужно администрирование и обновления ОС. Обновление бота — просто git push.
Российская PaaS: Amvera Cloud
Amvera Cloud — российская платформа, нацеленная именно на ботов: деплой из Git или загрузкой файлов, Python/Node.js/Docker, бесплатный домен с SSL, встроенный прокси для ускорения обмена с api.telegram.org и отдельные регионы вне РФ.
Тарифы для бота:
- Пробный — 170 ₽/мес: 0,1 ГБ RAM, 2 ГБ диска. Для Python-бота впритык: aiogram укладывается в 50—100 МБ, но запаса почти нет;
- Начальный — 290 ₽/мес: 0,5 ГБ RAM — комфортный минимум для боевого бота;
- Начальный Плюс — 490 ₽/мес: 1 ГБ RAM — если бот ещё и считает, рисует графики, держит LLM-запросы.
Тарификация поминутная: остановленный проект не тратит деньги. При регистрации автоматически начисляют 111 ₽ — хватит прогнать бота неделю и решить, подходит ли. Постоянное хранилище переживает рестарты — SQLite можно оставить как есть; рядом есть управляемые PostgreSQL и Redis (~от 290 ₽/мес), S3 для файлов. Оплата российскими картами, документы для ИП и юрлиц.
Зарубежные PaaS: Railway, Render, Fly.io, PythonAnywhere
Тут стоит таблица со всей четвёркой:
| Сервис | Минимум | Что за эти деньги | Нюанс |
|---|---|---|---|
| Railway | $5/мес | Hobby-план включает $5 ресурса (полностью покрывает бот на 512 МБ RAM) | Нужна зарубежная карта |
| Render | $7/мес | Background Worker: 0,5 CPU, 512 МБ, не засыпает | Нужна зарубежная карта |
| Fly.io | ~$3/мес | Микро-VM 1 vCPU/256 МБ из вашего Dockerfile | Нужен Dockerfile и зарубежная карта |
| PythonAnywhere | $10/мес | Developer-план: один always-on процесс, 5 ГБ диска | Только Python, нужна зарубежная карта |
Нюансы по каждому:
- Railway тарифицирует ресурсы посекундно и по факту: в Hobby входят $5 использования, бот на 512 МБ RAM при постоянной работе укладывается в эту сумму почти впритык. Подключаете GitHub, Railway сама собирает проект — деплой занимает минуты. Есть жёсткий лимит расходов (hard limit), чтобы бот не «выжег» карту при утечке памяти.
- Render — ближайший наследник Heroku. Бесплатный веб-сервис вполне есть, но спит после 15 минут без HTTP-запросов. Боту с polling нужен Background Worker за $7/мес — он работает без засыпания. Рядом — управляемый PostgreSQL и постоянные диски по $0,25/ГБ.
- Fly.io продаёт не «сервис», а крошечную виртуальную машину. Пишете Dockerfile, fly deploy — и получаете постоянную VM за ~$3/мес в выбранном регионе. Дёшево, но без навыков Docker будет непросто.
- PythonAnywhere — платформа, где весь Python-хостинг делается в браузере: консоль, редактор, панели задач. С 2026 года вход — Developer-план за $10/мес с одним always-on процессом и до 5000 CPU-секунд в день (боту обычно хватает с большим запасом). Docker не нужен, PostgreSQL нет — есть MySQL.
Общий недостаток у всех четырёх — российские карты не принимаются, интерфейсы на английском. Если зарубежной карты нет, эти варианты отсекаются, и остаются российские сервисы (ниже — подробнее про оплату).
Вариант 3. Serverless: бесплатно и только webhook
Yandex Cloud Functions запускает ваш Python-код по HTTP-запросу без всякого сервера. Бот переводится в webhook-режим: Telegram сам присылает обновление, функция обрабатывает его и гаснет.
Деньги здесь решаются иначе, чем везде: каждый месяц не тарифицируются первые 1 000 000 вызовов и 10 ГБ×час выполнения. Личный бот с умеренным трафиком почти всегда вписывается в бесплатный лимит — вы платите ноль рублей. Дальше — 18,97 ₽ за каждый лишний миллион вызовов и около 6,48 ₽ за ГБ×час: обвал нагрузки превращается в десятки рублей, а не в сюрприз по карте.
Что нужно знать до переезда:
- Только webhook. Long polling в serverless не работает: функции требуется событие на вход. Запустить polling можно только через танцы с постоянным запускателем — смысла нет.
- Точку входа придётся переписать. Вместо
bot.run_polling()в aiogram функция принимает HTTP-запрос и передаёт update в диспетчер. Оба фреймворка это умеют, но полчаса правок уйдут. - Состояние храните снаружи. Память функции не переживает вызов: FSM-состояния и данные — в YDB (тоже с бесплатным лимитом) или другой БД.
- Холодный старт. Первые несколько секунд после долгой паузы бот отвечает медленнее — обычно пользователи этого даже не замечают.
- Порог входа выше, чем у VPS: сервисные аккаунты, ключи, API Gateway, триггеры. Один-два часа на первый заход.
Для enterprise-нагрузок в этой нише также существует Cloud.ru с serverless-контейнерами и полным облаком вокруг — но для обычного бота это избыточно.
Webhook или polling
Ваш бот на ноутбуке почти наверняка работал через long polling: программа сама раз в полсекунды спрашивает у Telegram новые сообщения. Это дефолт и aiogram, и python-telegram-bot — работает сразу, требует только исходящего интернета и никакой настройки.
Webhook — обратная схема: Telegram сам присылает обновления HTTP-запросом на ваш HTTPS-адрес. Для этого нужно зарегистрировать адрес через setWebhook и иметь валидный TLS-сертификат. Что даёт webhook:
- мгновенную доставку сообщений (polling отвечает тоже мгновенно, но с чуть большей задержкой);
- не нужен постоянно работающий процесс — обязательное условие для serverless;
- отсутствие лишнего фонового трафика.
Эту пару сведём простой таблицей:
| Критерий | Polling | Webhook |
|---|---|---|
| Настройка | нулевая | нужен HTTPS-адрес и setWebhook |
| В serverless | не работает | единственный вариант |
| Засыпают ли сервисы PaaS | да, без платного тарифа | платный тариф тоже нужен |
| Запуск нескольких копий бота | конфликт | работает сколько угодно копий |
Популярный кейс новичка: случайно оставить и polling, и webhook одновременно. Telegram возвращает ошибку 409 Conflict из-за двух конкурирующих каналов и бот падает. Правило одно: режим определяется один раз через deleteWebhook (перейти к polling) или setWebhook (перейти к webhook), а не «случайно само».
На VPS webhook требует возни с nginx и SSL — polling от этого избавлен. Большинство простых ботов так и живут через polling; webhook берут тогда, когда нужен serverless или критична мгновенная доставка. Оба пути описаны в статье про бесплатный хостинг.
Куда девать базу данных
Бот на вашем ноутбуке мог просто держать JSON-файл или SQLite на диске. Под «настоящим» хостингом к этому добавляется один вопрос: где файл живёт после рестарта.
- VPS. Диск ваш собственный, SQLite работает как обычно. Единственное, что отличает продакшн от ноутбука: бэкапы. Минимальный — сжать и отправить архив в облачное хранилище раз в сутки.
- PaaS с постоянным томом. Railway и Render продают постоянные диски ($0,15—0,25 за ГБ в месяц), Amvera Cloud включает постоянное хранилище с бэкапами в тариф. SQLite в небольшом боте нормально живёт даже на постоянном томе PaaS; главное — не разворачиваться на нескольких репликах одновременно.
- Управляемая PostgreSQL. Хороший шаг для бота с реальной нагрузкой: за ~290 ₽/мес у Amvera, у Timeweb Cloud и Selectel — свои управляемые СУБД, у Render — Postgres за небольшую отдельную плату. Плюс — автоматические бэкапы и отсутствие ручных миграций; минус — заметно дороже SQLite.
- Serverless. Только внешняя БД: YDB от самого Yandex Cloud (со своим бесплатным лимитом — снова хватает на личного бота) или PostgreSQL/Redis где-то ещё.
Отдельный момент — FSM-состояния. Если использовали MemoryStorage из aiogram, то при переносе с ноутбука вы не потеряли данные только потому, что бот не перезапускался днями. На хостинге рестарт случится обязательно — переходите на RedisStorage или PostgreSQLStorage, иначе ежедневные переписки будут сбрасываться.
Как оплатить из России
Все сервисы делятся на две категории:
| Оплата российской картой | Оплата только зарубежной картой | |
|---|---|---|
| Сервисы | Timeweb Cloud, Beget, Selectel, VDSina, Aeza, Amvera, Yandex Cloud, Cloud.ru | Railway, Render, Fly.io, PythonAnywhere |
У российских платформ шире набор способов: карты МИР и обычные карты РФ, СБП, кошельки, счёт по инвойсу с закрывающими документами для ИП и юрлиц. Для бота под российского заказчика это не просто удобство, а оформление расходов «по-белому».
У зарубежных платформ единственный стандарт — карта иностранного банка (Visa/MC). Российские карты отклоняются уже на этапе привязки — обойти это легально не получится. Если зарубежной карты нет и не предвидится, выбор по сути сужается до российских сервисов — а он вполне решаем с любым из трёх описанных вариантов выше.
Чек-лист переезда с ноутбука
Сам перенос занимает меньше часа, 90% работы — подготовка:
- Вынесите токен из кода. Уже есть .env? Отлично, вынесите его в переменные окружения панели конкретного хостинга. В репозиторий .env не попадает — добавьте его в .gitignore.
- Сохраните зависимости.
pip freeze > requirements.txt— это то, что хостинг поставит рядом с вашим кодом. Проверьте, что версия питона соответствует локальной: платформа PaaS часто спрашивает её явно. - Выложите код в Git. GitHub или GitLab — Git-деплой удобен и после переезда.
- Определите судьбу данных. SQLite-файл, JSON с фактами, FSM в памяти — решите, где они будут жить (том, управляемая БД, постоянное хранилище), и добавьте бэкапы.
- Выберите polling или webhook и переключите его осознанно через deleteWebhook / setWebhook.
- Включите автозапуск. На VPS — systemd с Restart=always и автозапуском при перезагрузке. На PaaS — ничего: перезапуск входит в плату.
- Отключите локальную копию. Две копии polling с одним и тем же токеном конфликтуют — Telegram отдаёт апдейты то одной, то другой, и пользователи получают странные ответы.
- Проверьте логи. Через час-два после переноса загляните в журнал: там сразу видно падения и время ответов.
Итог: что выбрать под какую задачу
- Личный бот, платить не хочется — Yandex Cloud Functions: бесплатный лимит в 1 млн вызовов в месяц и webhook-режим. Цена переезда — полчаса-час на правку точки входа.
- Минимум возни на Python, без Docker и серверов — Amvera Cloud от 290 ₽/мес с картой РФ и русским интерфейсом (или PythonAnywhere за $10, если устраивает английская панель и зарубежная карта).
- Хочется контроля и экономии — VPS у Timeweb Cloud, Beget VPS или Aeza: от ~190—220 ₽/мес, systemd, любой стек, несколько проектов на одном сервере.
- Скорость деплоя и глобальная инфраструктура при наличии зарубежной карты — Railway за $5/мес, который сам собирает проект из Git, или Fly.io за ~$3/мес, если легко с Dockerfile.
- Бот с нагрузкой и требованиями оформления — Selectel или Cloud.ru, где рядом лежат управляемые БД, мониторинг и документы для юрлица.
Начните с простого вопроса «какой ответ я дам себе через полгода»: если цель — научиться Linux и DevOps, берите VPS и считайте затраченные часы инвестицией в навык. Если цель — чтобы бот просто работал, любая платформа выше снимет с вас серверную часть, и вы будете платить только деньги, а не время.
Полное сравнение всех хостингов для Telegram-ботов с ценами и фильтрами — в нашем каталоге, а все статьи по теме — в разделе статей.
12 сервисов — фильтры по цене, стеку и способу деплоя на главной каталога.
Открыть каталог