Telegram-бот на Python — один из самых быстрых способов автоматизировать поддержку, продажи, уведомления и внутренние процессы компании. Но код на GitHub — это только половина задачи: бот должен работать 24/7, принимать webhook или держать long polling, переживать перезагрузки сервера и обновления зависимостей. В 2026 году для большинства production-ботов оптимальный выбор — VPS: выделенные ресурсы, root-доступ, свой домен с HTTPS и полный контроль над Python-окружением. В этой статье разберём, какой VPS нужен для Telegram-бота, как сравнить провайдеров, как деплоить aiogram и python-telegram-bot, и когда имеет смысл начать с shared-хостинга вроде Beget.
Webhook или long polling: что влияет на выбор сервера
Webhook — Telegram шлёт POST-запросы на ваш URL (https://yourdomain.com/webhook). Требуется валидный SSL-сертификат, публичный IP или домен, стабильный HTTP-сервер (nginx + uvicorn/gunicorn/aiohttp). Webhook экономит ресурсы: нет постоянного исходящего соединения. Это предпочтительный режим для production.
Long polling — процесс бота сам опрашивает API Telegram. Проще для локальной разработки и для серверов без белого IP/домена, но процесс должен работать непрерывно. На shared-хостинге long polling часто убивают по лимитам времени CPU; на VPS — нормальная практика при настройке systemd.
Для webhook на минимальном VPS достаточно 1 vCPU, 1 GB RAM и 10–20 GB NVMe. Для бота с ML-инференсом, парсингом или несколькими worker’ами закладывайте 2 GB RAM и выше.
Для сайтов, ботов и pet-проектов можно использовать Beget: виртуальный хостинг от 420 ₽/мес., VPS от 330 ₽/мес. и тестовый период.
Минимальные требования VPS для Python Telegram-бота
- ОС: Ubuntu 22.04 LTS или 24.04 LTS — максимум документации и пакетов.
- Python: 3.10+; для aiogram 3.x — async/await из коробки.
- RAM: 512 MB — только для теста; 1 GB — один лёгкий бот; 2 GB — бот + PostgreSQL/Redis локально.
- CPU: 1 vCPU хватает для I/O-bound ботов; CPU-bound задачи (обработка изображений, YOLO) — отдельный инстанс или очередь задач.
- Диск: 15–25 GB с запасом под логи, venv и бэкапы.
- Сеть: стабильный канал, желательно дата-центр в РФ/СНГ для низкой задержки до api.telegram.org (зависит от аудитории).
Если бот только пересылает сообщения и ходит во внешние API — не переплачивайте за GPU. Если планируете компьютерное зрение в боте, см. также материал про YOLO11 и работу с моделями — inference лучше выносить в отдельный сервис или worker.
Сравнение провайдеров VPS для Telegram-ботов (2026)
| Провайдер / тип | Цена входа | Плюсы для бота | Минусы |
|---|---|---|---|
| Beget VPS | от ~300–500 ₽/мес | Русская поддержка, привычная экосystem, гайды по ботам на Beget | Меньше «облачных» фич, чем у гипerscaler’ов |
| Timeweb VPS | от ~400 ₽/мес | Гибкие тарифы, акции, удобная панель | Как и у всех budget VPS — мониторинг на вас |
| Selectel / VK Cloud | от ~500–800 ₽/мес | Масштабирование, облачные сети, SLA для business | Выше порог входа по настройке |
| Shared Beget (не VPS) | от ~300 ₽/мес | Дешево для webhook MVP, есть пошаговые инструкции | Long polling и тяжёлые зависимости — плохо |
Для первого production-бота многие выбирают Beget: можно оформить через https://prizraks.ru/go/beget и следовать проверенному сценарию из статьи как написать Telegram-бота и разместить его на хостинге Beget.
Архитектура деплоя: nginx, SSL, systemd
Схема для webhook
- Домен указывает A-запись на IP VPS.
- Certbot получает Let’s Encrypt сертификат.
- Nginx терминирует HTTPS и проксирует на localhost:8080 (aiohttp/uvicorn).
- Python-приложение регистрирует webhook через
setWebhook. - Systemd unit перезапускает процесс при падении и после reboot.
Пример unit-файла systemd
Сервис /etc/systemd/system/telegram-bot.service:
WorkingDirectory=/opt/botExecStart=/opt/bot/venv/bin/python main.pyилиuvicorn app:app --host 127.0.0.1 --port 8080Restart=alwaysEnvironmentFile=/opt/bot/.env
После systemctl enable --now telegram-bot бот переживёт перезагрузку. Логи смотрите через journalctl -u telegram-bot -f.
aiogram 3 vs python-telegram-bot: что ставить на VPS
aiogram 3
Современный async-фреймворк, Router, FSM, middleware. Хорош для новых проектов. На VPS ставите venv, pip install aiogram, храните токен в .env. Для webhook — aiohttp-сервер или интеграция с FastAPI.
python-telegram-bot (PTB)
Зрелая библиотека, v20+ полностью async. Удобные JobQueue и ConversationHandler. Деплой идентичен: venv, systemd, nginx.
Выбор библиотеки не меняет требования к VPS — меняется только структура кода. Оба стека требуют аккуратной работы с секретами и идемпотентностью обработчиков (Telegram может прислать update повторно).
База данных на том же VPS
Для учёта пользователей, заказов и состояний FSM:
- SQLite — только один процесс бота, простые проекты.
- PostgreSQL — production, несколько worker’ов, транзакции.
- Redis — кэш, очереди, хранение FSM при горизонтальном масштабировании.
На VPS с 2 GB RAM PostgreSQL и Redis в Docker Compose — типичная связка. Не забудьте бэкапы pg_dump в cron и мониторинг диска.
Безопасность Telegram-бота на сервере
- Токен бота только в переменных окружения, не в Git.
- Webhook secret / проверка IP Telegram (диапазоны документированы).
- Firewall: 80, 443 — публично; SSH — по ключу, лучше нестандартный порт или VPN.
- Обновления безопасности:
unattended-upgradesна Ubuntu. - Rate limiting на nginx для защиты от мусорного трафика не от Telegram.
- Отдельный пользователь Linux для процесса бота без root.
Мониторинг и алерты
Бот «молчит» — частая боль. Минимальный набор:
- Uptime-проверка URL webhook (HTTP 200 на health endpoint).
- Алерт в Telegram админу при падении systemd (внешний cron + curl или Uptime Kuma).
- Ротация логов, чтобы диск не забился.
- Метрики: время ответа handler’ов, ошибки API Telegram (429 — too many requests).
Масштабирование: один VPS vs несколько инстансов
Один VPS + один процесс бота — норма для SMB. Когда растёт нагрузка:
- Выносите тяжёлые задачи в Celery/RQ worker.
- Используйте Redis для очереди.
- Webhook на балансировщик — только если один инстанс не справляется; нужна общая БД и sticky sessions или stateless handlers.
Контейнеризация упрощает перенос между VPS. Общие принципы оркестрации описаны для Java-стека в статье про Kubernetes в продакшене — для Python логика та же, инструменты другие (Docker Compose, позже k8s).
Shared vs VPS: когда экономия оборачивается простоем
Shared Beget подходит для:
- MVP с webhook и малым трафиком.
- Обучения и первого деплоя по готовому гайду.
VPS нужен для:
- Long polling 24/7.
- Локальных PostgreSQL/Redis/worker’ов.
- Docker, custom зависимостей, нескольких сервисов на одном сервере.
- SLA перед клиентами (агентства, интеграторы).
Переход с shared на VPS: rsync кода, перенос .env, dump БД, смена A-записи, новый SSL, setWebhook с новым URL.
Пошаговый чеклист деплоя на VPS
- Арендовать VPS (1 GB RAM минимум для webhook-only).
- Настроить SSH-ключи, создать пользователя
bot. - Установить Python 3, git, nginx, certbot.
- Клонировать репозиторий в
/opt/bot, создать venv,pip install -r requirements.txt. - Создать
.envсBOT_TOKEN,WEBHOOK_URL, секретами БД. - Настроить nginx + SSL.
- Зарегистрировать webhook из кода или через curl к API Telegram.
- Добавить systemd unit, enable, проверить логи.
- Настроить cron-бэкапы и мониторинг.
Оптимизация затрат в 2026
- Годовая оплата VPS часто даёт скидку 10–20%.
- Не держите oversized VPS «на будущее» — вертикальное масштабирование у большинства провайдеров занимает минуты.
- Логи в stdout + journald дешевле, чем тяжёлые SaaS-логи на старте.
- Object storage для медиа из бота — если файлов много, не забивайте системный диск VPS.
Beget как проверенный вариант для старта: оформление через prizraks.ru и документация сообщества сокращают время до первого работающего бота.
Обработка медиа, файлов и больших сообщений
Telegram присылает фото, документы, голосовые — бот должен скачивать через getFile, не блокируя event loop. В aiogram используйте async download; тяжёлую обработку выносите в Celery или отдельный worker-процесс. Храните файлы в S3-совместимом storage, если диск VPS маленький — иначе через месяц active chat logs и uploads заполнят раздел.
Лимит размера файла в Bot API — до 20 MB (для скачивания ботом); для больших архивов давайте ссылку, а не грузите через бота.
Интеграция бота с CRM и внешними API
Production-бот редко живёт изолированно: заявки уходят в CRM, статусы заказов тянутся из 1C или Laravel backend. На VPS настройте исходящие HTTPS-запросы, таймауты, retry с exponential backoff. Секреты API CRM — в .env. При падении внешнего API бот должен отвечать пользователю вежливым сообщением, а не молчать — логируйте ошибки в Sentry.
Архитектурно полезно держать слой «handlers» тонким, бизнес-логику — в services; см. основы ООП для структурирования такого кода.
Нагрузочное тестирование перед запуском
Перед рекламной кампанией прогоните webhook endpoint через locust или k6: 50–100 RPS на health URL, убедитесь что nginx и Python выдерживают. Проверьте лимиты Telegram — массовая рассылка без throttling даст 429. На VPS следите за ulimit -n (открытые файлы) при высокой concurrency.
Резервное копирование состояния бота
- Ежедневный dump PostgreSQL в object storage.
- Экспорт критичных Redis keys если FSM хранится там.
- Копия
.envв зашифрованном виде (не в открытом Telegram!). - Документированная процедура восстановления на чистом VPS за 30–60 минут.
Часто задаваемые вопросы
Какой VPS лучше для Telegram-бота на Python в 2026?
Для большинства ботов достаточно budget VPS с 1 vCPU и 1–2 GB RAM в РФ/СНГ (Beget, Timeweb и аналоги). Критичны стабильность сети, HTTPS и systemd, а не бренд гипerscaler’а.
Можно ли хостить бота на бесплатном хостинге?
Для эксперimentов — иногда. Для business-бота бесплатные платформы не дают SLA, sleep-режим и ограничения по процессам делают их ненадёжными.
Нужен ли домен для webhook?
Telegram требует HTTPS с валидным сертификатом. Практически — да, нужен домен (можно недорогой .ru) и A-запись на VPS.
aiogram или python-telegram-bot?
Оба подходят для production. aiogram 3 удобен для чистого async; PTB — для сложных диалогов и JobQueue. Выбор — вкусовой и командный.
Как обновлять бота без простоя?
На одном VPS: git pull, pip install, systemctl restart telegram-bot. Простой 1–3 секунды. Для zero-downtime — два инстанса за балансировщиком (редко нужно SMB-ботам).
Что делать при ошибке 429 от Telegram?
Снизить частоту запросов, добавить backoff, вынести массовые рассылки в очередь с лимитами API.
Где почитать про деплой именно на Beget?
В материале как написать Telegram-бота и разместить его на хостинге Beget — пошагово от кода до работающего webhook.
Разрабатываем Telegram-ботов, CRM и автоматизацию под ключ: от архитектуры и деплоя на VPS до интеграций с оплатой, складом и внутренними системами. Если нужен бот, который не падает ночью — напишите через prizraks.ru, обсудим задачу и подберём инфраструктуру.
Подборка онлайн-курсов для разработчиков — Python, Java, веб и DevOps.
Разберём задачу по VPS/Linux, DNS, WordPress, Telegram-ботам и интеграциям. Стоимость определяется после оценки объёма.
Статья может содержать партнёрские ссылки. Это не влияет на стоимость для вас, но помогает развивать блог.
