Телеграм-боту нужен не «мощный сервер», а круглосуточно работающий процесс: справочному боту на сотню пользователей хватает 1 ядра, 512 МБ памяти и 10 ГБ диска, а это тарифы от 139 ₽/мес. Планка поднимается, когда бот начинает что-то считать сам: рассылка на 10 тысяч подписчиков просит 2 ядра и 2 ГБ, а обработка фото и видео — 2–4 ядра и 4 ГБ. Готовые конфигурации под такую задачу собраны в разделе VPS для телеграм-бота, где 10 провайдеров и цены стартуют со 139 ₽/мес.
Материал для того, кто написал бота на Python или Node.js и впервые выбирает, куда его поселить. Разберём, что именно ест память и чем long polling отличается от вебхука по требованиям к железу. Посчитаем конфигурацию под три типовых профиля нагрузки, выясним, когда боту нужна очередь задач, и сравним цены. В конце — план из семи шагов, как поднять сервер, который не упадёт через неделю.
Что делает сервер, пока бот отвечает пользователям
Telegram не хранит и не запускает ваш код. На его стороне только мессенджер и Bot API — интерфейс, через который программа получает новые сообщения и отправляет ответы. Сам бот — это обычный процесс, который должен крутиться без остановки: как только он завершается, кнопки перестают работать и пользователи видят молчание.
Отсюда требование к площадке: непрерывная работа 24 часа в сутки без перезагрузок и засыпаний. Домашний ноутбук отпадает — закрыли крышку, и бот умер; отключили свет на 10 минут, и бот умер. Поэтому под задачу берут виртуальный сервер, где процесс живёт годами, а перезапуск после сбоя делает системная служба. Общее описание такой площадки есть в глоссарии — хостинг телеграм-бота.
Ресурсы делятся на четыре части. Процессор разбирает ответы API и жмёт картинки, память держит запущенный процесс с библиотеками, диск хранит код, базу и логи, сеть возит запросы к api.telegram.org — один вызов возвращается за 50–300 мс.
Лимиты самого Telegram тоже влияют на расчёт. Bot API пропускает около 30 сообщений в секунду в разные чаты и не больше 20 сообщений в минуту в одну группу, поэтому рассылка на 10 000 человек не уйдёт быстрее чем за 5–6 минут, сколько бы ядер вы ни купили.
Long polling или вебхук: как способ приёма сообщений меняет требования к серверу
Есть два способа узнать, что пользователь что-то написал. Long polling — бот сам дёргает метод getUpdates и держит соединение открытым 30–50 секунд, ожидая ответа. Никакого входящего трафика извне, никакого домена: машина может стоять за любым фильтром и всё равно работать.
Вебхук — обратная схема. Вы один раз сообщаете Telegram адрес вида https://bot.example.ru/hook, и дальше серверы мессенджера сами присылают POST-запрос на каждое событие. Для этого нужен домен и действующий TLS-сертификат — файл, который подтверждает подлинность вашего адреса и включает шифрование. Без HTTPS Telegram вебхук не примет. Бесплатный сертификат Let’s Encrypt выдаётся на 90 дней и продлевается автоматически по расписанию.
По памяти разница невелика — 20–40 МБ в пользу вебхука за счёт того, что не нужно постоянно держать исходящее соединение. По задержке разница заметнее: вебхук доставляет событие за 100–400 мс, long polling добавляет паузу до 1–2 секунд на закрытие текущего запроса. На боте с меню это не видно, на игровом или биржевом — видно сразу.
| Признак | Long polling | Вебхук |
|---|---|---|
| Нужен домен | Нет | Да |
| Нужен HTTPS-сертификат | Нет | Да, обязательно |
| Задержка ответа | до 1–2 с | 100–400 мс |
| Расход памяти сверх базы | 20–40 МБ | около 0 |
| Открытые порты | Только исходящие | 443, 80, 88 или 8443 |
| Кому подходит | Первый бот, до 1000 пользователей | Рассылки, платежи, от 5000 пользователей |

