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

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

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

81 lines
5.4 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 边缘节点工作区
节点部署管理与 Proxy Station 开发现在统一在本仓库进行。通用工具可随 Git 维护,真实配置与交付产物保存在本机的 `private/` 中。
```text
edge-nodes/
├── build-delivery-doc.py # 离线汇总页生成器,不含站点凭据
├── fleet.example.json # 占位清单,供新工作区参考
└── private/ # Git 忽略,目录权限 700
├── fleet.json # 当前舰队清单,含凭据,权限 600
├── sg-edge-node-docs/
├── la-edge-node-docs/
├── rn2-edge-node-docs/ # RN 当前部署(2026-08-01 重建)
├── jp-edge-node-docs/
├── rn-edge-node-docs/ # RN 历史交付
├── 边缘节点交付文档.html # 内嵌链接与二维码的私有离线页
└── archive/ # 原 CLAUDE.md、生成器与 .skill 包的迁移快照
.claude/skills/edge-node-multi-protocol/
├── SKILL.md
├── scripts/ # 通用 Bash/Python 部署、检测与链接生成工具
├── references/ # 部署流程、版本兼容、证书、DNS、3x-ui 结构
└── templates/ # 未填入真实值的交付模板与门面页
.agents/skills/edge-node-multi-protocol -> ../../.claude/skills/edge-node-multi-protocol
```
## 当前舰队
| 站点 | 服务商/地区 | 私有工作目录 |
|---|---|---|
| sg | AWS/新加坡 | `private/sg-edge-node-docs/` |
| la | DMIT/洛杉矶,承载 Proxy Station 生产服务 | `private/la-edge-node-docs/` |
| rn | RackNerd/洛杉矶 | `private/rn2-edge-node-docs/` |
| jp | VMISS/东京,裸 nginx | `private/jp-edge-node-docs/` |
站点信息是迁移时的工作记录;维护前仍需读取私有交付文档并核对实际机器。`rn-edge-node-docs/` 的旧链接不作为当前 RN 节点导入来源。
## 日常工作
在仓库根目录启动 Codex/Claude Code。节点部署或维护使用 `edge-node-multi-protocol` 技能,应用发布使用 `deploy`,线上订阅数据使用 `update-db`。技能只维护一份源码,Codex 通过 `.agents/skills/` 相对链接发现。
已有节点使用其私有 `scripts/` 工作副本,以保留站点适配;修改通用能力时同步整理到技能源目录,按目标节点审阅后更新工作副本。原始副本不会在代码更新时自动覆盖。
新增节点可在仓库根目录准备私有目录:
```bash
umask 077
mkdir -p edge-nodes/private/<id>-edge-node-docs
cp -R .claude/skills/edge-node-multi-protocol/{scripts,references,templates} \
edge-nodes/private/<id>-edge-node-docs/
cp edge-nodes/private/<id>-edge-node-docs/scripts/config.env.example \
edge-nodes/private/<id>-edge-node-docs/scripts/config.env
```
填写真实配置后,按技能选择 aaPanel 或裸 nginx 流程。`.sh` 从本机通过 SSH 操作 VPS,链接生成器在本机运行;哪些 Python 文件在 VPS 上执行见技能。工具依赖 Bash、Python 3、SSH/SCP;本机 `qrencode` 用于离线二维码。脚本不会因为复制到本项目而自动执行。
更新 `private/fleet.json` 后生成汇总页:
```bash
umask 077
python3 edge-nodes/build-delivery-doc.py
# 自定义私有清单或输出位置
python3 edge-nodes/build-delivery-doc.py --fleet /private/tmp/fleet.json \
--output /private/tmp/delivery.html
```
清单的 `updated` 是交付记录日期,`sites` 是站点数组。每条线路通过 `slug` 读取 `<slug>.link`、`<slug>-qr.png` 与可选 `<slug>-singbox.json`;`links_dir` 相对于清单所在目录解析。所有节点名称、订阅内容、二维码仍在本机计算并内联,生成器不访问网络,输出权限为 600。
新克隆不会携带 `private/`。从受控备份恢复该目录,或以 `fleet.example.json` 为结构参考新建私有清单和分享链接。示例故意没有可用凭据与链接,不能直接生成真实交付页。
分享链接通过 Web 导入 Proxy Station,见 [节点导入指引](../docs/SEEDING.md)。应用运行时不自动读取私有工作区;生产数据库修改继续走管理 API。
## 迁移记录与安全
2026-10-03 从原 `../edge-nodes/` 复制 284 个文件,逐文件核对字节一致;节点目录保留全部工作副本、真实配置、交付文档、链接与二维码。原生成器的 4 个站点、33 条线路迁成私有 JSON 清单;通用工具来自原 `.skill` 包及节点目录中的部署修复、裸 nginx、QUIC 与 SOCKS5 扩展。
原目录保留为迁移前备份。后续只在本仓库维护;`private/archive/` 的旧指令、旧生成器与技能包仅供追溯,不是当前工作入口。迁移未执行远端部署、生产数据库写入、Git 提交或推送。
本地验证已通过:9 个 Python 文件编译、23 个 Bash 文件语法、技能 frontmatter/相对链接、私有文件 Git 忽略与权限检查。离线汇总页包含 4 个站点、33 个唯一线路名,订阅内容与迁移前一致且不加载外部资源;占位配置验证了六条 TCP+四条 QUIC 分享链接和 HY2/TUIC 配置生成。没有执行远端连接、测速或真机客户端验收。
`private/`、`config.env` 及其备份、`node-links/` 均被 Git 忽略;Docker 构建上下文也排除节点工作区。私有目录应通过受控备份转交,不能使用 Git、在线二维码或公开交付页同步。不要将填写过的真实值放回技能源目录的脚本、参考资料或模板。