mirror of
https://github.com/andrey271192/keenetic_ssh-web.git
synced 2026-09-20 14:42:01 +00:00
docs: переписать README (простая установка) + скриншоты
Made-with: Cursor
This commit is contained in:
405
README.md
405
README.md
@@ -1,329 +1,160 @@
|
|||||||
# keenetic_ssh-web
|
# keenetic_ssh-web
|
||||||
|
|
||||||
> Локальная веб-панель для **Keenetic + Entware**: shell-команды на роутере, расписание, ручной запуск, просмотр stdout/stderr. Слушает порт **2001**. Авторизация — логин/пароль от веб-админки роутера.
|
Веб‑панель, которая **выполняет команды прямо на роутере Keenetic** (Entware) и показывает вывод. Подходит для `opkg update`, перезапусков сервисов, диагностики, и т. п.
|
||||||
>
|
|
||||||
> + опциональный модуль **`tunnel/`** — WireGuard VPS↔роутер, чтобы дотянуться до панели и SSH с **серого IP**, без проброса портов.
|
|
||||||
|
|
||||||
Репозиторий: [github.com/andrey271192/keenetic_ssh-web](https://github.com/andrey271192/keenetic_ssh-web)
|
- **Порт панели:** `2001`
|
||||||
|
- **Где работает:** на самом роутере (Entware)
|
||||||
|
- **Вход:** логин/пароль **от веб‑админки Keenetic** (NDM `/auth`)
|
||||||
|
(есть запасной «мастер‑пароль» `WEB_PASSWORD`, если нужно)
|
||||||
|
- **Опционально:** модуль `tunnel/` — **WireGuard‑туннель VPS ↔ роутер**, чтобы открыть доступ к панели и SSH, даже если у роутера **серый IP** (без проброса портов).
|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
## В репозитории два независимых пакета
|
## Быстрый старт (минимум команд)
|
||||||
|
|
||||||
| Пакет | Куда ставится | Зачем | Обязателен |
|
### Вариант 1. Панель нужна только дома (LAN)
|
||||||
|---|---|---|---|
|
|
||||||
| **A. keenetic_ssh-web** | роутер (Entware) | веб-панель команд на 2001 | да |
|
|
||||||
| **B. tunnel** | VPS (Ubuntu) + роутер | WG-туннель для серого IP | нет, по желанию |
|
|
||||||
|
|
||||||
**Ставятся и удаляются отдельно**. Пакет B нужен только если у роутера серый IP и вы хотите управлять им из интернета через свой VPS. Если у вас белый IP / KeenDNS Cloud / достаточно LAN — ставьте только A.
|
На роутере (в Entware shell по SSH):
|
||||||
|
|
||||||
> ⚠️ **Скрипты установки/удаления НЕ трогают** `hrneo`/`hrweb` (HydraRoute Neo), XKeen, Domain Hydra и любые ваши кастомные пакеты Entware. Не правят `/opt/etc/opkg.conf`, не сбрасывают чужие правила iptables, не ставят/удаляют пакеты, не относящиеся к данным двум пакетам.
|
```sh
|
||||||
|
curl -fsSL https://raw.githubusercontent.com/andrey271192/keenetic_ssh-web/main/setup-router.sh | sh
|
||||||
|
```
|
||||||
|
|
||||||
|
Откройте в браузере:
|
||||||
|
|
||||||
|
- `http://IP_РОУТЕРА:2001`
|
||||||
|
|
||||||
|
Вход — **как в веб‑админку Keenetic**.
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
## Сценарии и что ставить
|
### Вариант 2. Серый IP, нужен доступ из любой точки (через VPS)
|
||||||
|
|
||||||
| Сценарий | Доступ | Что ставить |
|
#### 2.1. На VPS (Ubuntu) — поставить сервер туннеля
|
||||||
|---|---|---|
|
|
||||||
| Управляю только из дома (LAN) | `http://192.168.X.1:2001` | только **A** |
|
|
||||||
| Серый IP, нужен доступ из любой точки | `https://имя.домен` через ваш VPS | **A** + **B** + reverse-proxy на VPS |
|
|
||||||
| Белый IP / KeenDNS Cloud | проброс портов или KeenDNS на 2001 | только **A** (B не нужен) |
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
# A. keenetic_ssh-web — установка
|
|
||||||
|
|
||||||
## A.1. Требования
|
|
||||||
|
|
||||||
- Keenetic с **Entware** (`opkg` доступен)
|
|
||||||
- `python3` — установится автоматически из `bin.entware.net`
|
|
||||||
- Свободный порт **2001** (можно переопределить в `.env`)
|
|
||||||
|
|
||||||
## A.2. Установка одной командой (на роутере)
|
|
||||||
|
|
||||||
```sh
|
```sh
|
||||||
curl -fsSL https://raw.githubusercontent.com/andrey271192/keenetic_ssh-web/main/bootstrap.sh | sh
|
curl -fsSL https://raw.githubusercontent.com/andrey271192/keenetic_ssh-web/main/setup-vps.sh | sudo bash
|
||||||
```
|
```
|
||||||
|
|
||||||
Что делает:
|
#### 2.2. На VPS — добавить ваш роутер (peer)
|
||||||
- скачивает архив ветки `main`, кладёт в `/opt/share/keenetic_ssh-web`
|
|
||||||
- ставит **только** `python3`, `python3-pip`, `python3-venv` (если их нет)
|
|
||||||
- кладёт init-скрипт `/opt/etc/init.d/S99keenetic-ssh-web` и rc.d-симлинк
|
|
||||||
- стартует сервис на порту 2001
|
|
||||||
- создаёт `.env` из примера и подставляет в `ROUTER_HOST` LAN-IP роутера
|
|
||||||
|
|
||||||
В конце выведет адрес панели: `http://<LAN-IP>:2001`. Логин/пароль — от веб-админки роутера.
|
|
||||||
|
|
||||||
> Другая ветка/форк: `KSSH_BRANCH=dev KSSH_REPO=user/repo curl … | sh`.
|
|
||||||
|
|
||||||
## A.3. Конфиг — `/opt/share/keenetic_ssh-web/.env`
|
|
||||||
|
|
||||||
| Переменная | Описание | По умолчанию |
|
|
||||||
|---|---|---|
|
|
||||||
| `ROUTER_HOST` | HTTP-адреса админки Keenetic для проверки логина (через запятую — пробуем по очереди). Установщик сам подставит LAN-IP. | `http://127.0.0.1` |
|
|
||||||
| `ROUTER_LOGIN` | Логин по умолчанию в форме входа | `admin` |
|
|
||||||
| `ROUTER_TIMEOUT` | Таймаут запроса к `/auth`, сек | `5` |
|
|
||||||
| `WEB_PASSWORD` | Запасной мастер-пароль (если админка недоступна) | пусто |
|
|
||||||
| `PORT` | HTTP-порт панели | `2001` |
|
|
||||||
| `CMD_TIMEOUT` | Таймаут одной shell-команды, сек | `300` |
|
|
||||||
| `ALLOWED_IPS` | Белый список IP клиентов (через запятую). Пусто = всех. | пусто |
|
|
||||||
| `AUTHOR_TELEGRAM_USERNAME` | username для ссылки в шапке | `Iot_andrey` |
|
|
||||||
|
|
||||||
После правки:
|
|
||||||
```sh
|
|
||||||
/opt/etc/init.d/S99keenetic-ssh-web restart
|
|
||||||
tail -f /opt/var/log/keenetic-ssh-web.log
|
|
||||||
```
|
|
||||||
|
|
||||||
> ⚠️ **Безопасность.** Панель выполняет произвольные shell-команды с правами процесса (на Entware часто root). Не открывайте порт 2001 в интернет напрямую. Используйте `ALLOWED_IPS` или туннель + reverse-proxy с HTTPS (см. пакет B).
|
|
||||||
|
|
||||||
## A.4. Управление сервисом
|
|
||||||
|
|
||||||
```sh
|
```sh
|
||||||
/opt/etc/init.d/S99keenetic-ssh-web start
|
|
||||||
/opt/etc/init.d/S99keenetic-ssh-web stop
|
|
||||||
/opt/etc/init.d/S99keenetic-ssh-web restart
|
|
||||||
tail -f /opt/var/log/keenetic-ssh-web.log
|
|
||||||
vi /opt/share/keenetic_ssh-web/.env
|
|
||||||
```
|
|
||||||
|
|
||||||
## A.5. Удаление keenetic_ssh-web
|
|
||||||
|
|
||||||
С GitHub:
|
|
||||||
```sh
|
|
||||||
curl -fsSL https://raw.githubusercontent.com/andrey271192/keenetic_ssh-web/main/uninstall.sh | sh
|
|
||||||
```
|
|
||||||
|
|
||||||
Сохранить `data/store.json` и `.env`:
|
|
||||||
```sh
|
|
||||||
curl -fsSL https://raw.githubusercontent.com/andrey271192/keenetic_ssh-web/main/uninstall.sh | env KEEP_DATA=1 sh
|
|
||||||
```
|
|
||||||
|
|
||||||
Удаляет ровно: `/opt/share/keenetic_ssh-web/`, `/opt/etc/init.d/S99keenetic-ssh-web`, `/opt/etc/rc.d/S99keenetic-ssh-web`, pid-файл.
|
|
||||||
**Не удаляет:** `python3`, `wireguard-tools`, `hrneo`, `hrweb`, любые другие пакеты Entware, лог `/opt/var/log/keenetic-ssh-web.log`.
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
# B. tunnel — установка (опционально, для серых IP)
|
|
||||||
|
|
||||||
```
|
|
||||||
[твой ПК] → https://router.домен (VPS, белый IP)
|
|
||||||
│ Caddy/Nginx reverse-proxy
|
|
||||||
▼
|
|
||||||
wg0 10.99.0.1 (VPS)
|
|
||||||
⇅ WireGuard, UDP/51820
|
|
||||||
wg0 10.99.0.X (роутер за NAT провайдера)
|
|
||||||
▼
|
|
||||||
127.0.0.1:2001 keenetic_ssh-web
|
|
||||||
127.0.0.1:22 SSH
|
|
||||||
```
|
|
||||||
|
|
||||||
Туннель **инициирует роутер** наружу — серый IP / NAT провайдера не мешает.
|
|
||||||
|
|
||||||
## B.1. На VPS (Ubuntu) — один раз
|
|
||||||
|
|
||||||
```sh
|
|
||||||
curl -fsSL https://raw.githubusercontent.com/andrey271192/keenetic_ssh-web/main/tunnel/server-install.sh | sudo sh
|
|
||||||
```
|
|
||||||
|
|
||||||
Что делает:
|
|
||||||
- `apt install wireguard wireguard-tools curl`
|
|
||||||
- генерит серверные ключи (`/etc/wireguard/server_{private,public}.key`)
|
|
||||||
- создаёт `/etc/wireguard/wg0.conf` (UDP 51820, IP `10.99.0.1/24`)
|
|
||||||
- ставит утилиту `kssh-tun` в `/usr/local/bin/`
|
|
||||||
- открывает `51820/udp` и `wg0` в `ufw`/`iptables`, если активны
|
|
||||||
- запускает `wg-quick@wg0` и ставит на автозапуск
|
|
||||||
|
|
||||||
В конце печатает Endpoint и серверный PublicKey.
|
|
||||||
|
|
||||||
## B.2. На VPS — добавить роутер (peer)
|
|
||||||
|
|
||||||
```sh
|
|
||||||
sudo kssh-tun add router-name
|
|
||||||
```
|
|
||||||
|
|
||||||
Утилита:
|
|
||||||
- генерит ключи клиента, выделяет IP `10.99.0.X`
|
|
||||||
- сохраняет `/etc/wireguard/peers/<name>.peer`
|
|
||||||
- регенерирует `wg0.conf` и применяет (`systemctl restart wg-quick@wg0`)
|
|
||||||
- **выводит готовую команду для роутера** — четыре `export` + `curl … | sh`
|
|
||||||
|
|
||||||
Прочие команды:
|
|
||||||
```sh
|
|
||||||
sudo kssh-tun list # список peer-ов
|
|
||||||
sudo kssh-tun show <name> # повторно вывести ENV-блок
|
|
||||||
sudo kssh-tun remove <name> # удалить peer
|
|
||||||
sudo kssh-tun status # wg show wg0
|
|
||||||
```
|
|
||||||
|
|
||||||
## B.3. На роутере — поднять клиент
|
|
||||||
|
|
||||||
Скопируйте блок из `kssh-tun add` и выполните на роутере (через SSH/Entware shell):
|
|
||||||
|
|
||||||
```sh
|
|
||||||
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/tunnel/tunnel-install.sh | sh
|
|
||||||
```
|
|
||||||
|
|
||||||
Что делает:
|
|
||||||
- `opkg install wireguard-tools` (если нет)
|
|
||||||
- пишет `/opt/etc/wireguard/wg0.conf`
|
|
||||||
- поднимает интерфейс `wg0` с адресом `CLIENT_IP/24`
|
|
||||||
- ставит init-скрипт `/opt/etc/init.d/S50kssh-tunnel` + rc.d-симлинк
|
|
||||||
- **разрешает входящий трафик с туннеля** (`iptables -I INPUT -i wg0 -j ACCEPT` + `rp_filter=2`) — без этого Keenetic режет ответы из VPS, handshake пройдёт, а ping/HTTP — нет
|
|
||||||
- пингует `10.99.0.1` для проверки
|
|
||||||
|
|
||||||
После этого с VPS:
|
|
||||||
```sh
|
|
||||||
ping -c 3 10.99.0.X
|
|
||||||
ssh root@10.99.0.X # если на роутере включён SSH
|
|
||||||
curl http://10.99.0.X:2001 # панель keenetic_ssh-web (если установлена)
|
|
||||||
```
|
|
||||||
|
|
||||||
## B.4. Reverse-proxy на VPS (доступ снаружи)
|
|
||||||
|
|
||||||
Caddyfile:
|
|
||||||
```
|
|
||||||
router.example.com {
|
|
||||||
reverse_proxy 10.99.0.X:2001
|
|
||||||
}
|
|
||||||
```
|
|
||||||
|
|
||||||
Caddy выдаст HTTPS, и `https://router.example.com` отдаёт панель роутера. В `.env` keenetic_ssh-web укажите `ALLOWED_IPS=10.99.0.1` — только VPS будет иметь право заходить.
|
|
||||||
|
|
||||||
## B.5. Параметры (ENV)
|
|
||||||
|
|
||||||
`server-install.sh` (VPS):
|
|
||||||
|
|
||||||
| Переменная | По умолчанию | Описание |
|
|
||||||
|---|---|---|
|
|
||||||
| `WG_PORT` | `51820` | UDP-порт сервера |
|
|
||||||
| `WG_SUBNET_PREFIX` | `10.99.0` | Первые три октета `/24` |
|
|
||||||
| `WG_SERVER_LAST_OCTET` | `1` | Адрес сервера в туннеле |
|
|
||||||
| `KSSH_REPO`/`KSSH_BRANCH` | `andrey271192/keenetic_ssh-web` / `main` | Источник `kssh-tun` и `tunnel-install.sh` |
|
|
||||||
|
|
||||||
`tunnel-install.sh` (роутер):
|
|
||||||
|
|
||||||
| Переменная | Обязательная | Описание |
|
|
||||||
|---|---|---|
|
|
||||||
| `VPS_ENDPOINT` | да | `<публичный IP>:<порт>` |
|
|
||||||
| `VPS_PUBKEY` | да | PublicKey сервера |
|
|
||||||
| `CLIENT_IP` | да | IP роутера в туннеле |
|
|
||||||
| `CLIENT_PRIVKEY` | да | PrivateKey роутера (выдаёт `kssh-tun add`) |
|
|
||||||
| `WG_IF` | `wg0` | Имя интерфейса |
|
|
||||||
| `WG_SUBNET` | `10.99.0.1/32` | AllowedIPs клиента. По умолчанию только VPS, чтобы не ломать существующие WG-маршруты Keenetic. Поставьте `10.99.0.0/24` для peer-to-peer. |
|
|
||||||
| `WG_KEEPALIVE` | `25` | `PersistentKeepalive`, сек (нужен из-за NAT провайдера) |
|
|
||||||
|
|
||||||
## B.6. Удаление tunnel
|
|
||||||
|
|
||||||
### B.6.1. На роутере (только клиент)
|
|
||||||
|
|
||||||
```sh
|
|
||||||
curl -fsSL https://raw.githubusercontent.com/andrey271192/keenetic_ssh-web/main/tunnel/tunnel-uninstall.sh | sh
|
|
||||||
```
|
|
||||||
|
|
||||||
Удаляет: интерфейс `wg0`, `/opt/etc/wireguard/wg0.conf`, init-скрипт `S50kssh-tunnel`, rc.d-симлинк, наши правила `iptables ACCEPT для wg0`.
|
|
||||||
**Не удаляет:** `wireguard-tools`, общие правила iptables, чужие WG-конфиги, `keenetic_ssh-web`, HydraRoute Neo и др.
|
|
||||||
|
|
||||||
### B.6.2. На VPS (сервер)
|
|
||||||
|
|
||||||
```sh
|
|
||||||
curl -fsSL https://raw.githubusercontent.com/andrey271192/keenetic_ssh-web/main/tunnel/server-uninstall.sh | sudo sh
|
|
||||||
```
|
|
||||||
|
|
||||||
Удаляет: `wg-quick@wg0` (stop+disable), `/etc/wireguard/{wg0.conf,server_*.key,peers/,.kssh-tun.env}`, `/usr/local/bin/kssh-tun`, наши правила ufw/iptables.
|
|
||||||
**Не удаляет:** apt-пакеты `wireguard`/`wireguard-tools`, чужие правила ufw/iptables, ваши приложения и Docker.
|
|
||||||
|
|
||||||
Если потом захотите снести и сами apt-пакеты — вручную:
|
|
||||||
```sh
|
|
||||||
sudo apt remove --purge wireguard wireguard-tools
|
|
||||||
```
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
## Полный «с нуля» — пример
|
|
||||||
|
|
||||||
Допустим, на роутере уже стоит HydraRoute Neo, и его трогать **нельзя**. Хотим чистую установку обоих пакетов.
|
|
||||||
|
|
||||||
**1. На VPS:**
|
|
||||||
```sh
|
|
||||||
# (если что-то стояло раньше)
|
|
||||||
curl -fsSL https://raw.githubusercontent.com/andrey271192/keenetic_ssh-web/main/tunnel/server-uninstall.sh | sudo sh
|
|
||||||
|
|
||||||
# свежая установка сервера туннеля
|
|
||||||
curl -fsSL https://raw.githubusercontent.com/andrey271192/keenetic_ssh-web/main/tunnel/server-install.sh | sudo sh
|
|
||||||
|
|
||||||
# завести роутер
|
|
||||||
sudo kssh-tun add my-router
|
sudo kssh-tun add my-router
|
||||||
# → скопировать выданный 5-строчный блок
|
|
||||||
```
|
```
|
||||||
|
|
||||||
**2. На роутере:**
|
Команда выведет **готовый блок** (несколько строк `export ...` + `curl ... | sh`) — просто скопируйте его.
|
||||||
|
|
||||||
|
#### 2.3. На роутере — поставить панель + клиент туннеля
|
||||||
|
|
||||||
|
Вставьте **тот самый блок** на роутере (в Entware shell). Он поднимет `wg0`, а затем установит панель на `2001`.
|
||||||
|
|
||||||
|
Проверка с VPS:
|
||||||
|
|
||||||
|
```sh
|
||||||
|
curl http://10.99.0.X:2001
|
||||||
|
ssh root@10.99.0.X
|
||||||
|
```
|
||||||
|
|
||||||
|
Дальше уже красиво делается через HTTPS reverse‑proxy на VPS (Caddy/Nginx):
|
||||||
|
|
||||||
|
- `router.example.com` → `10.99.0.X:2001`
|
||||||
|
|
||||||
|
Рекомендация: в `.env` панели выставить **`ALLOWED_IPS=10.99.0.1`**, чтобы к роутеру мог обращаться **только VPS**.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
### Вариант 3. Белый IP — без туннеля
|
||||||
|
|
||||||
|
Ставьте как в варианте 1 (LAN), а доступ снаружи делайте как вам удобно: проброс порта/файрвол/домен.
|
||||||
|
Важно: **не открывайте 2001 в интернет без ограничений** (см. безопасность ниже).
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Как пользоваться панелью (по‑человечески)
|
||||||
|
|
||||||
|
### 1) Добавьте команду
|
||||||
|
|
||||||
|
- **Название** — как вам удобно (например: `opkg update`)
|
||||||
|
- **Команда** — обычная shell‑команда (например: `opkg update`)
|
||||||
|
- **Примечание** — необязательно
|
||||||
|
|
||||||
|
### 2) Запуск
|
||||||
|
|
||||||
|
- **Выполнить** — запускает одну команду и показывает результат
|
||||||
|
- **Выполнить все команды** — запускает все строки с галочкой **«ВКЛ»**
|
||||||
|
|
||||||
|
### 3) Расписание
|
||||||
|
|
||||||
|
- Поставьте интервал (в минутах) и нажмите **Сохранить**
|
||||||
|
- У нужных строк включите **«Распис.»**
|
||||||
|
|
||||||
|
По расписанию выполняются только строки: **ВКЛ + Распис.**
|
||||||
|
|
||||||
|
### 4) Просмотр вывода
|
||||||
|
|
||||||
|
Кнопка **«Вывод»** раскрывает полный лог последнего запуска (stdout + stderr).
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Примеры полезных команд (можно копировать)
|
||||||
|
|
||||||
|
- Обновить пакеты: `opkg update && opkg list-upgradable | head`
|
||||||
|
- Обновить всё: `opkg update && opkg upgrade`
|
||||||
|
- Проверить место: `df -h`
|
||||||
|
- Процессы: `top -b -n 1 | head -60`
|
||||||
|
- WireGuard: `wg show`
|
||||||
|
- Логи: `logread | tail -200`
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Безопасность (важно)
|
||||||
|
|
||||||
|
Это **не песочница**: команда выполняется с правами процесса (на Entware часто **root**).
|
||||||
|
|
||||||
|
- Не публикуйте порт **2001** в интернет «как есть».
|
||||||
|
- Используйте минимум: **туннель + reverse‑proxy** или **`ALLOWED_IPS`**.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Удаление (одной командой)
|
||||||
|
|
||||||
|
Панель (на роутере):
|
||||||
|
|
||||||
```sh
|
```sh
|
||||||
# (если что-то стояло раньше — оба пакета по отдельности)
|
|
||||||
curl -fsSL https://raw.githubusercontent.com/andrey271192/keenetic_ssh-web/main/tunnel/tunnel-uninstall.sh | sh
|
|
||||||
curl -fsSL https://raw.githubusercontent.com/andrey271192/keenetic_ssh-web/main/uninstall.sh | sh
|
curl -fsSL https://raw.githubusercontent.com/andrey271192/keenetic_ssh-web/main/uninstall.sh | sh
|
||||||
|
|
||||||
# панель
|
|
||||||
curl -fsSL https://raw.githubusercontent.com/andrey271192/keenetic_ssh-web/main/bootstrap.sh | sh
|
|
||||||
|
|
||||||
# туннель — вставить выданный с VPS блок (4 export + curl)
|
|
||||||
export VPS_ENDPOINT=...
|
|
||||||
export VPS_PUBKEY='...'
|
|
||||||
export CLIENT_IP=10.99.0.X
|
|
||||||
export CLIENT_PRIVKEY='...'
|
|
||||||
curl -fsSL https://raw.githubusercontent.com/andrey271192/keenetic_ssh-web/main/tunnel/tunnel-install.sh | sh
|
|
||||||
```
|
```
|
||||||
|
|
||||||
**3. Проверка с VPS:**
|
Туннель‑клиент (на роутере, если ставили):
|
||||||
|
|
||||||
```sh
|
```sh
|
||||||
ping -c 3 10.99.0.X
|
curl -fsSL https://raw.githubusercontent.com/andrey271192/keenetic_ssh-web/main/tunnel/tunnel-uninstall.sh | sh
|
||||||
curl -I http://10.99.0.X:2001/
|
|
||||||
```
|
```
|
||||||
|
|
||||||
`hrneo`/`hrweb` (HydraRoute Neo) и любые ваши кастомные репозитории на обоих хостах остаются нетронутыми.
|
Туннель‑сервер (на VPS, если ставили):
|
||||||
|
|
||||||
|
```sh
|
||||||
|
curl -fsSL https://raw.githubusercontent.com/andrey271192/keenetic_ssh-web/main/tunnel/server-uninstall.sh | sudo sh
|
||||||
|
```
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
## Что лежит где
|
## Туннель как отдельный сервис (по желанию)
|
||||||
|
|
||||||
### keenetic_ssh-web (на роутере)
|
Туннель — это **дополнительный сервис для всей вашей экосистемы** (keenetic‑unified, domen_hydra и т. д.). Он просто делает так, что VPS «видит» роутер по адресу `10.99.0.X`.
|
||||||
| Путь | |
|
|
||||||
|---|---|
|
|
||||||
| `/opt/share/keenetic_ssh-web/` | приложение, `.env`, `data/store.json`, venv/lib |
|
|
||||||
| `/opt/etc/init.d/S99keenetic-ssh-web` | init-скрипт |
|
|
||||||
| `/opt/etc/rc.d/S99keenetic-ssh-web` | автозапуск |
|
|
||||||
| `/opt/var/log/keenetic-ssh-web.log` | лог |
|
|
||||||
| `/opt/var/run/keenetic-ssh-web.pid` | pid |
|
|
||||||
|
|
||||||
### tunnel — клиент (на роутере)
|
Полная документация (для тех, кому нужно больше деталей): `tunnel/README.md`.
|
||||||
| Путь | |
|
|
||||||
|---|---|
|
|
||||||
| `/opt/etc/wireguard/wg0.conf` | конфиг туннеля |
|
|
||||||
| `/opt/etc/init.d/S50kssh-tunnel` | init-скрипт |
|
|
||||||
| `/opt/etc/rc.d/S50kssh-tunnel` | автозапуск |
|
|
||||||
|
|
||||||
### tunnel — сервер (на VPS)
|
|
||||||
| Путь | |
|
|
||||||
|---|---|
|
|
||||||
| `/etc/wireguard/wg0.conf` | конфиг сервера (регенерируется `kssh-tun`) |
|
|
||||||
| `/etc/wireguard/server_{private,public}.key` | серверные ключи |
|
|
||||||
| `/etc/wireguard/peers/<name>.peer` | данные peer-а (имя/IP/ключи) |
|
|
||||||
| `/etc/wireguard/.kssh-tun.env` | параметры запуска |
|
|
||||||
| `/usr/local/bin/kssh-tun` | утилита |
|
|
||||||
| `systemctl status wg-quick@wg0` | сервис |
|
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
## Поддержка
|
## Поддержка проекта
|
||||||
|
|
||||||
- **GitHub:** [andrey271192](https://github.com/andrey271192)
|
- **Boosty:** `https://boosty.to/andrey27/donate`
|
||||||
- **Boosty:** [донат](https://boosty.to/andrey27/donate)
|
- **Ozon Bank (СБП):** `https://finance.ozon.ru/apps/sbp/ozonbankpay/019dc200-2a5d-7931-a619-782d285f6798`
|
||||||
- **Telegram:** [@Iot_andrey](https://t.me/Iot_andrey)
|
- **Telegram:** `https://t.me/Iot_andrey`
|
||||||
|
|
||||||
|
Кнопка **Sponsor** на GitHub ведёт на варианты из `.github/FUNDING.yml`.
|
||||||
## Лицензия
|
## Лицензия
|
||||||
|
|
||||||
MIT — см. [LICENSE](LICENSE).
|
MIT — см. [LICENSE](LICENSE).
|
||||||
|
|||||||
BIN
docs/files.png
Normal file
BIN
docs/files.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 40 KiB |
BIN
docs/ui.png
Normal file
BIN
docs/ui.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 43 KiB |
Reference in New Issue
Block a user