6.0 KiB
边缘节点工作区
节点部署管理与 Proxy Station 开发现在统一在本仓库进行。通用工具可随 Git 维护,真实配置与交付产物保存在本机的 private/ 中。
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 节点导入来源。
应用内的登记/启用节点与舰队交付线路是不同统计范围。最新应用盘点为 30 个登记节点、12 个启用、18 个停用,见 当前生产状态;停用不表示远端线路故障,维护节点或生成交付页不自动恢复应用开关。
2026-10-03 四台现役节点已统一使用 IPv4:系统接口禁用 IPv6,代理层拒绝 IPv6 目标(含 WARP),Cloudflare 不保留节点 AAAA。后续重建与扩展遵守 IPv4-only 维护约定;具体备份与验收在各站点的私有 04-IPv4-only.md。
日常工作
在仓库根目录启动 Codex/Claude Code。节点部署或维护使用 edge-node-multi-protocol 技能,应用发布使用 deploy,线上订阅数据使用 update-db。技能只维护一份源码,Codex 通过 .agents/skills/ 相对链接发现。
已有节点使用其私有 scripts/ 工作副本,以保留站点适配;修改通用能力时同步整理到技能源目录,按目标节点审阅后更新工作副本。原始副本不会在代码更新时自动覆盖。
新增节点可在仓库根目录准备私有目录:
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 后生成汇总页:
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,见 节点导入指引。应用运行时不自动读取私有工作区;生产数据库修改继续走管理 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、在线二维码或公开交付页同步。不要将填写过的真实值放回技能源目录的脚本、参考资料或模板。