version 1.2.4: исправлены ошибки установки бота и вкладок веб-панели

- install-bot.sh: pip в venv вместо системного (externally-managed fix), ExecStart через venv/bin/python3
- templates/index.html: убран лишний </div> ломавший DOM (пустые вкладки), уникальные ID для кнопок
- app.py: селекторы кнопок restartPanel/switchToSSHTunnel используют id вместо классов
This commit is contained in:
2026-06-27 00:16:32 +03:00
parent deee59ddba
commit b0e3f83516
2 changed files with 10 additions and 17 deletions
+6 -12
View File
@@ -68,19 +68,13 @@ section "Установка зависимостей"
apt-get update -qq
apt-get install -y -qq python3 python3-pip python3-venv
if python3 -c "import psutil" 2>/dev/null; then
ok "psutil уже установлен"
else
info "Установка psutil..."
pip3 install psutil
BOT_VENV="$BOT_DIR/venv"
if [[ ! -d "$BOT_VENV" ]]; then
python3 -m venv "$BOT_VENV"
fi
if python3 -c "from telegram.ext import Application" 2>/dev/null; then
ok "python-telegram-bot уже установлен"
else
info "Установка python-telegram-bot..."
pip3 install python-telegram-bot
fi
"$BOT_VENV/bin/pip" install -q python-telegram-bot psutil 2>/dev/null
ok "Python-зависимости установлены в виртуальное окружение"
# ── копирование файлов ──────────────────────────────────────────────
section "Установка бота"
@@ -128,7 +122,7 @@ After=network.target
Type=simple
WorkingDirectory=$BOT_DIR
EnvironmentFile=$BOT_DIR/env
ExecStart=/usr/bin/python3 $BOT_DIR/bot.py
ExecStart=$BOT_VENV/bin/python3 $BOT_DIR/bot.py
Restart=always
RestartSec=10
User=root
+4 -5
View File
@@ -151,7 +151,7 @@
<div id="ssh-tunnel-info" style="font-size:.82rem;color:var(--muted);margin-bottom:14px;line-height:1.7">
Загрузка...
</div>
<button class="btn btn-warn" onclick="switchToSSHTunnel()">
<button class="btn btn-warn" id="ssh-tunnel-btn" onclick="switchToSSHTunnel()">
<svg width="14" height="14" fill="none" stroke="currentColor" viewBox="0 0 24 24"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M8 11V7a4 4 0 118 0m-4 8v2m-6 4h12a2 2 0 002-2v-6a2 2 0 00-2-2H6a2 2 0 00-2 2v6a2 2 0 002 2z"/></svg>
Переключить на SSH-туннель
</button>
@@ -184,13 +184,12 @@
<p style="color:var(--muted);font-size:.875rem;margin-bottom:14px;line-height:1.6">
После смены сертификата необходимо перезапустить панель, чтобы применить изменения.
</p>
<button class="btn btn-warn" onclick="restartPanel()">
<button class="btn btn-warn" id="restart-panel-btn" onclick="restartPanel()">
<svg width="14" height="14" fill="none" stroke="currentColor" viewBox="0 0 24 24"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M4 4v5h.582m15.356 2A8.001 8.001 0 004.582 9m0 0H9m11 11v-5h-.581m0 0a8.003 8.003 0 01-15.357-2m15.357 2H15"/></svg>
Перезапустить панель
</button>
<div id="restart-result" style="margin-top:12px"></div>
</div>
</div>
</div>
<!-- SECURITY / FAIL2BAN -->
@@ -882,7 +881,7 @@ async function loadPanelAccess() {
}
async function switchToSSHTunnel() {
const btn = document.querySelector('#page-ssl .btn-warn');
const btn = document.getElementById('ssh-tunnel-btn');
btn.disabled = true;
btn.innerHTML = '<span class="spinner"></span> Переключение...';
@@ -920,7 +919,7 @@ async function getLetsEncrypt(){
}
async function restartPanel(){
const btn=document.querySelector('#page-ssl .btn-warn');
const btn=document.getElementById('restart-panel-btn');
btn.disabled=true;
btn.innerHTML='<span class="spinner"></span> Перезапуск...';
const el=document.getElementById('restart-result');