Files
harbor-net/docs/roadmap.md

5.1 KiB
Raw Blame History

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.