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 "============================================================"

42
setup-vps.sh Executable file
View File

@@ -0,0 +1,42 @@
#!/bin/bash
# setup-vps.sh — turnkey: снос + установка WireGuard-сервера kssh-tunnel.
#
# Запуск (любой из вариантов):
# curl -fsSL https://raw.githubusercontent.com/andrey271192/keenetic_ssh-web/main/setup-vps.sh | sudo bash
# curl -fsSL https://raw.githubusercontent.com/andrey271192/keenetic_ssh-web/main/setup-vps.sh | sudo bash -s -- add <peer-name>
#
# Что делает (одной командой):
# 1) сносит предыдущий kssh-tunnel сервер (если был)
# 2) ставит сервер заново (apt install wireguard, ключи, wg0, kssh-tun)
# 3) если передан "add <name>" — сразу добавляет peer и печатает ENV-блок
#
# Что НЕ трогает: HydraRoute, любые ваши приложения, Docker, чужие правила
# iptables, apt-пакет wireguard (не делает remove).
set -e
REPO="${KSSH_REPO:-andrey271192/keenetic_ssh-web}"
BRANCH="${KSSH_BRANCH:-main}"
RAW="https://raw.githubusercontent.com/${REPO}/${BRANCH}"
if [ "$(id -u)" -ne 0 ]; then
echo "Запустите через sudo." >&2
exit 1
fi
echo "==> [1/3] Снос предыдущей установки kssh-tunnel сервера…"
curl -fsSL "$RAW/tunnel/server-uninstall.sh" | bash || true
echo
echo "==> [2/3] Установка сервера kssh-tunnel…"
curl -fsSL "$RAW/tunnel/server-install.sh" | bash
if [ "${1:-}" = "add" ] && [ -n "${2:-}" ]; then
echo
echo "==> [3/3] Добавление peer '$2'…"
/usr/local/bin/kssh-tun add "$2"
else
echo
echo "==> [3/3] Сервер готов. Добавьте роутер командой:"
echo " sudo kssh-tun add <name>"
echo " (выдаст 5-строчный блок для копирования на роутер)"
fi