Как запустить Telegram-бота на VPS за 10 минут — гайд для новичков
📖 Гайды

Как развернуть Telegram-бота на VPS за 10 минут: пошаговый гайд

Марина
Марина
📅 8 июля 2026 ⏱ 9 мин чтения 👁 161 просмотров
Как развернуть Telegram-бота на VPS за 10 минут: пошаговый гайд

Вы написали Telegram-бота, он отлично работает на вашем компьютере… ровно до тех пор, пока вы его не выключите. Ноутбук закрыт — бот молчит, интернет мигнул — бот молчит. Решение простое: перенести бота на VPS — арендованный сервер, который работает круглосуточно. Стоит это от 150 ₽ в месяц, а весь переезд занимает минут десять, даже если вы никогда не работали с серверами.

В этом гайде разберём всё по шагам и простыми словами: что арендовать, как подключиться, куда положить код и как сделать так, чтобы бот сам поднимался после любых сбоев. Примеры — для бота на Python (aiogram), но схема один в один работает для Node.js, PHP и Go.

Что понадобится

  • Готовый бот — файл или папка с кодом, который уже запускается у вас командой вроде python bot.py.
  • Токен бота — строка вида 123456789:AAE…, которую выдал @BotFather при создании бота.
  • VPS — арендуем на шаге 1, ничего заранее покупать не нужно.
  • 10 минут времени. Ни домен, ни SSL-сертификат для старта не нужны.

Шаг 1. Арендуем VPS (2 минуты)

VPS (виртуальный сервер) — это ваш собственный кусочек настоящего сервера в дата-центре: со своей операционной системой, памятью и постоянным интернет-соединением. В отличие от обычного «хостинга для сайтов», здесь вы можете запускать любые программы — в том числе бота.

Для простого бота хватит минимальной конфигурации: 1 процессорное ядро, 1 ГБ оперативной памяти, 10 ГБ диска. Такие тарифы стоят 150–300 ₽/мес — сравнить провайдеров удобно в рейтинге VPS для Telegram: там собраны конфигурации под ботов, цены и пинг до серверов Telegram. Хотите сначала попробовать бесплатно — берите сервер с пробным периодом.

При заказе выберите операционную систему Ubuntu 24.04 LTS — это самый распространённый Linux, под который написаны все инструкции в интернете. После оплаты провайдер пришлёт на почту три вещи: IP-адрес сервера (например, 185.104.114.90), логин (обычно root) и пароль.

Шаг 2. Подключаемся к серверу (1 минута)

К серверу подключаются по SSH — это защищённый «удалённый терминал»: вы печатаете команды у себя, а выполняются они на сервере.

На Windows: откройте PowerShell (Пуск → наберите «PowerShell»). На macOS или Linux: откройте Терминал. Дальше всё одинаково — введите команду, подставив свой IP:

ssh root@185.104.114.90

При первом подключении система спросит «Are you sure you want to continue connecting?» — наберите yes. Затем вставьте пароль из письма провайдера. Важно: при вводе пароля на экране ничего не отображается — ни звёздочек, ни точек. Это нормально, просто вставьте его (в PowerShell — правой кнопкой мыши) и нажмите Enter.

Если в строке приглашения появилось что-то вроде root@server:~# — поздравляю, вы внутри сервера.

Шаг 3. Готовим сервер (3 минуты)

Сначала обновим систему — это как «установить все обновления Windows», только одной командой:

apt update && apt upgrade -y

Теперь поставим Python-инструменты и git (если бот на Node.js — вместо этого apt install -y nodejs npm):

apt install -y python3-venv python3-pip git

Дальше создадим отдельного пользователя для бота. Работать всё время под root — плохая идея: одна опечатка в команде может снести систему. Пользователь с ограниченными правами безопаснее:

adduser botuser

Система попросит придумать пароль (запомните его) и задаст несколько вопросов про имя и телефон — их можно пропустить, нажимая Enter. Переключаемся на нового пользователя:

su - botuser

Шаг 4. Переносим код бота (2 минуты)

Способ 1 — через git (если код в репозитории):

git clone https://github.com/ваш_логин/mybot.git

Способ 2 — прямое копирование. Откройте на своём компьютере ВТОРОЕ окно терминала (не закрывая первое) и выполните:

scp -r ./mybot botuser@185.104.114.90:~/

Команда scp копирует папку mybot с вашего компьютера в домашнюю папку пользователя botuser на сервере. Пароль — тот, что вы придумали для botuser.

Теперь (в окне с сервером) создадим виртуальное окружение — изолированную «песочницу» для библиотек Python, чтобы зависимости бота не конфликтовали с системными:

cd ~/mybot
python3 -m venv venv
source venv/bin/activate
pip install aiogram

Если у бота есть файл requirements.txt со списком библиотек — вместо последней строки выполните pip install -r requirements.txt.

Проверим, что бот вообще запускается:

python bot.py

Напишите боту в Telegram — он должен ответить. Работает? Отлично, остановите его сочетанием Ctrl+C и идём дальше — сейчас сделаем так, чтобы он работал всегда.

Шаг 5. Автозапуск через systemd (3 минуты)

