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