← Все статьи

Как задеплоить Telegram-бота на VPS за 5 минут

Введение

Вы написали Telegram-бота и хотите запустить его 24/7? В этом руководстве мы разберём полный процесс деплоя — от выбора VPS до настройки автоматического перезапуска.

Шаг 1: Выбор VPS

Для большинства ботов достаточно минимального VPS:

  • CPU: 1 ядро
  • RAM: 512 МБ — 1 ГБ
  • Диск: 10 ГБ SSD
  • ОС: Ubuntu 22.04 или 24.04

Популярные провайдеры: Hetzner, DigitalOcean, Timeweb Cloud, reg.ru. Стоимость — от 200–500 руб/мес.

Требования к серверу

Если бот работает с базой данных (PostgreSQL, SQLite), потребуется больше ресурсов:

  • RAM: 1–2 ГБ
  • Диск: 20+ ГБ

Если бот обрабатывает медиа (фото, видео), учитывайте трафик и дисковое пространство.

Шаг 2: Подключение к серверу

После покупки VPS вы получите IP-адрес и пароль root. Подключитесь по SSH:

ssh root@YOUR_SERVER_IP

Первые действия на сервере:

# Обновление системы
apt update && apt upgrade -y

# Создание пользователя (не работаем под root)
adduser botuser
usermod -aG sudo botuser

# Настройка SSH-ключей (рекомендуется)
ssh-copy-id botuser@YOUR_SERVER_IP

Шаг 3: Установка зависимостей

В зависимости от языка вашего бота:

Go-бот

Go-боты компилируются в один бинарник — зависимостей на сервере не нужно. Просто скопируйте бинарник:

scp ./mybot botuser@YOUR_SERVER_IP:/home/botuser/

Python-бот

sudo apt install python3 python3-pip python3-venv -y
python3 -m venv /home/botuser/bot-env
source /home/botuser/bot-env/bin/activate
pip install -r requirements.txt

Node.js-бот

curl -fsSL https://deb.nodesource.com/setup_20.x | sudo -E bash -
sudo apt install nodejs -y
npm install --production

Шаг 4: Настройка переменных окружения

Создайте файл с переменными:

cat > /home/botuser/.env << 'EOF'
BOT_TOKEN=123456:ABC-DEF...
DATABASE_URL=postgres://user:pass@localhost/botdb
LOG_LEVEL=info
EOF

chmod 600 /home/botuser/.env

Шаг 5: Создание systemd-сервиса

Systemd обеспечит автозапуск бота и перезапуск при падении:

sudo cat > /etc/systemd/system/mybot.service << 'EOF'
[Unit]
Description=My Telegram Bot
After=network.target

[Service]
Type=simple
User=botuser
WorkingDirectory=/home/botuser
EnvironmentFile=/home/botuser/.env
ExecStart=/home/botuser/mybot
Restart=always
RestartSec=5

[Install]
WantedBy=multi-user.target
EOF

Активируйте и запустите:

sudo systemctl daemon-reload
sudo systemctl enable mybot
sudo systemctl start mybot

Проверьте статус:

sudo systemctl status mybot
sudo journalctl -u mybot -f  # логи в реальном времени

Шаг 6: Мониторинг

Базовый мониторинг через systemd уже работает — бот перезапустится при падении. Для продвинутого мониторинга:

  • Логи: journalctl -u mybot --since "1 hour ago"
  • Ресурсы: htop, df -h
  • Уведомления: настройте webhook в бота для отправки ошибок вам в Telegram

Автоматизация с BotOps

Всё описанное выше — ручная работа. BotOps автоматизирует каждый шаг:

  1. Подключите сервер — BotOps установит агент одной командой
  2. Загрузите бинарник — BotOps создаст systemd-сервис автоматически
  3. Мониторинг и уведомления — из коробки

Вместо 30 минут ручной настройки — 5 минут в веб-интерфейсе.

Попробуйте BotOps бесплатно и задеплойте первого бота за 5 минут.

Частые проблемы

Бот не запускается

Проверьте логи: journalctl -u mybot -n 50. Частые причины:

  • Неправильный BOT_TOKEN
  • Нет прав на файл бинарника (chmod +x mybot)
  • Порт занят другим процессом

Бот падает через время

  • Утечка памяти — мониторьте RSS через ps aux | grep mybot
  • OOM Killer — увеличьте RAM или оптимизируйте бота
  • Проблемы с сетью — добавьте retry-логику для API-вызовов

Как обновить бота

# Скопируйте новый бинарник
scp ./mybot botuser@SERVER:/home/botuser/mybot

# Перезапустите сервис
ssh botuser@SERVER 'sudo systemctl restart mybot'

Заключение

Деплой Telegram-бота на VPS — несложный процесс, но требует внимания к деталям: systemd, переменные окружения, мониторинг. BotOps берёт всю рутину на себя, позволяя сосредоточиться на разработке бота.