Сколько ресурсов нужно
Обычный бот отвечает на сообщения, читает базу и ходит во внешние API. Это лёгкая нагрузка. Для старта хватает 1 ядра и 1 ГБ памяти. Дисковое место зависит от ваших данных, но для кода и небольшой базы его нужно немного.
Ресурсов потребуется больше, если бот:
- обрабатывает картинки, видео или большие файлы;
- держит в памяти большие данные;
- запускает тяжёлые вычисления;
- обслуживает много людей одновременно.
VPS с такими параметрами есть в базе. Самый дешёвый из 70 тарифов стоит от 140 ₽ в месяц, но он может быть слабее, чем нужно вам, поэтому смотрите на число ядер и объём памяти, а не только на цену. Для лёгкого бота ориентируйтесь на тарифы с 1 ядром и 1 ГБ или чуть больше, чтобы остался запас на систему и обновления. Подходящие варианты показывает страница VPS для Telegram-бота и конфигурация 1 ядро, 1 ГБ.
Проверено на сервере 5 октября 2026 года: шаги 3–7 этой статьи выполнены по порядку на новом VPS с Ubuntu 26.04. Для Ubuntu 24.04 команды те же, но на ней мы их не прогоняли.
Шаг 1. Купите VPS с Ubuntu
Выберите тариф и при заказе укажите образ системы Ubuntu 24.04 или 26.04. После оплаты хостер пришлёт IP-адрес сервера, логин (чаще всего root) и пароль или предложит загрузить SSH-ключ.
Если вы впервые настраиваете сервер, сначала прочитайте первую настройку VPS на Ubuntu.
Шаг 2. Подключитесь по SSH
SSH — это защищённое подключение к консоли сервера. В терминале на вашем компьютере выполните:
ssh root@IP_АДРЕС
Команда открывает консоль сервера под пользователем root. Вместо IP_АДРЕС подставьте адрес из письма хостера. Подробности есть в статье подключение к VPS по SSH.
Шаг 3. Поставьте Python и виртуальное окружение
apt update
apt install -y python3 python3-venv python3-pip
Первая команда обновляет список пакетов. Вторая ставит Python, модуль venv для виртуальных окружений и менеджер пакетов pip. В Ubuntu 24.04 стоит Python 3.12, в Ubuntu 26.04 Python 3.14.
Виртуальное окружение нужно, чтобы библиотеки бота не смешивались с системными. В Ubuntu 24.04 и 26.04 установка пакетов pip в системный Python по умолчанию запрещена, поэтому venv здесь обязателен.
Создайте отдельного пользователя для бота, чтобы он не работал от root:
adduser --disabled-password --gecos "" botuser
Команда создаёт пользователя botuser без пароля и без лишних вопросов.
Шаг 4. Залейте код и поставьте зависимости
С вашего компьютера скопируйте папку с ботом на сервер:
scp -r ./mybot root@IP_АДРЕС:/home/botuser/
Команда копирует папку mybot на сервер в домашний каталог botuser. Если код лежит в Git, можно вместо этого выполнить git clone на сервере (для этого понадобится apt install -y git).
Дальше на сервере:
chown -R botuser:botuser /home/botuser/mybot
su - botuser
cd mybot
python3 -m venv venv
venv/bin/pip install -r requirements.txt
exit
По строкам: отдаём файлы пользователю botuser, переключаемся на него, заходим в папку бота, создаём окружение venv, ставим в него библиотеки из requirements.txt и возвращаемся в root.
Шаг 5. Храните токен в переменных окружения
Токен, который выдал @BotFather, даёт полный доступ к боту. Не пишите его в код и не кладите в Git. Положите в файл с настройками, закрытый от других пользователей:
nano /home/botuser/mybot.env
Содержимое файла:
BOT_TOKEN=сюда_ваш_токен
Затем ограничьте доступ:
chown botuser:botuser /home/botuser/mybot.env
chmod 600 /home/botuser/mybot.env
Первая строка делает владельцем файла botuser, вторая разрешает читать и менять файл только владельцу. В коде токен читается так: os.environ["BOT_TOKEN"].
Шаг 6. Запустите бота как службу systemd
systemd — менеджер служб в Ubuntu. Он запускает программу при старте сервера и перезапускает её, если она упала. Создайте файл:
nano /etc/systemd/system/mybot.service
Пример содержимого (пути и имя файла bot.py замените на свои):
[Unit]
Description=Telegram bot
After=network-online.target
Wants=network-online.target
[Service]
Type=simple
User=botuser
WorkingDirectory=/home/botuser/mybot
EnvironmentFile=/home/botuser/mybot.env
ExecStart=/home/botuser/mybot/venv/bin/python bot.py
Restart=always
RestartSec=5
[Install]
WantedBy=multi-user.target
Что здесь важно: EnvironmentFile подключает токен, ExecStart запускает Python из вашего окружения, Restart=always перезапускает бота после сбоя через 5 секунд.
Включите и запустите службу:
systemctl daemon-reload
systemctl enable --now mybot
systemctl status mybot
Первая команда перечитывает файлы служб. Вторая включает автозапуск и сразу запускает бота. Третья показывает состояние: должно быть active (running).
Как смотреть журнал
Всё, что бот печатает в консоль, systemd собирает в журнал:
journalctl -u mybot -f
Команда показывает записи службы mybot и продолжает выводить новые (выход по Ctrl+C). Чтобы увидеть последние 100 строк, добавьте -n 100 вместо -f.
После изменения кода перезапустите службу командой systemctl restart mybot.
Что делать дальше
- Подберите тариф: VPS для Telegram-бота или подбор по параметрам.
- Настройте резервные копии VPS, если в боте есть база пользователей.
- Если бот растёт и памяти не хватает, смотрите конфигурацию 2 ядра, 2 ГБ.
Цены в базе сверены 5 октября 2026 года.
