#!/bin/bash # Скрипт установки systemd сервиса для Telegram CLI Bot set -e BOT_USER="${BOT_USER:-$USER}" BOT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" BOT_VENV="${BOT_DIR}/venv" SERVICE_FILE="${BOT_DIR}/telegram-bot.service" SYSTEMD_SERVICE="/etc/systemd/system/telegram-bot.service" echo "🔧 Установка systemd сервиса для Telegram CLI Bot" echo "==================================================" echo "Пользователь: $BOT_USER" echo "Директория: $BOT_DIR" echo "Venv: $BOT_VENV" echo "" # Проверка что скрипт запущен от root или через sudo if [ "$EUID" -ne 0 ]; then echo "❌ Запустите скрипт от имени root (sudo ./install-systemd-service.sh)" exit 1 fi # Проверка существования файлов if [ ! -f "$BOT_DIR/bot.py" ]; then echo "❌ bot.py не найден в $BOT_DIR" exit 1 fi if [ ! -f "$BOT_VENV/bin/python" ]; then echo "❌ Venv не найден в $BOT_VENV" echo " Запустите: source $BOT_DIR/venv/bin/activate && pip install -r requirements.txt" exit 1 fi if [ ! -f "$BOT_DIR/.env" ]; then echo "⚠️ .env файл не найден. Создайте его:" echo " cp $BOT_DIR/.env.example $BOT_DIR/.env" echo " и отредактируйте переменные окружения" exit 1 fi # Определяем путь к qwen QWEN_PATH=$(su - "$BOT_USER" -c "which qwen" 2>/dev/null || echo "") if [ -z "$QWEN_PATH" ]; then echo "⚠️ qwen не найден. Установите: npm install -g @anthropic/qwen-code" fi # Определяем Node.js путь (для nvm) NODE_PATH=$(dirname "$(su - "$BOT_USER" -c "which node" 2>/dev/null || echo "")") NVM_DIR=$(su - "$BOT_USER" -c "echo \$NVM_DIR" 2>/dev/null || echo "/home/$BOT_USER/.nvm") echo "📝 Создание systemd сервиса..." # Создаём сервис с подстановкой путей cat > "$SYSTEMD_SERVICE" << EOF [Unit] Description=Telegram CLI Bot After=network.target [Service] Type=simple User=$BOT_USER WorkingDirectory=$BOT_DIR Environment="PATH=$NODE_PATH:$BOT_VENV/bin:/home/$BOT_USER/.local/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin" Environment="NVM_DIR=$NVM_DIR" Environment="NODE_PATH=$NODE_PATH" ExecStart=$BOT_VENV/bin/python bot.py Restart=always RestartSec=10 StandardOutput=journal StandardError=journal SyslogIdentifier=telegram-bot [Install] WantedBy=multi-user.target EOF echo "✅ Сервис установлен в $SYSTEMD_SERVICE" # Перезагружаем systemd и включаем сервис echo "🔄 Перезагрузка systemd..." systemctl daemon-reload echo "🚀 Включение сервиса..." systemctl enable telegram-bot echo "" echo "✅ Установка завершена!" echo "" echo "Управление сервисом:" echo " sudo systemctl start telegram-bot - Запустить бота" echo " sudo systemctl stop telegram-bot - Остановить бота" echo " sudo systemctl restart telegram-bot - Перезапустить бота" echo " sudo systemctl status telegram-bot - Проверить статус" echo "" echo "Просмотр логов:" echo " sudo journalctl -u telegram-bot -f - Логи в реальном времени" echo " sudo journalctl -u telegram-bot --since today - Логи за сегодня"