Architecture

September 13, 2026 · View on GitHub

NexusGate has two independent layers. Do not mix them.

Layer A — Virtual overlay (management mesh only)

Purpose: connect admin ↔ server ↔ edge for management traffic (not visitor traffic).

MechanismVirtual NIC (TUN) + UDP mesh; STUN reflexive + bidirectional punch, relay via Overlay Servers if punch fails
RolesAdmin and Server are equal Overlay Servers (DHCP / roster / relay). Edge is Overlay Node
SubnetConfigurable DHCP, default 10.88.0.0/16 (UDP 51820)
Config[overlay] in admin.toml / server.toml / edge.toml
[Management] Overlay TUN + P2P
  Admin (Overlay Server, e.g. 10.88.0.1) ══╗
  Server(Overlay Server, e.g. 10.88.0.2) ══╬══ equal overlay servers
  Edge  (Overlay Node,  DHCP VIP)        ══╝

Layer B — Intranet penetration (port mapping)

Purpose: map edge local serviceserver public port → visitors hit server public IP.

Visitor ──public──► Server:mapped_port ──tunnel──► Edge local_addr

Independent of overlay. Current tunnel path still uses Admin Hub data bridge (OpenPeerPath); that is transitional for the control/tunnel plane, not a replacement for Layer A.

Components

ComponentOverlay rolePenetration role
p2p-adminOverlay Server + Web panel(optional transitional Hub 7100/7101)
p2p-serverOverlay Server (equal peer)Public gateway ports only; localhost API
p2p-edgeOverlay NodeOutbound; bridges tunnel ↔ local service

Ports

WherePortLayerMeaning
Admin8088UIWeb panel
Admin / Server / Edge51820 UDPAOverlay mesh
Admin7100 / 7101transitionalHub control / data
Server8080 / 8443 / 8444BPenetration TCP / QUIC / KCP entry
Serverapi @ 127.0.0.1:3000mgmtLocalhost API
EdgeNo public listen

Notes

  • Overlay is not a substitute for port mapping; visitors never go through the VIP mesh by default.
  • QUIC/KCP on the server are penetration entry protocols, not the edge↔server management plane.
  • Long-term: move management onto overlay VIPs; keep Hub only as bootstrap if needed.

Management path (current)

Panel /api preference order:

  1. Internal mesh MgmtReq → server localhost API (node_id must match registry / hub_server_id)
  2. Hub MGMT_FORWARD (transitional)
  3. Direct HTTP to api_upstream

Edge service register: mesh CtrlRegisterService first; Hub REGISTER_SERVICE still sent as backup. Visitor tunnels still use Hub data :7101.