Установка и запуск бота для телеграмма на удаленном сервере
1. Подготовка сервера и создание пользователя
# Подключись к серверу по SSH
ssh root@твой-сервер
# Создай группу и пользователя для бота
sudo groupadd userbot
sudo useradd -m -g userbot userbot
# Установи пароль для userbot (запомни его для SFTP)
sudo passwd userbot
2. Настройка виртуального окружения и установка зависимостей
# Создай папку для бота
mkdir /home/userbot/FOLDER
# Исправь права на файлы
sudo chown -R userbot:userbot /home/userbot/FOLDER/
# Переключись на пользователя userbot
sudo -i -u userbot
bash
cd ~/FOLDER
3. Перенос файлов бота по sftp
Перенести файлы по sftp (см. 7)
4. Создать виртуальное окружение
# Создай виртуальное окружение python3 -m venv venv # Активируй окружение и установи пакеты source venv/bin/activate pip install --upgrade pip pip install requests python-dotenv 'requests[socks]' #те, которые необходимы # Проверь установку pip list
5. Проверка ручного запуска
# Переключись на userbot и запусти бота
sudo -i -u userbot
bash
cd ~/FOLDER
source venv/bin/activate
python main.py
Проверь, что бот работает и отправляет сообщения в Telegram. Прерви выполнение Ctrl+C.
6. Настройка systemd сервиса
# Выйди из пользователя userbot до root
exit
# Создай файл сервиса
sudo nano /etc/systemd/system/SERVICENAME.service
Вставь конфигурацию:
[Unit]
Description=Name Bot
After=network.target network-online.target
Wants=network-online.target
[Service]
Type=simple
User=userbot
Group=userbot
WorkingDirectory=/home/userbot/FOLDER
ExecStart=/home/userbot/FOLDER/venv/bin/python /home/userbot/FOLDER/main.py
Restart=always
RestartSec=10
Environment="PYTHONUNBUFFERED=1"
StandardOutput=journal
StandardError=journal
SyslogIdentifier=SERVICENAME
[Install]
WantedBy=multi-user.target
# Активируй и запусти сервис
sudo systemctl daemon-reload
sudo systemctl enable SERVICENAME
sudo systemctl start SERVICENAME
# Проверь статус
sudo systemctl status SERVICENAME
Должен увидеть: Active: active (running)
7. Настройка SFTP для удобного обновления файлов
# Настройка прав для chroot
sudo chown root:root /home/userbot
sudo chmod 755 /home/userbot
# Убедись что папка проекта принадлежит userbot
sudo chown -R userbot:userbot /home/userbot/FOLDER
# Отредактируй SSH конфиг
sudo nano /etc/ssh/sshd_config
Добавь в самый конец файла:
Match User userbot
ChrootDirectory /home/userbot
ForceCommand internal-sftp
AllowTcpForwarding no
X11Forwarding no
# Перезапусти SSH
sudo systemctl restart sshd
8. Полезные команды для работы
# Статус сервиса
sudo systemctl status SERVICENAME
# Логи в реальном времени
sudo journalctl -u SERVICENAME -f
# Последние 50 строк лога
sudo journalctl -u SERVICENAME -n 50 --no-pager
# Перезапуск после обновления кода
sudo systemctl restart SERVICENAME
# Остановка
sudo systemctl stop SERVICENAME
# Запуск
sudo systemctl start SERVICENAME