Назад к статьям

Хостинг для телеграм бота: VPS и облако

В статье разберём, куда разместить Telegram-бота для работы 24/7: VPS, systemd, PM2 и Docker. Примеры команд и конфигов — чтобы можно было повторить по шагам.

Где запускать бота

Нужен сервер, который всегда онлайн: свой VPS (JustHost, Timeweb, Selectel, DigitalOcean и т.д.), облако или PaaS. На сервере устанавливаете Python или Node.js, ставите бота и настраиваете автозапуск (systemd или PM2), чтобы после перезагрузки бот поднимался сам.

VPS: пошаговая настройка (Python)

  1. Подключитесь по SSH, установите Python 3.10+ и создайте проект: mkdir -p /var/www/bot && cd /var/www/bot.
  2. Создайте виртуальное окружение и установите зависимости: python3 -m venv venv && source venv/bin/activate && pip install aiogram aiohttp (и ваши пакеты из requirements.txt).
  3. Проверьте запуск: BOT_TOKEN=ваш_токен python -m bot.main. Остановите (Ctrl+C) и настройте systemd.

Unit systemd — бот будет работать как служба и перезапускаться при падении. Файл создаётся в /etc/systemd/system/telegram-bot.service:

# /etc/systemd/system/telegram-bot.service [Unit] Description=Telegram Bot After=network.target [Service] Type=simple User=www-data WorkingDirectory=/var/www/bot ExecStart=/var/www/bot/venv/bin/python -m bot.main Restart=always RestartSec=10 Environment=PYTHONUNBUFFERED=1 Environment=BOT_TOKEN=ваш_токен_здесь [Install] WantedBy=multi-user.target

Команды после сохранения файла: sudo systemctl daemon-reload && sudo systemctl enable telegram-bot && sudo systemctl start telegram-bot. Проверка: sudo systemctl status telegram-bot. Логи: journalctl -u telegram-bot -f.

Node.js: PM2

Если бот на Node.js, удобно использовать PM2: автоперезапуск, логи, запуск при старте системы. Пример:

npm install -g pm2 cd /path/to/bot pm2 start bot.js --name telegram-bot pm2 save pm2 startup # выполнить команду, которую выведет pm2 (для автозапуска после перезагрузки)

Docker

Бота можно упаковать в образ и запускать в любом облаке. Для webhook нужен домен с SSL (например Let's Encrypt через Certbot). Документация: Docker. Минимальный Dockerfile:

# Dockerfile FROM python:3.11-slim WORKDIR /app COPY requirements.txt . RUN pip install --no-cache-dir -r requirements.txt COPY . . CMD ["python", "-m", "bot.main"]

Сборка и запуск (токен через переменную окружения): docker build -t telegram-bot . && docker run -d --restart unless-stopped -e BOT_TOKEN=ваш_токен telegram-bot. Логи: docker logs -f <container_id>.

Итоги

Для большинства ботов достаточно VPS с systemd (Python) или PM2 (Node.js). Docker удобен для переноса и облака. Не забудьте хранить токен в переменных окружения, а не в коде.