Commit graph

12 commits

Author SHA1 Message Date
Sergey Prokhorov
121d8b7413
docs: split-mode setup guide, architecture diagrams, cert script, build
README:
- New 'Split-mode setup' section: motivation, firewall rules, step-by-step
  instructions for both VPN tunnel and TLS distribution options
- Split-mode bullet added to Features list
- Notes on DPI-resistant tunnels (Shadowsocks, VLESS/XRay, Hysteria2) for
  Russian deployment; standard VPN protocols (WireGuard, OpenVPN) may be blocked
- Install instructions updated to use `make init-config` (copies templates,
  auto-detects public IP) instead of manual cp; ROLE= documented throughout
- Split-mode Step 4 uses `make ROLE=back/front` so template-change detection
  works correctly after `git pull`

Makefile:
- ROLE ?= both variable selects config templates (both/front/back)
- Config prereq rules use $(SYS_CONFIG_SRC) / $(VM_ARGS_SRC) based on ROLE
- New `init-config` target: force-copies templates, auto-detects public IP,
  prints edit reminder; replaces manual cp in install workflow

scripts/gen_dist_certs.sh:
- Two-step workflow: `init <dir>` on back server (CA + back cert),
  `add-node <dir> <name>` per front server (cert signed by existing CA)
- Generates per-node ssl_dist.<name>.conf with paths substituted (no
  NODE_NAME placeholder to edit manually)
- ssl_dist.<name>.conf is now used directly (no rename to ssl_dist.conf);
  vm.args examples and README updated to match

config/vm.args.{front,back}.example:
- -ssl_dist_optfile points to role-specific filename (ssl_dist.front.conf /
  ssl_dist.back.conf) so cert files can be copied as-is without renaming

AGENTS.md:
- Role-overview Mermaid flowchart showing front/back/both process split
- Data-plane section replaced with links to doc/ (no duplication)
- Supervision tree, key interactions, split-mode config keys updated

doc/handler-downstream-flow.md, doc/migration-flow.md:
- Mermaid box grouping to visually separate FRONT and BACK node participants
- erpc:call reference corrected (was rpc:call)

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
2026-04-12 00:34:45 +02:00
Sergey Prokhorov
42d86517a4
Add split-mode: front/back nodes via Erlang distribution
Adds `node_role = front | back | both` (default `both` — no behaviour change).
In split mode the domestic front node runs Ranch listeners and session/policy
processes; the foreign back node runs mtp_config, DC pools, and downstream
connections.

The key implementation insight: Erlang's transparent distributed process
addressing means `gen_server:call({mtp_dc_pool_1, BackNode}, ...)` works
identically to a local call — zero changes to the hot-path message protocol.
Process monitors fire on node disconnection, so back-node restarts propagate
cleanly to front-node handlers without any watcher process.

Changes:
- mtproto_proxy_sup: role-parameterised children/1
- mtproto_proxy_app: role-gated start, config_changed, port management
- mtp_config: backend_node/0, remote-aware get_downstream_pool/1 and
  get_default_dc/0 using erpc:call; get_downstream_safe/2 dispatches
  remotely in front mode
- mtp_metric: passive_metrics/0 skips unavailable gauges per role
- split_dc_SUITE: two CT cases (echo, migration) on OTP peer nodes

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
2026-04-11 23:33:09 +02:00
Sergey Prokhorov
9a286862c8
Use OTP logger instead of lager. 2026-02-17 01:50:54 +01:00
Sergey Prokhorov
21d6a7a51f
Update readme and app.src default config
* Add link to telegram group
* Simplify private proxy examples
* More performace tips
* Change order of options in app.src to more logical
2019-10-14 03:09:34 +02:00
Sergey Prokhorov
c6e6ee6f3b
Add helpers for configuration reload 2019-08-27 00:32:23 +02:00
Sergey Prokhorov
3786e2630f
Clean-up README; add some helper functions 2019-08-21 00:54:13 +02:00
Sergey Prokhorov
dcdf05a318
Use explicit ipv4 in curl makefile; add timeout; disable unused emulator threads 2019-08-18 19:30:11 +02:00
Сергей Прохоров
8dd4511701
Make it possible to overwrite port/secret/tag from docker command-line 2019-02-16 20:27:42 +01:00
Сергей Прохоров
68c4659fdb
Add epmd systemd service on systems that don't have it. Fixes #5 2019-02-16 20:27:41 +01:00
Сергей Прохоров
d4b8c76cdf
Ease debugging
use fully qualified node name
2018-10-22 22:21:30 +02:00
Сергей Прохоров
41dd401c8b
Make it possible to auto-start on reboot 2018-09-22 18:40:17 +02:00
Сергей Прохоров
15b264c9cc
Add makefile and a way to easily overwrite configuration 2018-09-21 15:35:33 +02:00