Files
proxy-station/.claude/skills/edge-node-multi-protocol/templates/README.md
YANG JIANKUAN 5326c572a2 feat: 合并边缘节点运维并完善 Surge 配置安全
迁入通用节点部署工具、离线交付页生成器和共用技能,隔离真实配置与交付产物。统一 Codex 与 Claude Code 开发约定,补充节点迁移与运维文档。

完善 FINAL、策略组引用、输入校验、Surge 字段编码与 AI DNS 例外保护,增加隔离测试和订阅验证工具。

验证:全量类型检查、44 项单测、前端构建、脚本语法、技能入口与凭据隔离检查均通过。
2026-10-03 23:19:59 +08:00

51 lines
3.4 KiB
Markdown

# 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.