Это самый важный шаг, который пропускают почти все новички. Если просто запустить бота командой python bot.py и закрыть терминал — бот умрёт вместе с сессией. Нужен «надзиратель», который будет держать бота запущенным всегда: после ошибок, перезагрузок сервера, чего угодно. В Linux этим занимается systemd.

Вернитесь в root-сессию (наберите exit или откройте новое подключение) и создайте файл службы:

nano /etc/systemd/system/mybot.service

Откроется простейший текстовый редактор. Вставьте туда этот текст (правой кнопкой мыши в PowerShell или Cmd+V на Mac), заменив токен на свой:

[Unit]
Description=Telegram Bot
After=network.target

[Service]
User=botuser
WorkingDirectory=/home/botuser/mybot
Environment="BOT_TOKEN=123456789:AAE..."
ExecStart=/home/botuser/mybot/venv/bin/python bot.py
Restart=always
RestartSec=5

[Install]
WantedBy=multi-user.target

Что тут написано, по-человечески: «запускай файл bot.py от имени botuser из папки бота; если бот упал — жди 5 секунд и запускай снова; стартуй автоматически при включении сервера». Строка Environment передаёт боту токен через переменную окружения — в коде читайте его как os.getenv("BOT_TOKEN"), а не храните строкой (иначе токен рано или поздно утечёт вместе с кодом).

Сохраните файл: Ctrl+O, Enter, затем Ctrl+X для выхода. Запускаем:

systemctl enable --now mybot
Терминал: systemctl status mybot — active (running)
Так выглядит успешно запущенный бот: active (running). Иллюстрация интерфейса.

Готово. Проверить, что бот жив: systemctl status mybot (должно быть зелёное «active (running)»). Посмотреть логи бота в реальном времени: journalctl -u mybot -f. Перезапустить после обновления кода: systemctl restart mybot.

Long Polling или Webhook — что это и что выбрать

Схема: Long Polling против Webhook для Telegram-бота
Long Polling: бот сам опрашивает Telegram. Webhook: Telegram сам присылает сообщения.

У бота есть два способа получать сообщения. Long Polling — бот сам постоянно спрашивает Telegram «есть что новое?». Именно так работает код выше: просто, надёжно, не нужны ни домен, ни сертификаты. Webhook — наоборот, Telegram сам стучится к боту при каждом сообщении: отклик быстрее и ресурсов тратится меньше, но нужны домен и HTTPS.

Правило простое: начинайте с Long Polling. Переходить на Webhook имеет смысл, когда бот вырос до ~30 сообщений в секунду. Подробный разбор конфигураций под нагрузку — в рейтинге VPS для Telegram.

Частые ошибки новичков

  • Запуск в screen/tmux вместо systemd. Кажется, что работает — до первой перезагрузки сервера. Только systemd.
  • Токен прямо в коде. Зальёте код на GitHub — токен утечёт, бота угонят. Только переменные окружения.
  • Работа под root. Одна опечатка — и системы нет. Заведите отдельного пользователя, это две команды.
  • Нет мониторинга. Бот может молчать сутками, пока кто-то не пожалуется. Бесплатный Uptime Robot проверяет бота каждые 5 минут и шлёт алерт при падении.
  • Сервер никогда не обновляется. Раз в месяц: apt update && apt upgrade -y. Ещё лучше — включить автообновления безопасности: apt install unattended-upgrades.

Частые вопросы

Сколько всё это стоит? Минимальный VPS под бота — 130–300 ₽/мес. Дешевле всего смотреть в рейтинге дешёвых VPS.

Потянет ли самый дешёвый тариф моего бота? Бот на 1 000–2 000 активных пользователей спокойно живёт на 1 ядре и 1 ГБ памяти. Упрётесь в лимиты — тариф апгрейдится в пару кликов без переезда.

Можно ли хостить несколько ботов на одном VPS? Да — заведите каждому свою папку и свой systemd-сервис (mybot1.service, mybot2.service). Памяти 1 ГБ хватит на 3–5 лёгких ботов.

Бот на Node.js/PHP — что меняется? Только установка окружения (nodejs вместо python3-venv) и строка ExecStart в systemd (node bot.js). Вся остальная схема идентична.

Что делать, если бот упал и не поднимается? Смотрите логи: journalctl -u mybot -n 50 покажет последние 50 строк — там будет текст ошибки Python. Чаще всего это опечатка в пути WorkingDirectory или невалидный токен.

Итог

Десять минут — и бот работает круглосуточно на сервере за 150–300 ₽/мес: сам перезапускается после сбоев, стартует при перезагрузке сервера и не зависит от вашего компьютера. Дальше по теме: подборка VPS для Python с готовыми окружениями и пробные VPS — если хотите сначала потренироваться бесплатно.

Поделиться:
Марина
Редактор · FREEHOSTING
Главный редактор FREEHOSTING. С 2020 года тестирует VDS, VPS и хостинг-провайдеров — арендует серверы, нагружает их реальными проектами и пишет честные обзоры по итогам. Помогает читателям выбирать хостинг под свои задачи: от Telegram-бота до production-сайта.