# polesniesoveti12/web-panel-proxy architecture

> Architecture diagram of the GitHub repository polesniesoveti12/web-panel-proxy, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-09-26). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/polesniesoveti12/web-panel-proxy
- Repository: https://github.com/polesniesoveti12/web-panel-proxy

## Overview

WEB PANEL PROXY is a VPS-hosted admin panel for provisioning proxy/VPN access, managing subscriptions and users, and serving client configurations. The principal workflow is: an administrator creates a subscription or individual connection; the panel provisions protocol profiles and access details; clients receive links, configurations, or QR codes and connect through the configured services. Separate capabilities cover multi-node federation, OpenFlux and AWG profiles, traffic/service monitoring, custom landing pages, firewall rules, and version updates. The tree and excerpts show important modules, but not the panel’s full request dispatcher, so uncertain call wiring is omitted.

Main entry points: [`wpp-panel`](https://github.com/polesniesoveti12/web-panel-proxy/tree/main/wpp-panel) (Panel runtime), [`wpp_metrics.py`](https://github.com/polesniesoveti12/web-panel-proxy/blob/main/wpp_metrics.py) (Traffic and service metrics), [`wpp_components.py`](https://github.com/polesniesoveti12/web-panel-proxy/blob/main/wpp_components.py) (Component updates), [`wpp_awg.py`](https://github.com/polesniesoveti12/web-panel-proxy/blob/main/wpp_awg.py) (AWG profiles)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_panel["Panel and access"]
  node_panel_app["Panel runtime"]
  node_panel_ui["Admin UI<br/>[wpp_ui.py]"]
  node_panel_extras["Panel pages"]
  node_subscriptions[("Subscription registry")]
  node_client_access["Client configurations"]
end

subgraph group_protocols["Connection services"]
  node_proxy_core["Proxy services"]
  node_awg["AWG profiles<br/>[wpp_awg.py]"]
  node_openflux["OpenFlux profiles<br/>[wpp_openflux.py]"]
end

subgraph group_federation["Nodes"]
  node_node_api[("Node registry and API<br/>[wpp_nodes.py]")]
end

subgraph group_operations["Operations and site"]
  node_metrics["Traffic and service metrics<br/>[wpp_metrics.py]"]
  node_firewall["Firewall rules<br/>[wpp_firewall.py]"]
  node_landing["Landing pages"]
  node_component_updates["Component updates<br/>[wpp_components.py]"]
  node_panel_updates["Panel updates<br/>[wpp_update.py]"]
end

node_admin(("Administrator"))
node_client(("VPN client"))
node_remote_node["Remote WPP node"]
node_xray["Xray"]
node_openflux_service["OpenFlux service"]
node_awg_service["AWG service"]
node_ufw["UFW firewall"]
node_caddy["Caddy"]

node_admin -->|"manages"| node_panel_app
node_panel_app -->|"renders"| node_panel_ui
node_panel_app -->|"renders"| node_panel_extras
node_panel_app -->|"manages access"| node_subscriptions
node_panel_app -->|"serves access"| node_client_access
node_client -->|"uses configuration"| node_client_access
node_panel_app -->|"manages profiles"| node_awg
node_panel_app -->|"manages profiles"| node_openflux
node_panel_app -->|"manages nodes"| node_node_api
node_node_api -->|"requests status"| node_remote_node
node_panel_app -->|"collects metrics"| node_metrics
node_panel_app -->|"reconciles rules"| node_firewall
node_panel_app -->|"manages pages"| node_landing
node_panel_app -->|"manages versions"| node_component_updates
node_panel_app -->|"manages releases"| node_panel_updates
node_awg -->|"configures profiles"| node_awg_service
node_openflux -->|"configures service"| node_openflux_service
node_metrics -->|"samples status"| node_awg_service
node_metrics -->|"samples status"| node_openflux_service
node_firewall -->|"reconciles rules"| node_ufw
node_component_updates -->|"updates component"| node_xray
node_component_updates -->|"updates component"| node_openflux_service
node_landing -->|"publishes pages"| node_caddy

click node_panel_app "https://github.com/polesniesoveti12/web-panel-proxy/tree/main/wpp-panel"
click node_panel_ui "https://github.com/polesniesoveti12/web-panel-proxy/blob/main/wpp_ui.py"
click node_panel_extras "https://github.com/polesniesoveti12/web-panel-proxy/blob/main/wpp_panel_extras.py"
click node_subscriptions "https://github.com/polesniesoveti12/web-panel-proxy/blob/main/wpp_subscriptions.py"
click node_awg "https://github.com/polesniesoveti12/web-panel-proxy/blob/main/wpp_awg.py"
click node_openflux "https://github.com/polesniesoveti12/web-panel-proxy/blob/main/wpp_openflux.py"
click node_client_access "https://github.com/polesniesoveti12/web-panel-proxy/tree/main/wpp-panel"
click node_node_api "https://github.com/polesniesoveti12/web-panel-proxy/blob/main/wpp_nodes.py"
click node_metrics "https://github.com/polesniesoveti12/web-panel-proxy/blob/main/wpp_metrics.py"
click node_firewall "https://github.com/polesniesoveti12/web-panel-proxy/blob/main/wpp_firewall.py"
click node_landing "https://github.com/polesniesoveti12/web-panel-proxy/tree/main/wpp-panel"
click node_component_updates "https://github.com/polesniesoveti12/web-panel-proxy/blob/main/wpp_components.py"
click node_panel_updates "https://github.com/polesniesoveti12/web-panel-proxy/blob/main/wpp_update.py"

classDef toneNeutral fill:#f8fafc,stroke:#334155,stroke-width:1.5px,color:#0f172a
classDef toneBlue fill:#dbeafe,stroke:#2563eb,stroke-width:1.5px,color:#172554
classDef toneAmber fill:#fef3c7,stroke:#d97706,stroke-width:1.5px,color:#78350f
classDef toneMint fill:#dcfce7,stroke:#16a34a,stroke-width:1.5px,color:#14532d
classDef toneRose fill:#ffe4e6,stroke:#e11d48,stroke-width:1.5px,color:#881337
classDef toneIndigo fill:#e0e7ff,stroke:#4f46e5,stroke-width:1.5px,color:#312e81
classDef toneTeal fill:#ccfbf1,stroke:#0f766e,stroke-width:1.5px,color:#134e4a
class node_panel_app,node_panel_ui,node_panel_extras,node_subscriptions,node_client_access,node_client toneBlue
class node_proxy_core,node_awg,node_openflux toneAmber
class node_node_api toneMint
class node_metrics,node_firewall,node_landing,node_component_updates,node_panel_updates toneRose
class node_admin,node_remote_node,node_xray,node_openflux_service,node_awg_service,node_ufw,node_caddy toneIndigo
```

## Components

### Panel and access

- [Panel runtime](https://github.com/polesniesoveti12/web-panel-proxy/tree/main/wpp-panel): `wpp-panel`
- [Admin UI](https://github.com/polesniesoveti12/web-panel-proxy/blob/main/wpp_ui.py): `wpp_ui.py`
- [Panel pages](https://github.com/polesniesoveti12/web-panel-proxy/blob/main/wpp_panel_extras.py): `wpp_panel_extras.py`
- [Subscription registry](https://github.com/polesniesoveti12/web-panel-proxy/blob/main/wpp_subscriptions.py): `wpp_subscriptions.py`
- [Client configurations](https://github.com/polesniesoveti12/web-panel-proxy/tree/main/wpp-panel): `wpp-panel`

### Connection services

- **Proxy services**
- [AWG profiles](https://github.com/polesniesoveti12/web-panel-proxy/blob/main/wpp_awg.py): `wpp_awg.py`
- [OpenFlux profiles](https://github.com/polesniesoveti12/web-panel-proxy/blob/main/wpp_openflux.py): `wpp_openflux.py`

### Nodes

- [Node registry and API](https://github.com/polesniesoveti12/web-panel-proxy/blob/main/wpp_nodes.py): `wpp_nodes.py`

### Operations and site

- [Traffic and service metrics](https://github.com/polesniesoveti12/web-panel-proxy/blob/main/wpp_metrics.py): `wpp_metrics.py`
- [Firewall rules](https://github.com/polesniesoveti12/web-panel-proxy/blob/main/wpp_firewall.py): `wpp_firewall.py`
- [Landing pages](https://github.com/polesniesoveti12/web-panel-proxy/tree/main/wpp-panel): `wpp-panel`
- [Component updates](https://github.com/polesniesoveti12/web-panel-proxy/blob/main/wpp_components.py): `wpp_components.py`
- [Panel updates](https://github.com/polesniesoveti12/web-panel-proxy/blob/main/wpp_update.py): `wpp_update.py`

### Other components

- **Administrator**
- **VPN client**
- **Remote WPP node**
- **Xray**
- **OpenFlux service**
- **AWG service**
- **UFW firewall**
- **Caddy**

## Connections

- Administrator → Panel runtime: manages
- Panel runtime → Admin UI: renders
- Panel runtime → Panel pages: renders
- Panel runtime → Subscription registry: manages access
- Panel runtime → Client configurations: serves access
- VPN client → Client configurations: uses configuration
- Panel runtime → AWG profiles: manages profiles
- Panel runtime → OpenFlux profiles: manages profiles
- Panel runtime → Node registry and API: manages nodes
- Node registry and API → Remote WPP node: requests status
- Panel runtime → Traffic and service metrics: collects metrics
- Panel runtime → Firewall rules: reconciles rules
- Panel runtime → Landing pages: manages pages
- Panel runtime → Component updates: manages versions
- Panel runtime → Panel updates: manages releases
- AWG profiles → AWG service: configures profiles
- OpenFlux profiles → OpenFlux service: configures service
- Traffic and service metrics → AWG service: samples status
- Traffic and service metrics → OpenFlux service: samples status
- Firewall rules → UFW firewall: reconciles rules
- Component updates → Xray: updates component
- Component updates → OpenFlux service: updates component
- Landing pages → Caddy: publishes pages
