setup: одна команда на установку (VPS и роутер)

setup-vps.sh — на VPS: снос+установка сервера туннеля одной командой,
опционально сразу `add <peer-name>` третьим аргументом.

setup-router.sh — на роутере: снос+установка панели keenetic_ssh-web и
(если заданы 4 ENV-переменные) клиента туннеля. Без ENV — только панель.

Обёртки нужны, чтобы пользователь копировал ровно ОДНУ строку, без
переменных типа $RAW, которые ломаются при копи-паст из markdown-чата.
This commit is contained in:
Андрей Бобырев
2026-04-26 14:31:42 +03:00
parent 3684c0dc0b
commit 88827ad2b5
2 changed files with 104 additions and 0 deletions

62
setup-router.sh Executable file
View File

@@ -0,0 +1,62 @@
#!/bin/sh
# setup-router.sh — turnkey: снос + установка панели keenetic_ssh-web
# и (опционально) WireGuard-туннеля на роутере (Keenetic + Entware).
#
# На роутере (через SSH в Entware shell):
#
# # Только панель (без туннеля):
# curl -fsSL https://raw.githubusercontent.com/andrey271192/keenetic_ssh-web/main/setup-router.sh | sh
#
# # Панель + туннель — задайте 4 ENV-переменные перед запуском
# # (их выдаёт `sudo kssh-tun add <name>` на VPS):
# export VPS_ENDPOINT=SERVER_IP:51820
# export VPS_PUBKEY='...'
# export CLIENT_IP=10.99.0.X
# export CLIENT_PRIVKEY='...'
# curl -fsSL https://raw.githubusercontent.com/andrey271192/keenetic_ssh-web/main/setup-router.sh | sh
#
# Что делает (одной командой):
# 1) сносит старую панель и старый клиент туннеля (если были)
# 2) ставит панель заново (порт 2001)
# 3) если ENV-переменные туннеля заданы — ставит туннель (wg0)
#
# Что НЕ трогает: HydraRoute Neo (hrneo, hrweb), XKeen, ваши кастомные репо,
# /opt/etc/opkg.conf, чужие WG-конфиги Keenetic, общие правила iptables.
set -e
REPO="${KSSH_REPO:-andrey271192/keenetic_ssh-web}"
BRANCH="${KSSH_BRANCH:-main}"
RAW="https://raw.githubusercontent.com/${REPO}/${BRANCH}"
WANT_TUNNEL=1
for v in VPS_ENDPOINT VPS_PUBKEY CLIENT_IP CLIENT_PRIVKEY; do
eval "val=\"\${$v:-}\""
if [ -z "$val" ]; then WANT_TUNNEL=0; fi
done
echo "==> [1/3] Снос старой установки (панель + туннель, если были)…"
curl -fsSL "$RAW/tunnel/tunnel-uninstall.sh" 2>/dev/null | sh || true
curl -fsSL "$RAW/uninstall.sh" | sh || true
echo
echo "==> [2/3] Установка панели keenetic_ssh-web…"
curl -fsSL "$RAW/bootstrap.sh" | sh
echo
if [ "$WANT_TUNNEL" = "1" ]; then
echo "==> [3/3] Установка туннеля ($CLIENT_IP$VPS_ENDPOINT)…"
curl -fsSL "$RAW/tunnel/tunnel-install.sh" | sh
else
echo "==> [3/3] ENV-переменные туннеля не заданы — пропуск."
echo " Чтобы поставить туннель: задайте VPS_ENDPOINT/VPS_PUBKEY/CLIENT_IP/CLIENT_PRIVKEY"
echo " (их даёт 'sudo kssh-tun add <name>' на VPS) и запустите этот скрипт ещё раз."
fi
echo
echo "============================================================"
echo "Готово."
echo "Панель: http://<LAN-IP>:2001 (логин/пароль — от веб-админки роутера)"
if [ "$WANT_TUNNEL" = "1" ]; then
echo "Туннель: с VPS теперь доступно http://$CLIENT_IP:2001 и ssh root@$CLIENT_IP"
fi
echo "============================================================"