Установка и запуск бота для телеграмма на удаленном сервере

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