11f2c0ccb21b8836bfd8a1b0a4a1842f2f0d6845
All checks were successful
Build and Deploy Gateway / build-and-deploy (push) Successful in 24s
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.
Быстрый старт
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.
Description
Releases
2
Server + Mac
Latest
Languages
JavaScript
83.7%
CSS
8.5%
Shell
7.1%
Dockerfile
0.6%