Add node mode with SSH auto-install and Remnawave-style manual deploy.

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
orohi
2026-07-29 04:03:33 +03:00
co-authored by Cursor
parent 93bbbf8ce8
commit 7b77d84f68
20 changed files with 1470 additions and 8 deletions
+32
View File
@@ -33,6 +33,37 @@ docker compose up -d --build
---
## Режим ноды (как Remnawave, но проще)
Панель **не** гоняет Xray сама — VPN поднимается на отдельных серверах-нодах (как [Remnawave Node](https://docs.rw/install/remnawave-node)).
### Чем удобнее
| Remnawave Node | VPN Panel |
|---|---|
| Docker вручную + вставить compose | **Авто по SSH**: host/user/пароль (или ключ) → панель ставит Docker + агент |
| Или вручную | **Ручной режим** — тот же compose, если SSH недоступен |
### Как добавить ноду
1. Админка → **Ноды****Добавить ноду**
2. Укажите имя, IP/хост, SSH (`root` + пароль или ключ), порт API ноды (по умолчанию `2222`)
3. Режим:
- **Авто по SSH** — мастер подключается, ставит Docker (если нет), заливает бинарник `vpn-node`, поднимает `docker compose`
- **Вручную** — скопируйте `docker-compose.yml` и бинарник `/app/bin/vpn-node` на сервер
4. На firewall ноды откройте `NODE_PORT` **только** для IP панели
5. Нажмите **Проверить online**
Агент слушает `NODE_PORT`, авторизация: `Authorization: Bearer <SECRET_KEY>`.
Эндпоинты агента: `GET /health`, `GET|POST /api/v1/config`, `GET /api/v1/status`.
SSH-секреты в БД шифруются AES-GCM ключом от `APP_SECRET`.
> Панель в Docker должна иметь сетевой доступ до SSH (22) и NODE_PORT ноды. На VPS/Dokploy это обычно ок.
---
## Reverse proxy + SSL (Let's Encrypt)
Примеры лежат в `deploy/`. Сеть Docker: `vpn-panel-net`.
@@ -193,5 +224,6 @@ go run ./cmd/server
- `/` — главная
- `/login` — вход
- `/admin` — дашборд
- `/admin/nodes` — ноды
- `/admin/protocols` — протоколы
- `/health` — healthcheck