Настройка сервера на Debian для Telegram-бота — это отличный выбор: система стабильная, легкая и надежная. Чтобы ваш бот работал 24/7, мы пройдем путь от базовой настройки ОС до запуска фонового процесса.
---
## 1. Подготовка системы
Первым делом обновите пакеты и установите базовые утилиты.
```bash
sudo apt update && sudo apt upgrade -y
sudo apt install curl git python3 python3-pip python3-venv -y
```
---
## 2. Изоляция окружения (Best Practice)
Не стоит устанавливать библиотеки бота прямо в систему. Используйте **Virtual Environment (venv)**, чтобы избежать конфликтов версий.
1. Создайте папку для бота: `mkdir my_bot && cd my_bot`
2. Создайте виртуальное окружение: `python3 -m venv venv`
3. Активируйте его:
```bash
source venv/bin/activate
```
4. Установите нужную библиотеку (например, `aiogram` или `python-telegram-bot`):
```bash
pip install aiogram
```
---
## 3. Загрузка кода
Если ваш код на GitHub, просто клонируйте репозиторий. Если на компьютере — используйте **SCP** или **SFTP** (через FileZilla или Termius).
> **Важно:** Никогда не храните токен бота прямо в коде. Используйте переменные окружения или `.env` файл.
---
## 4. Автозапуск 24/7 (Systemd)
Чтобы бот не выключался после закрытия терминала и автоматически поднимался после перезагрузки сервера, используйте системный менеджер **systemd**.
1. Создайте файл службы:
```bash
sudo nano /etc/systemd/system/tgbot.service
```
2. Вставьте туда следующий конфиг (замените пути на свои):
```ini
[Unit]
Description=Telegram Bot Service
After=network.target
[Service]
User=root
WorkingDirectory=/root/my_bot
ExecStart=/root/my_bot/venv/bin/python main.py
Restart=always
[Install]
WantedBy=multi-user.target
```
3. Запустите службу:
```bash
sudo systemctl daemon-reload
sudo systemctl enable tgbot
sudo systemctl start tgbot
```
---
## 5. Полезные инструменты
### Логирование
Чтобы посмотреть, что происходит с ботом (или почему он упал), используйте команду:
`journalctl -u tgbot.service -f`
### Альтернатива: PM2
Если вам привычнее работать с Node.js инструментами, можно использовать **PM2**. Он отлично управляет и Python-процессами:
```bash
sudo apt install nodejs npm -y
sudo npm install pm2 -g
pm2 start main.py --interpreter python3
pm2 save
pm2 startup
```
## Краткий чек-лист безопасности
* **SSH:** Отключите вход по паролю и используйте SSH-ключи.
* **Firewall:** Если бот работает на `long polling`, закройте все входящие порты, кроме 22 (SSH). Если используете `webhooks`, откройте порт 443 или 8443.
* **Обновления:** Настройте `unattended-upgrades`, чтобы сервер сам получал патчи безопасности.
На каком языке написан ваш бот и используете ли вы Webhooks или Long Polling?