Для простого бота с long polling начните с 1 vCPU, 1 ГБ RAM и 15–20 ГБ диска. Для бота с Docker, отдельным воркером или базой закладывайте 2–4 ГБ и проверяйте расход памяти.
Оцените, что должно работать на сервере
Для бота, который принимает команды, отвечает текстом и обращается к внешнему API, основной расход памяти обычно дают среда выполнения, библиотеки и параллельные задачи. Учитывайте память системы, журнала и процессов, которые стартуют вместе с ботом.
| Сценарий | Стартовая конфигурация | Что смотреть после запуска |
|---|---|---|
| Текстовый бот, Python или Node.js | 1 vCPU · 1 ГБ · 15–20 ГБ | Память процесса и рост логов |
| Бот и отдельный воркер | 2 vCPU · 2 ГБ · 25–30 ГБ | Длина очереди и время ответа |
| Бот, воркер и PostgreSQL на одном VPS | 2 vCPU · 4 ГБ · 40 ГБ | Память и место под базу и копии |
Это отправные точки. Для обработки фото, видео и больших файлов сначала измерьте расход RAM на одном задании и отдельно проверьте пик на нескольких задачах.
Выберите способ приёма сообщений
Long polling. Бот сам обращается к Telegram через getUpdates. Для этого ему нужен исходящий доступ к API. Отдельный домен и входящий HTTPS для получения обновлений обычно не нужны. Запускайте один активный процесс polling на токен.
Webhook. Telegram отправляет событие на заданный HTTPS-адрес. Подготовьте доступный извне endpoint, TLS и проверку заголовка с секретом webhook. Сначала получите тестовое событие из обычного чата, затем перезапустите приложение и повторите проверку.
Проверьте расход ресурсов и перезапуск
free -m
df -h
docker compose ps
docker stats --no-stream
Последние две команды нужны для запуска через Docker Compose. Проверьте бота после перезапуска процесса и перезагрузки VPS. Если есть пользовательские данные, один раз восстановите копию базы в отдельное место. Для нескольких контейнеров пригодится чек-лист запуска Docker Compose.
Источники
Посчитайте итог перед заказом
Подставьте реальные цены на сервер, IPv4 и бэкапы.