#!/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 # Создаём systemd сервис из шаблона echo "📝 Создание systemd сервиса..." sed -e "s|%USER%|$BOT_USER|g" \ -e "s|%WORKDIR%|$BOT_DIR|g" \ -e "s|%VENV_PATH%|$BOT_VENV/bin|g" \ "$SERVICE_FILE" > "$SYSTEMD_SERVICE" 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 - Логи за сегодня"