# Documentation templates Three markdown templates to fill in with a real node's values after deployment, plus `landing.html` (the public landing-page cover, used by `09b-default-444.sh`). - `01-handover-template.md` — service inventory: what's running, how to log in, what each thing does. - `02-node-info-template.md` — client-facing: share links + QR codes for all 6 nodes, manual params as fallback. - `03-ops-guide-template.md` — architecture + standard workflow + the version-compat pitfalls + day-2 ops. ## How to fill them in 1. Run `scripts/14-generate-links-and-qr.py` first — it writes `vmess-direct.link`, `vmess-warp.link`, `trojan-direct.link`, `trojan-warp.link`, the matching `-qr.png` files, and `ss-direct.link` / `ss-warp.link` with their QR codes plus `ss-direct-singbox.json` / `ss-warp-singbox.json` into an output directory. Put the doc copies in the same directory so the `![...](foo-qr.png)` image references in `02-node-info-template.md` resolve. 2. Copy the three `*-template.md` files into that same output directory (drop the `-template` suffix if you like, e.g. `01-handover.md`), and replace every `{{TOKEN}}` below with the real value from `config.env` (or the node's live state, for things like `AAPANEL_PORT` which the installer randomizes — read it from `/www/server/panel/data/port.pl` on the box). 3. For `{{VMESS_DIRECT_LINK}}` / `{{VMESS_WARP_LINK}}` / `{{TROJAN_DIRECT_LINK}}` / `{{TROJAN_WARP_LINK}}`, paste the contents of the matching `.link` file. For `{{SS_DIRECT_SINGBOX_JSON}}` / `{{SS_WARP_SINGBOX_JSON}}`, paste the matching `.json` file's contents inside the fenced code block that's already there. ## Token reference | Token | Source | |---|---| | `{{HOST_LABEL}}` | Whatever short name you use for this node (e.g. an SSH alias or hostname) | | `{{SSH_ALIAS}}` / `{{SSH_USER}}` | Your local SSH config / `config.env` `SSH_USER` | | `{{SERVER_IP}}` / `{{SERVER_IPV6}}` | `config.env` | | `{{VPS_PROVIDER_AND_SPECS}}` | Whatever's useful to note (provider, region, vCPU/RAM) | | `{{DEPLOY_DATE}}` | The date you ran through the workflow | | `{{DOMAIN_ROOT}}` / `{{SUB_PANEL}}` / `{{SUB_XUI}}` / `{{SUB_COVER}}` | `config.env` | | `{{AAPANEL_ENTRANCE}}` / `{{AAPANEL_USER}}` / `{{AAPANEL_PASS}}` / `{{AAPANEL_PORT}}` | `config.env` + live panel port from the box | | `{{XUI_PATH}}` / `{{XUI_USER}}` / `{{XUI_PASS}}` | `config.env` | | `{{XUI_UUID}}` | `config.env` (node-main's VMess credential) | | `{{NODE_PASSWORD}}` | `config.env` (node-main's shared Trojan+Shadowsocks credential) | | `{{SS_METHOD}}` | `config.env` | | `{{PORT_VMESS_DIRECT}}` / `{{PORT_VMESS_WARP}}` / `{{PORT_TROJAN_DIRECT}}` / `{{PORT_TROJAN_WARP}}` / `{{PORT_SS_DIRECT}}` / `{{PORT_SS_WARP}}` | `config.env` | | `{{WS_PATH_VMESS_DIRECT}}` / `{{WS_PATH_VMESS_WARP}}` / `{{WS_PATH_TROJAN_DIRECT}}` / `{{WS_PATH_TROJAN_WARP}}` / `{{WS_PATH_SS_DIRECT}}` / `{{WS_PATH_SS_WARP}}` | `config.env` | | `{{WARP_SOCKS_PORT}}` | `config.env` (default 40000) | | `{{VMESS_DIRECT_LINK}}` / `{{VMESS_WARP_LINK}}` / `{{TROJAN_DIRECT_LINK}}` / `{{TROJAN_WARP_LINK}}` | contents of the matching `.link` file from step 9 | | `{{SS_DIRECT_SINGBOX_JSON}}` / `{{SS_WARP_SINGBOX_JSON}}` | contents of the matching `.json` file from step 9 | Never fill these in with placeholder/example values in a copy that leaves your machine — every token above except `{{HOST_LABEL}}`/`{{DEPLOY_DATE}}`/`{{VPS_PROVIDER_AND_SPECS}}` is either a secret or part of your control-plane map.