fix: обновить systemd сервис для работы с nvm и qwen
- Добавить пути nvm и node в PATH - Добавить ReadWritePaths для ~/.nvm и ~/.config/nvm - Обновить install-systemd-service.sh для авто-определения путей - Исправляет ошибку 'qwen: command not found' Co-authored-by: Qwen-Coder <qwen-coder@alibabacloud.com>
This commit is contained in:
parent
b8605efaf6
commit
caf9d70515
|
|
@ -41,12 +41,48 @@ if [ ! -f "$BOT_DIR/.env" ]; then
|
||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# Создаём systemd сервис из шаблона
|
# Определяем путь к 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 сервиса..."
|
echo "📝 Создание systemd сервиса..."
|
||||||
sed -e "s|%USER%|$BOT_USER|g" \
|
|
||||||
-e "s|%WORKDIR%|$BOT_DIR|g" \
|
# Создаём сервис с подстановкой путей
|
||||||
-e "s|%VENV_PATH%|$BOT_VENV/bin|g" \
|
cat > "$SYSTEMD_SERVICE" << EOF
|
||||||
"$SERVICE_FILE" > "$SYSTEMD_SERVICE"
|
[Unit]
|
||||||
|
Description=Telegram CLI Bot
|
||||||
|
After=network.target
|
||||||
|
|
||||||
|
[Service]
|
||||||
|
Type=simple
|
||||||
|
User=$BOT_USER
|
||||||
|
WorkingDirectory=$BOT_DIR
|
||||||
|
Environment="PATH=$BOT_VENV/bin:$NODE_PATH:/usr/local/bin:/usr/bin:/bin"
|
||||||
|
Environment="QWEN_CODE_PATH=$BOT_VENV/qwen"
|
||||||
|
Environment="NVM_DIR=$NVM_DIR"
|
||||||
|
ExecStart=$BOT_VENV/bin/python bot.py
|
||||||
|
Restart=always
|
||||||
|
RestartSec=10
|
||||||
|
StandardOutput=journal
|
||||||
|
StandardError=journal
|
||||||
|
SyslogIdentifier=telegram-bot
|
||||||
|
|
||||||
|
# Security hardening с исключениями для работы бота
|
||||||
|
NoNewPrivileges=true
|
||||||
|
ProtectSystem=strict
|
||||||
|
ProtectHome=read-only
|
||||||
|
PrivateTmp=true
|
||||||
|
ReadWritePaths=$BOT_DIR $NVM_DIR
|
||||||
|
|
||||||
|
[Install]
|
||||||
|
WantedBy=multi-user.target
|
||||||
|
EOF
|
||||||
|
|
||||||
echo "✅ Сервис установлен в $SYSTEMD_SERVICE"
|
echo "✅ Сервис установлен в $SYSTEMD_SERVICE"
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -6,7 +6,9 @@ After=network.target
|
||||||
Type=simple
|
Type=simple
|
||||||
User=%USER%
|
User=%USER%
|
||||||
WorkingDirectory=%WORKDIR%
|
WorkingDirectory=%WORKDIR%
|
||||||
Environment="PATH=%VENV_PATH%"
|
Environment="PATH=%VENV_PATH%:/home/%USER%/.config/nvm/versions/node/v24.13.1/bin:/usr/local/bin:/usr/bin:/bin"
|
||||||
|
Environment="QWEN_CODE_PATH=%VENV_PATH%/qwen"
|
||||||
|
Environment="NVM_DIR=/home/%USER%/.nvm"
|
||||||
ExecStart=%VENV_PATH%/python bot.py
|
ExecStart=%VENV_PATH%/python bot.py
|
||||||
Restart=always
|
Restart=always
|
||||||
RestartSec=10
|
RestartSec=10
|
||||||
|
|
@ -19,7 +21,7 @@ NoNewPrivileges=true
|
||||||
ProtectSystem=strict
|
ProtectSystem=strict
|
||||||
ProtectHome=read-only
|
ProtectHome=read-only
|
||||||
PrivateTmp=true
|
PrivateTmp=true
|
||||||
ReadWritePaths=%WORKDIR%
|
ReadWritePaths=%WORKDIR% %HOME%/.npm-global %HOME%/.nvm %HOME%/.config/nvm
|
||||||
|
|
||||||
[Install]
|
[Install]
|
||||||
WantedBy=multi-user.target
|
WantedBy=multi-user.target
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue