В статье разберём, куда разместить Telegram-бота для работы 24/7: VPS, systemd, PM2 и Docker. Примеры команд и конфигов — чтобы можно было повторить по шагам.
Где запускать бота
Нужен сервер, который всегда онлайн: свой VPS (JustHost, Timeweb, Selectel, DigitalOcean и т.д.), облако или PaaS. На сервере устанавливаете Python или Node.js, ставите бота и настраиваете автозапуск (systemd или PM2), чтобы после перезагрузки бот поднимался сам.
VPS: пошаговая настройка (Python)
- Подключитесь по SSH, установите Python 3.10+ и создайте проект:
mkdir -p /var/www/bot && cd /var/www/bot. - Создайте виртуальное окружение и установите зависимости:
python3 -m venv venv && source venv/bin/activate && pip install aiogram aiohttp(и ваши пакеты изrequirements.txt). - Проверьте запуск:
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 удобен для переноса и облака. Не забудьте хранить токен в переменных окружения, а не в коде.