Из чего складывается потребление памяти телеграм-ботом
Цифра «512 МБ» звучит абстрактно, пока не разложить её на слои. Начинается всё с системы: Ubuntu 24.04 в минимальной установке без графики занимает 120–180 МБ в простое, Debian того же поколения — 90–140 МБ.
Дальше идёт среда выполнения. Пустой процесс Python 3.12 весит 15–25 МБ, поверх ложится библиотека для работы с ботами: aiogram или python-telegram-bot добавляют 20–40 МБ. Node.js прожорливее — runtime стартует с 35–50 МБ. Ваш код на этом фоне почти невесом, пока не грузит данные в память целиком.
Последний слой — база. SQLite не отдельный процесс, а файл, поэтому расход близок к нулю. PostgreSQL забирает 80–150 МБ даже без единого запроса, MySQL — 150–250 МБ. Отсюда правило: SQLite до нескольких десятков тысяч записей, полноценная СУБД дальше, но тогда сразу закладывайте 2 ГБ.
Итого простой бот на long polling с SQLite укладывается в 256–512 МБ. Если памяти всё-таки не хватит, ядро Linux запустит механизм OOM Killer и молча убьёт самый жирный процесс — чаще всего именно бота. Файл подкачки на 1–2 ГБ спасает от мгновенной смерти, но замедляет работу в десятки раз, поэтому это костыль, а не решение.
Три профиля нагрузки: 100 пользователей, 10 тысяч и обработка файлов
Точный расчёт делается не по числу подписчиков, а по тому, что бот делает с каждым сообщением. Ниже три профиля, которые покрывают почти все реальные задачи. Определите, к какому ближе ваш проект, и берите конфигурацию оттуда.
Профиль 1: справочный бот на 100–500 пользователей
Меню, кнопки, ответы из готового текста, запись заявки в базу. Пиковая нагрузка — 5–15 сообщений в минуту, каждое обрабатывается за 10–50 мс. Процессор занят 1–3 % времени, всё остальное машина простаивает. Хватает 1 ядра, 512 МБ–1 ГБ памяти и 10 ГБ диска. Такие тарифы лежат в разделе недорогие VPS и стоят 139–200 ₽/мес.
Профиль 2: бот на 10 тысяч подписчиков с рассылками
Здесь появляется массовая отправка. Разослать 10 000 сообщений при лимите 30 в секунду — это 5–6 минут работы, в течение которых бот должен продолжать отвечать живым людям. Нужен асинхронный код — такой, где отправка рассылки не блокирует остальные ответы, — и запас памяти под очередь исходящих сообщений. Расчётная конфигурация: 2 ядра, 2 ГБ памяти, 20–30 ГБ NVMe, PostgreSQL вместо SQLite, вебхук вместо long polling.
Профиль 3: бот с обработкой картинок, видео и документов
Как только бот сам что-то конвертирует, узкое место переезжает в процессор. Сжать фотографию 5 МБ до превью занимает 0,3–1 секунду одного ядра, распознать текст на скане — 2–5 секунд, перекодировать минуту видео — 20–60 секунд. Память уходит на буферы: снимок 4000×3000 точек библиотека разворачивает в несжатый вид размером около 46 МБ. Нужны 2–4 ядра, 4 ГБ памяти и 40 ГБ диска; подходящие сборки есть в разделе VPS для Python.
| Профиль | Ядра | Память | Диск | Схема приёма | База |
|---|---|---|---|---|---|
| Справочный, до 500 пользователей | 1 | 512 МБ–1 ГБ | 10 ГБ | Long polling | SQLite |
| Рассылки, до 10 000 подписчиков | 2 | 2 ГБ | 20–30 ГБ NVMe | Вебхук | PostgreSQL |
| Обработка фото и документов | 2–4 | 4 ГБ | 40 ГБ NVMe | Вебхук | PostgreSQL |
| Обработка видео | 4–8 | 8 ГБ | 80–100 ГБ NVMe | Вебхук | PostgreSQL |
Когда боту нужна очередь задач и что она добавляет к конфигурации
Простое правило: если обработка одного сообщения длится дольше одной секунды, нужна очередь. Без неё бот отвечает по очереди и превращается в турникет — пока он полторы минуты жмёт чужое видео, остальные тридцать человек ждут и уходят.
Очередь разрывает эту связь. Бот принимает файл, кладёт задачу в список и сразу отвечает «взял в работу, пришлю через пару минут». Отдельная программа-воркер разбирает список и выполняет тяжёлую часть в своём темпе. В связке Python это обычно Redis как хранилище очереди — быстрая база, которая держит данные прямо в оперативной памяти, — плюс Celery, RQ или arq как исполнитель.
На железо это влияет предсказуемо. Redis в простое занимает 8–15 МБ и почти не грузит процессор. Каждый воркер — это ещё один процесс со своей копией библиотек, то есть 60–120 МБ памяти и одно ядро под пиковую задачу. Схема «бот + 2 воркера + Redis» добавляет примерно 1 ГБ памяти к базовой конфигурации.
Разворачивать этот набор удобнее контейнерами: три сервиса описываются в одном файле и поднимаются одной командой. Пошаговый разбор установки бота на сервер есть в отдельном руководстве — как развернуть телеграм-бота на VPS.

