123 lines
5.1 KiB
Markdown
123 lines
5.1 KiB
Markdown
# Roadmap: VPN Proxy rebuild
|
||
|
||
## Целевая модель
|
||
|
||
Проект должен стать multi-mode системой вокруг `sing-box`:
|
||
|
||
| Режим | Назначение | Runtime | Статус |
|
||
| --- | --- | --- | --- |
|
||
| `gateway` | LXC/VPS как gateway для роутера и всей сети | Docker `network_mode: host` + TProxy | делаем первым |
|
||
| `desktop-proxy` | Mac/Linux локальный HTTP/SOCKS proxy с fallback | Docker bridged ports | позже переносим из старой реализации |
|
||
| `windows-gaming` | Windows для игр/Discord/Vesktop | standalone Tauri 2 app + ProxiFyre adapter + optional native `sing-box.exe` | активное направление: `docs/goals/windows-modular-client/PLAN.md` |
|
||
|
||
## Gateway mode
|
||
|
||
Цель: контейнер, который становится прозрачным gateway для сети.
|
||
|
||
Требования:
|
||
|
||
- `sing-box` внутри контейнера.
|
||
- `network_mode: host`.
|
||
- `CAP_NET_ADMIN` и `CAP_NET_RAW`.
|
||
- TProxy inbound на `7895`.
|
||
- Mixed HTTP/SOCKS inbound на `8080`.
|
||
- Web UI на `3456`.
|
||
- Subscription URL вводится в UI, парсится, пользователь выбирает сервер.
|
||
- Пользовательские routing lists управляются из UI.
|
||
- Генерируется `/etc/sing-box/config.json`.
|
||
- `sing-box check` перед применением.
|
||
- Restart `sing-box` после применения.
|
||
- Idempotent iptables setup.
|
||
- Cleanup iptables/ip rule/ip route при остановке контейнера.
|
||
|
||
Маршрутизация v1:
|
||
|
||
- private IP ranges -> `direct`.
|
||
- пользовательские списки -> `direct`, `vpn` или `block`.
|
||
- `geoip-ru` -> `direct`.
|
||
- `geosite-category-ru` -> `direct`.
|
||
- все остальное -> выбранный VPN outbound.
|
||
|
||
Порядок правил:
|
||
|
||
1. safety private-direct, чтобы не ломать LAN.
|
||
2. custom routing lists из UI.
|
||
3. RU direct rules.
|
||
4. default VPN outbound.
|
||
|
||
Формат пользовательского списка:
|
||
|
||
- `name`.
|
||
- `enabled`.
|
||
- `outbound`: `direct`, `vpn`, `block`.
|
||
- `domains`: exact domains.
|
||
- `domainSuffixes`: доменные suffix, удобно для игр/сервисов.
|
||
- `domainKeywords`: keyword matching.
|
||
- `ipCidrs`: CIDR ranges.
|
||
- `ports`: TCP/UDP ports.
|
||
- `networks`: `tcp`, `udp`.
|
||
- UI должен автосохранять списки с debounce, чтобы polling state не затирал незавершенное редактирование.
|
||
|
||
Важно: gateway не видит process name на клиентском ПК. Для сценария вроде "League of Legends всегда direct" нужны домены, CIDR и порты Riot, а не имя процесса.
|
||
|
||
Отдельно решить позже:
|
||
|
||
- DNS strategy: DHCP DNS, DNS redirect или local DNS inbound.
|
||
- IPv6 TProxy.
|
||
- nftables backend.
|
||
- health checks и smoke diagnostics.
|
||
- secret storage через Infisical/Vault/env.
|
||
|
||
## Desktop proxy mode
|
||
|
||
Цель: сохранить удобный Docker-сценарий для Mac/Linux без TProxy.
|
||
|
||
Требования:
|
||
|
||
- UI на `3456`.
|
||
- Mixed inbound на `8080`.
|
||
- Subscription parser.
|
||
- Выбор сервера.
|
||
- Fallback proxy через `urltest`.
|
||
- Direct mode toggle.
|
||
- Не требует `NET_ADMIN`.
|
||
|
||
## Windows gaming mode
|
||
|
||
Цель: отдельное Windows desktop-приложение для Discord/Vesktop/игр, где Control App, Proxyfier Layer и Local sing-box являются независимыми компонентами.
|
||
|
||
Current checkpoint:
|
||
|
||
- MVP slice exists under `apps/windows-client`.
|
||
- Frontend build passes with `npm run build`.
|
||
- Rust/Tauri native verification requires installing Rust/rustup and Visual Studio Build Tools with MSVC/Windows SDK.
|
||
- Local sing-box is optional; external SOCKS5 targets remain the first verified path.
|
||
|
||
Требования:
|
||
|
||
- Standalone Tauri 2 + React/TypeScript + Rust app under `apps/windows-client`.
|
||
- Profiles for process/folder/exe app routing.
|
||
- External SOCKS5/HTTP targets first; local `sing-box` is optional.
|
||
- Proxyfier adapter boundary with ProxiFyre as the first engine.
|
||
- Explicit installers for Control App, Proxyfier Layer, and Local sing-box.
|
||
- Privileged helper/install operations return structured JSON.
|
||
|
||
Source docs:
|
||
|
||
- Product/tech brief: `docs/windows-client-product-tech-brief.md`.
|
||
- Execution plan: `docs/goals/windows-modular-client/PLAN.md`.
|
||
|
||
Superseded:
|
||
|
||
- The old Node `APP_MODE=windows` plan in `docs/superpowers/plans/2026-05-21-windows-client.md` is historical context, not the active implementation path.
|
||
|
||
## Рабочий порядок
|
||
|
||
1. Сделать новый gateway root.
|
||
2. Реализовать Docker image + entrypoint TProxy lifecycle.
|
||
3. Реализовать маленький control-server.
|
||
4. Реализовать Vite + React UI для subscription -> server select -> apply.
|
||
5. Добавить gateway docs/install script.
|
||
6. Потом переносить desktop-proxy.
|
||
7. Потом реализовать standalone Windows Tauri client по `docs/goals/windows-modular-client/PLAN.md`.
|