Files
vpn-proxy/README.md
Dmitriy Petrov 8789496ae6 feat: добавлены компоненты для управления конфигурацией и логами
Добавлены новые компоненты для отображения и управления конфигурацией, логами и правилами маршрутизации. Реализована логика для работы с API, включая запросы на получение и сохранение данных. Также добавлены шаблоны правил и утилиты для валидации.

Refs: None
2026-05-08 18:23:29 +03:00

58 lines
3.4 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.
# VPN Proxy Gateway
Контейнер запускается в `network_mode: host`, применяет TProxy-правила на хосте и
запускает `sing-box` как прозрачный gateway для устройств в локальной сети.
## Возможности
- Web UI на Vite + React, всё на русском.
- Один Node control-server без отдельного backend framework.
- Парсинг subscription URL: JSON config, base64 список, plain-text VLESS links.
- Подписка маскируется в UI после загрузки, кнопка «Забыть подписку» — стирает
кэш, останавливает sing-box и удаляет конфиг.
- Управление жизненным циклом sing-box из UI: остановить, перезапустить, сбросить
конфиг, посмотреть сгенерированный `config.json` (read-only).
- Live-логи sing-box через SSE (фильтр по уровню, пауза, очистка).
- Routing lists с автосохранением, drag-n-drop порядка (first match wins),
валидацией CIDR/портов/доменов и шаблонами (LoL, Discord, Telegram, YouTube,
Steam, реклама).
- Генерация sing-box config с safety private-direct, кастомными правилами и
RU geosite/geoip direct.
- Docker entrypoint с idempotent TProxy setup/cleanup.
- Healthcheck в compose: `curl http://127.0.0.1:${PORT}/api/state`.
## Быстрый старт
```bash
cp .env.example .env
docker compose -f docker-compose.gateway.yml up -d --build
```
UI будет доступен на хосте по `http://<gateway-host>:3456`.
## REST API
| Метод | Путь | Назначение |
| --- | --- | --- |
| GET | `/api/state` | состояние, список серверов, кастомные правила, masked subscription |
| GET | `/api/config` | текущий sing-box config |
| GET | `/api/logs` | последние 200 строк логов |
| GET | `/api/logs/stream` | SSE-поток логов sing-box |
| GET / PUT | `/api/rules` | список кастомных правил |
| POST | `/api/subscription/fetch` | загрузить подписку |
| DELETE | `/api/subscription` | удалить подписку, остановить sing-box |
| POST | `/api/apply` | применить выбранный сервер |
| POST | `/api/singbox/{stop,restart,clear}` | управление процессом |
## Важные ограничения
- IPv4 TProxy first. IPv6 routing будет отдельным этапом.
- DNS-перехват пока не включен. Для корректного gateway-сценария лучше выдать
клиентам DNS через роутер/DHCP.
- Контейнер должен запускаться с `network_mode: host`, `NET_ADMIN`, `NET_RAW`.
- Mixed proxy по умолчанию слушает `127.0.0.1` (для дома). Чтобы открыть для LAN,
установи `PROXY_BIND_IP=0.0.0.0` в `.env`.
- Gateway не видит process name на клиентском ПК, поэтому правила для игр
задаются через домены, suffix, IP CIDR и порты.
- `_archive/` игнорируется git, потому что там лежит старая реализация и runtime state.