Сколько места занимают база, файлы и логи
Диск — единственный ресурс, который заканчивается тихо и внезапно. У бота три потребителя места, и два из них растут сами по себе. База данных обычно скромна: таблица на 10 000 пользователей с историей последних действий весит 5–20 МБ, и даже за год активной работы редко переваливает за 500 МБ. Логи опаснее. Это текстовые журналы, куда программы пишут всё, что с ними происходит.
Без настроенной ротации — автоматического удаления старых записей — системный журнал набирает 50–200 МБ в месяц, а бот с подробным отладочным выводом легко даёт 1–2 ГБ. Ограничение размера журнала настраивается один раз и решает проблему навсегда.
Файлы пользователей — главная статья расхода, но их можно не хранить вовсе. Telegram сам держит все загруженные файлы и возвращает идентификатор file_id, по которому файл отправляется обратно без повторной загрузки. Скачивать на сервер имеет смысл только то, что нужно обработать; через Bot API бот скачивает файлы до 20 МБ и отправляет до 50 МБ.
Если файлы всё-таки хранятся у вас, считайте просто: 1000 фотографий по 300 КБ — это 300 МБ, тысяча PDF-договоров по 2 МБ — 2 ГБ. Диска на 10 ГБ хватит справочному боту на годы, файловому лучше сразу брать 40–100 ГБ.
Сколько стоит сервер под каждый профиль
Цены в разделе начинаются со 139 ₽/мес, и на этой сумме реально работает первый бот. Разброс между провайдерами в нижнем сегменте невелик, поэтому смотреть стоит не только на цифру, но и на тип диска: HDD за те же деньги даёт в 5–10 раз меньше операций в секунду, и на базе данных это чувствуется.
В таблице — стартовые тарифы десяти провайдеров раздела вместе с тем, что входит в минимальную конфигурацию.
| Провайдер | Цена от | Базовая конфигурация | Тарифов в линейке | Оценка |
|---|---|---|---|---|
| RuVDS | 139 ₽/мес | 1 ядро, 0,5 ГБ, 10 ГБ HDD | 440 | 4,3 |
| 4VPS | 150 ₽/мес | 1 ядро, 1 ГБ, 10 ГБ NVMe | 487 | 4,0 |
| FASTVPS | 165 ₽/мес | 1 ядро, 1 ГБ, 10 ГБ SSD | 36 | 3,8 |
| JustHost.ru | 193 ₽/мес | 1 ядро, 1 ГБ, 20 ГБ NVMe | 27 | 3,8 |
| Selectel | 200 ₽/мес | 1 ядро, 1 ГБ, 10 ГБ NVMe | 69 | 4,5 |
| AdminVPS | 299 ₽/мес | 1 ядро, 1 ГБ, 15 ГБ NVMe | 149 | 4,5 |
| Beget | 330 ₽/мес | 1 ядро, 1 ГБ, 10 ГБ NVMe | 7 | 4,5 |
| IQHost | 350 ₽/мес | 1 ядро, 2 ГБ, 15 ГБ SSD | 17 | 4,0 |
| Timeweb Cloud | 477 ₽/мес | 1 ядро, 1 ГБ, 15 ГБ NVMe | 4 | 4,5 |
| Aéza | 593 ₽/мес | 1 ядро, 2 ГБ, 30 ГБ NVMe | 151 | 4,6 |
Данные проверены 04.09.2026.
Самый дешёвый вход даёт RuVDS — 139 ₽/мес, но там 0,5 ГБ памяти и обычный диск, то есть это вариант ровно под профиль 1 с SQLite. Ближайшая ступень с NVMe и целым гигабайтом — 4VPS за 150 ₽/мес, и это разумная точка старта для большинства ботов. Когда дойдёт до второго профиля, посмотрите на Selectel: линейка из 69 тарифов позволяет добавлять ядра и память по одному шагу, не переезжая на другую машину.
Виртуальный хостинг, бесплатные площадки и VPS: что подойдёт боту
Обычный виртуальный хостинг под сайты боту не подходит: он рассчитан на короткие запросы к PHP-скриптам и глушит фоновые процессы. Есть отдельные тарифы, где провайдер разрешает держать постоянный процесс и даёт нужную версию интерпретатора — они собраны в разделе хостинг для Python-ботов.
Бесплатные площадки выглядят заманчиво, пока не прочитаешь условия: контейнер засыпает после 15–30 минут без запросов, а лимит работы обычно составляет 500–750 часов в месяц. Для учебного бота это нормально, для рабочего — источник необъяснимых пропаж. Что дают такие сервисы, разобрано в материале про бесплатный хостинг для телеграм-бота.
Виртуальный сервер выигрывает полным доступом к системе, отсутствием ограничений на фоновые процессы и предсказуемой ценой. За 150–200 ₽/мес рядом с ботом спокойно живут база, очередь и панель статистики.
Как выбрать и запустить сервер за семь шагов
Порядок ниже занимает 30–40 минут, если делать впервые. Ничего специфического для Telegram в первых шагах нет — это обычная подготовка машины.
- Определите профиль по таблице выше и выберите тариф: для первого бота — 1 ядро, 1 ГБ памяти, 10 ГБ NVMe, локация ближе к вашим пользователям.
- При заказе выберите Ubuntu 24.04 LTS или Debian 12 — обе поддерживаются до 2028–2029 годов, документации по ним больше всего.
- Сразу после выдачи добавьте SSH-ключ — пару файлов, которая заменяет пароль при входе на сервер, — и отключите вход по паролю в файле /etc/ssh/sshd_config. Это закрывает 90 % автоматических атак на порт 22/TCP.
- Выполните apt update (обновляет список доступных пакетов) и apt upgrade (устанавливает свежие версии). Затем создайте обычного пользователя: запускать бота от root, всемогущей учётной записи администратора, не нужно.
- Поставьте нужную среду — python3-venv для Python или Node.js из официального репозитория — и разверните код в отдельном каталоге с виртуальным окружением.
- Оформите бота как службу systemd — это встроенный в Linux механизм автозапуска программ — с параметром Restart=always: тогда после сбоя или перезагрузки сервера процесс поднимется сам за 2–5 секунд.
- Настройте ротацию логов, ежедневный бэкап базы и внешнюю проверку доступности, чтобы узнавать о падении раньше пользователей.
Вебхук добавляется отдельно и только когда нужен: направьте домен на IP-адрес сервера, выпустите сертификат, поднимите веб-сервер на порту 443/TCP и один раз вызовите метод setWebhook — он сообщает Telegram, куда присылать события.
Как проверить, что серверу хватает ресурсов
Гадать не нужно — три команды показывают всю картину. Команда free -m печатает занятую и свободную память в мегабайтах; если в строке подкачки занято больше 100–200 МБ, оперативной памяти уже мало. Команда uptime показывает среднюю загрузку за 1, 5 и 15 минут: цифра выше числа ядер означает, что задачи выстраиваются в очередь.
Третья команда — top или htop — показывает, сколько процессорного времени съедает каждый процесс, и заодно колонку st. Это CPU steal time, доля времени, которую у вашей машины отбирают соседи по физическому серверу. Постоянные 5–10 % в этой колонке значат, что провайдер посадил на одно железо слишком много клиентов. Лечится это только переездом.
Разовые замеры ничего не ловят: проблемы случаются ночью или во время рассылки. Поставьте постоянный мониторинг с уведомлениями в тот же Telegram — минимальный набор проверок занимает 50–80 МБ памяти и разворачивается за полчаса по инструкции как настроить мониторинг сервера.
Частые ошибки при выборе сервера под бота
Большинство проблем возникает не из-за слабого железа, а из-за неверных ожиданий на старте. Ниже то, что чаще всего приходится переделывать.
- Берут тариф с 256 МБ памяти под бота с PostgreSQL — база не стартует, а если стартует, её убивает нехватка памяти на первой сотне запросов.
- Считают нагрузку по числу подписчиков, а не по времени обработки сообщения: бот на 200 человек с распознаванием сканов тяжелее бота на 20 000 с кнопками.
- Запускают процесс командой в терминале через SSH — при закрытии сессии бот умирает; помогает только служба автозапуска.
- Выбирают HDD ради экономии 30–50 ₽/мес и получают базу, которая отвечает в 5–10 раз медленнее на тех же запросах.
- Настраивают вебхук на самоподписанный сертификат — выпущенный самостоятельно, без доверенного центра — и неделю ищут причину, почему Telegram не присылает обновления.
- Не ставят ротацию логов, и через 4–6 месяцев диск на 10 ГБ забивается журналом до отказа.
Частые вопросы
Какой сервер нужен для телеграм-бота на 100 пользователей? Достаточно самой младшей конфигурации: 1 ядро, 512 МБ–1 ГБ памяти, 10 ГБ диска. В деньгах это 139–200 ₽/мес. Процессор на таком боте загружен на 1–3 %, и запас нужен не под нагрузку, а под обновления и базу.
Хватит ли 512 МБ оперативной памяти? Хватит для бота на Python с SQLite и long polling: система заберёт 120–180 МБ, интерпретатор с библиотекой — ещё 40–60 МБ. Как только добавляется PostgreSQL или обработка изображений, 512 МБ заканчиваются и процесс убивает механизм нехватки памяти.
Нужен ли домен для телеграм-бота? Только для вебхука: Telegram отправляет обновления исключительно на HTTPS-адрес с действующим сертификатом. При работе через long polling домен не нужен вовсе — бот сам обращается к API по исходящему соединению.
Можно ли держать на одном сервере несколько ботов? Да, это обычная практика: три-четыре лёгких бота с общей базой живут на машине с 2 ГБ памяти, каждый добавляет 60–120 МБ. Разносить их стоит, когда один начинает грузить процессор и мешать остальным.
Сколько дискового пространства заложить? Справочному боту хватает 10 ГБ: код весит десятки мегабайт, база — до 500 МБ, остальное съедают система и логи. Боту с хранением пользовательских файлов нужно 40–100 ГБ, но чаще выгоднее работать через идентификаторы файлов Telegram.
Что выбрать новичку — Ubuntu или Debian? Ubuntu 24.04 LTS выигрывает объёмом инструкций, Debian 12 — экономией 30–50 МБ памяти в простое, что заметно на тарифе с 512 МБ. Обе системы получают обновления безопасности до 2028–2029 годов.
Когда пора переезжать на более мощный тариф? Когда память занята больше чем на 85 % в обычном режиме, средняя загрузка держится выше числа ядер дольше 10 минут или пользователи ждут ответа больше 3 секунд. Апгрейд у большинства провайдеров делается за 5–10 минут с перезагрузкой машины.
Итог
Расчёт сводится к трём вопросам: сколько сообщений в минуту приходит, дольше ли секунды длится обработка одного из них и храните ли вы файлы у себя. Ответы дают конфигурацию: 1 ядро и 512 МБ–1 ГБ за 139–200 ₽/мес для справочного бота, 2 ядра и 2 ГБ для рассылок на 10 тысяч человек, 2–4 ядра и 4 ГБ для обработки картинок. Начинать почти всегда стоит с младшего тарифа и long polling. Сравнить цены десяти провайдеров можно в разделе серверы для телеграм-ботов.