From 7c7a58b3a9716f294f7981c5f89dc82a3fabf1fc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=90=D0=BD=D0=B4=D1=80=D0=B5=D0=B9=20=D0=91=D0=BE=D0=B1?= =?UTF-8?q?=D1=8B=D1=80=D0=B5=D0=B2?= Date: Sun, 26 Apr 2026 00:06:05 +0300 Subject: [PATCH] =?UTF-8?q?docs+install:=20=D0=BE=D0=B4=D0=BD=D0=B0=20?= =?UTF-8?q?=D0=BA=D0=BE=D0=BC=D0=B0=D0=BD=D0=B4=D0=B0=20=D1=81=20GitHub=20?= =?UTF-8?q?(bootstrap.sh)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Made-with: Cursor --- README.md | 41 ++++++++++++++++++++++++++++++++++++++++- bootstrap.sh | 37 +++++++++++++++++++++++++++++++++++++ 2 files changed, 77 insertions(+), 1 deletion(-) create mode 100755 bootstrap.sh diff --git a/README.md b/README.md index 75a197c..e8fb7ab 100644 --- a/README.md +++ b/README.md @@ -42,7 +42,32 @@ ## Установка -Скопируйте каталог проекта на роутер (например, в `/tmp/keenetic_ssh-web`) или клонируйте репозиторий на ПК и скопируйте через SCP. +### Одной командой с GitHub (на роутере, Entware) + +Нужны **`curl`** или **`wget`** и **`tar`** (обычно уже есть). Скрипт скачает архив ветки **`main`**, распакует во временный каталог и выполнит **`install.sh`** (копирование в `/opt/share/keenetic_ssh-web`, venv, init). + +```sh +curl -fsSL https://raw.githubusercontent.com/andrey271192/keenetic_ssh-web/main/bootstrap.sh | sh +``` + +Другая ветка или форк: + +```sh +export KSSH_BRANCH=main +export KSSH_REPO=andrey271192/keenetic_ssh-web +curl -fsSL "https://raw.githubusercontent.com/${KSSH_REPO}/${KSSH_BRANCH}/bootstrap.sh" | sh +``` + +После установки задайте пароль и (по желанию) список IP: + +```sh +nano /opt/share/keenetic_ssh-web/.env +/opt/etc/init.d/S99keenetic-ssh-web start +``` + +### Установка из уже скачанного каталога + +Скопируйте репозиторий на роутер или клонируйте через `git`, затем: ```sh cd /path/to/keenetic_ssh-web @@ -102,6 +127,20 @@ export WEB_PASSWORD=test ## Удаление +### С GitHub (скрипт самодостаточный) + +```sh +curl -fsSL https://raw.githubusercontent.com/andrey271192/keenetic_ssh-web/main/uninstall.sh | sh +``` + +Сохранить каталог с данными (`.env`, `data/`), убрав только сервис: + +```sh +curl -fsSL https://raw.githubusercontent.com/andrey271192/keenetic_ssh-web/main/uninstall.sh | env KEEP_DATA=1 sh +``` + +### Из каталога репозитория + ```sh cd /path/to/keenetic_ssh-web chmod +x uninstall.sh diff --git a/bootstrap.sh b/bootstrap.sh new file mode 100755 index 0000000..d6e8cab --- /dev/null +++ b/bootstrap.sh @@ -0,0 +1,37 @@ +#!/bin/sh +# Одна команда с GitHub: скачивает архив main и запускает install.sh на роутере (Entware). +set -e + +REPO="${KSSH_REPO:-andrey271192/keenetic_ssh-web}" +BRANCH="${KSSH_BRANCH:-main}" +ARCH="https://github.com/${REPO}/archive/refs/heads/${BRANCH}.tar.gz" +# Имя корня внутри tar: keenetic_ssh-web-main (последний сегмент REPO + -branch) +REPO_NAME="${REPO##*/}" +ROOT_DIR="${REPO_NAME}-${BRANCH}" + +TMP="${TMPDIR:-/tmp}/kssh_bootstrap_$$" +mkdir -p "$TMP" +cd "$TMP" + +echo "==> Скачивание ${ARCH}" +if command -v curl >/dev/null 2>&1; then + curl -fsSL "$ARCH" -o src.tgz +elif command -v wget >/dev/null 2>&1; then + wget -qO src.tgz "$ARCH" +else + echo "Нужны curl или wget (opkg install curl wget)" >&2 + exit 1 +fi + +echo "==> Распаковка" +tar xzf src.tgz +cd "$ROOT_DIR" || { echo "Нет каталога $ROOT_DIR в архиве" >&2; exit 1; } + +chmod +x install.sh uninstall.sh run.sh 2>/dev/null || true +echo "==> Запуск install.sh" +./install.sh + +cd / +rm -rf "$TMP" +echo "" +echo "Готово. Дальше: nano /opt/share/keenetic_ssh-web/.env && /opt/etc/init.d/S99keenetic-ssh-web start"