Files
keenetic_ssh-web/README.md
Андрей Бобырев aae52e86ef docs: add Entware install snippet
Document Entware installation (mipsel/aarch64 + KeeneticOS 4.2 browser method) and SSH defaults for router access.
2026-04-27 03:16:39 +03:00

247 lines
10 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# keenetic_ssh-web
Веб‑панель, которая **выполняет команды прямо на роутере Keenetic** (Entware) и показывает вывод. Подходит для обновления пакетов, перезапусков сервисов, диагностики, и т. п.
- **Порт панели:** `2001`
- **Где работает:** на самом роутере (Entware)
- **Вход:** логин/пароль **от веб‑админки Keenetic** (NDM `/auth`)
(есть запасной «мастер‑пароль» `WEB_PASSWORD`, если нужно)
- **Опционально:** модуль `tunnel/`**WireGuardтуннель VPS ↔ роутер**, чтобы открыть доступ к панели и SSH, даже если у роутера **серый IP** (без проброса портов).
![Интерфейс](docs/ui.png)
![Схема туннеля (через VPS)](docs/tunnel-diagram.svg)
---
## Самое главное (чтобы было безопасно)
- Эта панель запускает **любые команды** в Linux на роутере. Это мощно, но опасно.
- **Не открывайте порт 2001 в интернет для всех.** Минимум — включите `ALLOWED_IPS` или используйте туннель (вариант 2).
---
## Быстрый старт (минимум команд)
### 📦 Установка Entware на Keenetic
━━━━━━━━━━━━━━━━━━━━━━
⚠️ Определи свою архитектуру
- Mipsel — роутеры на чипе MT7628/MT7621
- Aarch64 — роутеры на чипе MT7622/MT7981/MT7988 (ARM)
━━━━━━━━━━━━━━━━━━━━━━
💡 Совет
Начиная с KeeneticOS 4.2 Entware можно установить прямо через браузер — просто открой `192.168.1.1/a` и следуй инструкции.
━━━━━━━━━━━━━━━━━━━━━━
🚀 Установка онлайн — одной командой
🔵 Mipsel (MT7628/MT7621)
```sh
opkg disk storage:/ https://bin.entware.net/mipselsf-k3.4/installer/mipsel-installer.tar.gz
```
🟢 Aarch64 (MT7622/MT7981/MT7988)
```sh
opkg disk storage:/ https://bin.entware.net/aarch64-k3.10/installer/aarch64-installer.tar.gz
```
⏳ Дождись окончания установки — это займёт пару минут. После этого Entware готов к работе.
🔌 Подключение по SSH
📋 Данные для входа
- Логин: `root`
- Пароль: `keenetic`
- Порт: `222`
### Вариант 1. Панель нужна только дома (LAN)
На роутере (в Entware shell по SSH):
```sh
curl -fsSL https://raw.githubusercontent.com/andrey271192/keenetic_ssh-web/main/setup-router.sh | sh
```
Откройте в браузере:
- `http://IP_РОУТЕРА:2001`
Вход — **как в веб‑админку Keenetic**.
---
### Вариант 2. Серый IP, нужен доступ из любой точки (через VPS)
#### 2 команды “с нуля” (самый простой путь)
![2 шага установки (VPS → роутер)](docs/steps.svg)
**Команда 1 — на VPS (Ubuntu):** поставить туннель и сразу добавить роутер.
```sh
curl -fsSL https://raw.githubusercontent.com/andrey271192/keenetic_ssh-web/main/setup-vps.sh | sudo bash -s -- add my-router
```
Где `my-router`**имя этого роутера на VPS** (можете назвать `home`, `dacha`, `office1`).
Если у конкретного роутера «прокси/админка» сидит на другом порту (например `777`), задайте порт **для этого роутера**:
```sh
sudo kssh-tun add my-router --dnat 777
```
Что делает `--dnat`: туннель на роутере автоматически прокидывает вход на `wg0:<порт>``LAN_IP:<порт>`.
Это нужно, потому что некоторые сервисы Keenetic слушают **только на LANIP**, и через `wg0` иначе будет `Connection refused`.
Команда на VPS выведет **готовый блок** (несколько строк `export ...` + `curl ... | sh`).
**Команда 2 — на роутере (Entware shell):** вставьте выданный блок **как есть**.
Он поднимет `wg0`, а затем установит панель на `2001`.
Проверка с VPS:
```sh
curl http://10.99.0.X:2001
ssh root@10.99.0.X
```
Можно **вообще без домена и без Caddy/Nginx**: просто открывайте панель по IP из туннеля:
- `http://10.99.0.X:2001`
Reverseproxy нужен только если вы хотите **красивый адрес** `https://router-домен` и HTTPS.
**Caddy (3 строки):**
```caddy
router.example.com {
reverse_proxy 10.99.0.X:2001
}
```
**Nginx (минимальный server block):**
```nginx
server {
server_name router.example.com;
location / { proxy_pass http://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** в интернет «как есть».
- Используйте минимум: **туннель + reverseproxy** или **`ALLOWED_IPS`**.
---
## Удаление (одной командой)
### удаления (под ключ, без поломок)
Скрипты **удаляют только то, что сами ставили** и **не трогают**:
- HydraRoute Neo (`hrneo` / `hrweb`)
- другие Entwareпакеты и ваши сервисы
- ваши конфиги (кроме своих файлов)
- чужие правила firewall/iptables (удаляются только наши вставки, связанные с wg0)
Если хотите сохранить настройки панели (`.env`) и список команд (`data/store.json`) — скажите, добавлю отдельную “удалить, но оставить данные” команду в `setup-router.sh` (сейчас это есть для панели через `KEEP_DATA=1`, но не вынесено в быстрый блок).
---
Панель (на роутере):
```sh
curl -fsSL https://raw.githubusercontent.com/andrey271192/keenetic_ssh-web/main/uninstall.sh | sh
```
Панель (на роутере), **сохранить команды и настройки**:
```sh
curl -fsSL https://raw.githubusercontent.com/andrey271192/keenetic_ssh-web/main/uninstall.sh | env KEEP_DATA=1 sh
```
Туннель‑клиент (на роутере, если ставили):
```sh
curl -fsSL https://raw.githubusercontent.com/andrey271192/keenetic_ssh-web/main/tunnel/tunnel-uninstall.sh | sh
```
Туннель‑сервер (на VPS, если ставили):
```sh
curl -fsSL https://raw.githubusercontent.com/andrey271192/keenetic_ssh-web/main/tunnel/server-uninstall.sh | sudo sh
```
---
## Туннель как отдельный сервис (по желанию)
Туннель — это **дополнительный сервис для всей вашей экосистемы** (keeneticunified, domen_hydra и т. д.). Он просто делает так, что VPS «видит» роутер по адресу `10.99.0.X`.
Полная документация (для тех, кому нужно больше деталей): `tunnel/README.md`.
---
## Поддержка проекта
- **Boosty:** `https://boosty.to/andrey27/donate`
- **Ozon Bank (СБП):** `https://finance.ozon.ru/apps/sbp/ozonbankpay/019dc200-2a5d-7931-a619-782d285f6798`
- **Telegram:** `https://t.me/Iot_andrey`
Кнопка **Sponsor** на GitHub ведёт на варианты из `.github/FUNDING.yml`.
## Лицензия
MIT — см. [LICENSE](LICENSE).