Архитектура системы
Схема трафика
flowchart TD
C[Клиент] -->|"VLESS WS · TLS 443"| CAD["Caddy\nwildcard *.kuzya-cabi.net\nCloudflare DNS-01"]
CAD -->|"/vless-ws/ → :10000"| XR["XRay / 3x-ui\nVPS-RU :10000"]
XR --> BAL{leastPing\nbalancer}
BAL -->|"UDP+TCP"| WGD["wg-direct\nXRay native WG\nkernelTun=false"]
BAL -->|"TCP 8443"| VLC["vless-chain-us\nVLESS → VPS-US"]
BAL -->|"SOCKS5 :10808"| SSH["socks-via-ssh\nautossh tunnel"]
WGD -->|"UDP 51820"| USW["VPS-US\nWG wg0 10.0.0.1/24"]
VLC -->|"VLESS TCP"| US3X["VPS-US\n3x-ui XRay :8443"]
SSH -->|"SSH → SOCKS5"| USS["VPS-US\nmicrosocks-ssh :10808"]
USW --> NET[Internet]
US3X --> NET
USS --> NET
Модули по узлам
graph LR
subgraph RU["VPS-RU 89.44.87.72"]
direction TB
m00[00_base] --> m01[01_3xui]
m01 --> m06[06_caddy]
m01 --> m08[08_wg_client]
m00 --> m04[04_ssh_tunnel]
m00 --> m02[02_vaultwarden]
m00 --> m03[03_monitoring]
m06 --> m11[11_cv]
m06 --> m12[12_mebel]
m06 --> m14[14_wiki]
m00 --> m13[13_price_tracker]
end
subgraph US["VPS-US 104.168.117.102"]
direction TB
u00[00_base] --> u01[01_3xui]
u00 --> u05[05_us_exit]
u00 --> u07[07_wg_server]
u00 --> u03[03_monitoring]
end
m04 -. "autossh SSH" .-> US
m08 -. "WG keys sync" .-> u07
m01 -. "VLESS chain :8443" .-> u01
Порядок деплоя (полный цикл)
sequenceDiagram
participant W as Windows\ndeploy-all.ps1
participant R as VPS-RU
participant U as VPS-US
W->>U: SCP bundle → deploy-us.sh
U->>U: 00_base → 01_3xui → 05_us_exit → 07_wg_server → 03_monitoring → 99_test
U-->>W: WG pubkey, VLESS-US URL
W->>W: Обновить config.json с WG pubkey
W->>R: SCP bundle (incl. docs/) → deploy-ru.sh
R->>R: 00_base → 01_3xui → 02_vault → 03_monitoring → 06_caddy
R->>R: 04_ssh_tunnel → 08_wg_client → 11_cv → 12_mebel → 13_tracker → 14_wiki → 99_test
R-->>W: VLESS URL → output/vless-url.txt
Конфигурация (единый источник истины)
| Файл |
Назначение |
backups/ru/config.json |
VPN-параметры VPS-RU (node_role, domain, vless, wireguard, tunnel, xui, caddy) |
backups/us/config.json |
VPN-параметры VPS-US |
config-ru.env |
Env-переменные deploy-ru.sh; модули читают config.json первым |
backups/ru/x-ui.db |
Бэкап SQLite-базы 3x-ui (восстанавливается при деплое) |
templates/xray-config-*.json |
Шаблоны XRay-конфигурации (fallback если нет config.json) |