Как задеплоить 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 автоматизирует каждый шаг:
- Подключите сервер — BotOps установит агент одной командой
- Загрузите бинарник — BotOps создаст systemd-сервис автоматически
- Мониторинг и уведомления — из коробки
Вместо 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 берёт всю рутину на себя, позволяя сосредоточиться на разработке бота.