跳转至

DETACH-05:RR 生产部署节点固化证据

更新时间:2026-08-29

当前状态

DETACH-05 为“调查中”。本目标只盘点和核验 RR 的生产载荷及运行脚本,不将这些载荷迁往 101,不删除任何版本、凭据、审计或回滚材料。

RR 正式生产运行证据

  • RR 的 Docker、Nomad 与 agentmeshos-system-operations-bridge.service 均为 activeenabled
  • 正式 Bridge 仅监听 RR 私有 Docker 地址 172.30.70.1:39184;systemd 单元的正式运行载荷根目录为 /usr/local/lib/agentmeshos/project-runtime
  • Bridge 的 current 指向独立的版本化 release;历史 Bridge release 中保存四个脚本的同哈希副本,用于版本回溯,不能仅因重复而删除。
  • RR /backup 位于根系统盘,不是独立备份盘;脚本引用该目录时只能作为本机恢复材料位置,不能宣称具备独立故障域。

四个脚本的归属与用途

脚本 正式运行载荷位置 现场用途 结论
agentmeshos-docs-docker-deploy.sh project-runtime/scripts/deploy/docs-site/ 拉取、部署、健康检查和回滚 Docs 容器 RR 生产部署工具,保留在 RR;不迁移至 101 运行
agentmeshos-node-metrics-deploy.sh project-runtime/scripts/deploy/node-metrics/ 部署和维护节点 metrics 容器 RR 节点管理运行载荷,保留
agentmeshos-nomad-client-deploy.sh project-runtime/scripts/deploy/nomad-client/ 安装、配置、备份和维护 Nomad Client RR 节点管理运行载荷,保留
agentmeshos-node-inventory-export.sh project-runtime/scripts/maintenance/,并由 /usr/local/lib/agentmeshos/ 的匹配副本供 systemd 调用 生成脱敏 Tailnet 节点库存 RR 本机维护工具,保留

四个 project-runtime 副本均为 root:root 0755。两个历史 Bridge release 中可见的副本与对应运行载荷哈希一致;这证明它们是版本化运行材料,不是应交给 101 的 Git 工作区残留。

发现的部署链路风险

  • 当前 Bridge node_management.py 在节点部署时会从 RR 读取 Nomad/metrics 脚本,并通过 SSH/SCP 上传至目标节点。
  • 这与项目现行架构的“镜像、安装包、构建产物、脚本和业务文件不得经 SSH、Tailnet 或节点间路径传送”规则冲突。该事实不影响 RR 作为生产运行节点的定位,但阻止将当前链路宣称为完全固化、合规的发布方式。
  • 处理方式不能是将脚本复制到 101 或临时建立第二 Runtime/Bridge。应在独立的架构选型后,将节点安装载荷改为经受控公网数据面取得的版本化产物,并保留同一摘要、审计和回滚语义;在此之前不改变现网部署行为。

待完成项

2026-08-29 WebDAV 非生产发布探针

在 101 本机使用 /etc/agentmeshos/cloudreve-system-webdav.env 对截图所示的 AgentMeshOS-WebDAV 读写空间执行随机临时对象验收:

  • 根目录 PROPFIND207
  • 临时发布对象上传:201
  • 公网 HTTPS 回读 SHA-256:与本机生成对象一致
  • 临时对象删除:204
  • 删除后回读:404
  • 本机探针文件已清理;未写入长期目录、RR 生产载荷或 GitHub Secret

该结果证明 101 现有 WebDAV 读写凭据可用于受控产物写入和回读。它尚未证明 RR 已完成接收、部署、健康复核和回滚,后者仍需独立验收。

2026-08-29 RR 只读健康复核

通过已登记的 rr SSH 入口完成只读检查,并先确认远端主机标识为 rr

  • Docs 部署脚本 health:返回码 0,健康检查通过。
  • Node metrics 部署脚本 --check:返回码 0,容器运行且 100.64.0.1:9100 正在监听。
  • Nomad Client 部署脚本 status:返回码 0,Nomad 2.0.4 服务 active/enabled,运行参数与 RR 节点职责一致。
  • agentmeshos-system-operations-bridge.service:active/enabled。

本次检查未执行部署、重启、回滚、文件写入或删除。Nomad 日志中仍可见 keepalive 超时及 pcdell-103 过期 introduction token 告警;这些是待单独处理的现场风险,不作为本次剥离的已解决项,也不改变 RR 生产载荷保留结论。

2026-08-29 CI 产物候选版本

对应提交 88e563c0942050d6be534efb8641dbd93ba22cf2 的 Docs CI 已成功完成(run 33251501638)。真实构建输出登记如下:

  • 镜像:ghcr.io/michaellab7284/agentmeshos-docs:sha-88e563c
  • OCI 镜像 digest:sha256:92190176078f28a97592b8c2e19de231bcc76074071d98b5cac234131a472263
  • GitHub Actions 构建记录 artifact:run artifact 9714504395(仅作构建证据,不作为生产凭据或长期业务文件)

该版本目前只是待接收候选,尚未上传 Cloudreve、尚未由 RR 接收或部署。后续必须在隔离目标完成错误摘要拒绝、失败清理、健康和审计验收后,才可进入生产窗口。

2026-08-29 隔离发布清单验收

使用上述候选版本生成最小发布清单,在 AgentMeshOS-临时 上传并通过公网 HTTPS 回读:

  • 临时清单上传:201
  • 回读:200,回读 SHA-256 与本机生成清单一致(a4a758...c2df
  • 清单删除:204
  • 删除后回读:404
  • 本机和云端临时对象均已清理

该验收只证明版本清单的受控 WebDAV 生命周期,不等于镜像已上传 Cloudreve,也不等于 RR 已接收或部署。下一步仍需在明确的非生产目标上验证错误域名/错误摘要拒绝、失败清理、健康和审计,然后才能考虑生产接收窗口。

RR 公网接收入口复核

对现有示例地址 https://cloud.yohan.fun/s/web-verifier.tar 做匿名 HTTPS 复核:请求会重定向到 Cloudreve 登录页,未返回载荷;对新建临时 WebDAV 对象的匿名读取返回 401。因此当前 Cloudreve WebDAV 凭据只能证明 101 的受限写入能力,不能作为 RR 的下载凭据,也不存在可直接用于 RR 接收的已验证公开分享 URL。正式 RR 接收前必须取得并验证一个受控公开下载地址,或完成独立的最小权限发布接口设计;在此之前保留现网 SSH/SCP 链路,不进行生产切换。

补充核对 Cloudreve 4.18.0 API:实例使用 /api/v4/api/v4/share 路由存在,但使用现有 WebDAV Basic Auth 请求仍返回 {"code":401,"msg":"Login required"}。这证明 WebDAV 凭据不具备 API 会话/分享管理权限;不读取、复制或升级该凭据权限。

2026-08-29 RR 文件级接收烟测

在用户提供的 nOSN 目录分享下上传一次性临时发布清单,使用 /api/v4/file?uri=... 列举并用 /api/v4/file/url 生成短时签名文件 URL;RR 仅通过该公网 HTTPS URL 接收:

  • 临时清单上传:201
  • RR 下载:200,回读 SHA-256 与 101 原清单一致,大小 95 字节
  • 云端临时对象删除:204
  • 删除后回读:404
  • RR /var/tmp 临时文件已由退出陷阱清理

该烟测证明目录分享可以作为受控发布根,具体文件通过短时签名 URL 交给 RR;RR 不需要 WebDAV 凭据。当前使用的是一次性清单,不是生产镜像,尚未执行生产部署或回滚。

2026-08-30 RR 候选镜像接收与隔离健康验收

  • RR 在临时 Docker 配置下匿名读取 GHCR 候选元数据成功,不依赖复制 GitHub 凭据。
  • RR 拉取 ghcr.io/michaellab7284/agentmeshos-docs:sha-88e563c 成功;Registry digest 与 CI 登记的 sha256:92190176078f28a97592b8c2e19de231bcc76074071d98b5cac234131a472263 一致。
  • 候选镜像以独立临时容器和 127.0.0.1:18081 端口运行,按镜像真实监听端口 39130 验证 /healthz=200、根页面 =200;临时容器已清理。
  • RR 现网 agentmeshos-docs:latest 仍为 healthy;现有 rollback 镜像标签仍存在,未执行现网替换或回滚。

该证据完成了 RR 的候选接收和隔离健康前置,但尚未完成生产切换、生产健康复核和回滚演练。

用户提供的目录分享复核

对用户提供的 https://cloud.yohan.fun/s/nOSN 做匿名复核:GET /api/v4/share/info/nOSN 返回 code=0、名称 AgentMeshOS-WebDAVexpired=false,说明目录分享本身有效;短链页面和 RR curl -L 均返回 Cloudreve HTML 页面,而不是文件字节流,分享信息的 size=0 也表明它是目录而非单个载荷文件。该分享可作为人工浏览入口,但 RR 自动接收仍必须取得目录内具体文件的下载 URL 并验证摘要,不能把目录短链直接作为安装包地址。

非生产目标基线

项目现有 scripts/deploy/web-verifier/tests/web-verifier-public-restore-test.sh 已在 101 本机执行并返回 PASS。该隔离夹具覆盖公网恢复、固定镜像身份、保留标签和非法公网地址拒绝,使用临时 fixture,不触碰 RR 或生产载荷。它作为后续节点侧发布验收的执行边界基线;Docs 产物的正式接收测试仍需单独实现并留证。

本次补充覆盖错误摘要拒绝和异常退出清理,并修复了隔离恢复脚本的清理陷阱:校验失败通过 die 退出时也会删除 /var/tmp/agentmeshos-web-verifier.* 临时目录。完整夹具重跑返回 PASS,且只比较本次测试新增的临时目录,避免把历史残留误报为当前失败。

  • 已完成“节点安装载荷的受控公网分发”架构选型和迁移约束登记:采用 Cloudreve 受控共享 https://cloud.yohan.fun/ 下载地址、版本化发布清单和 SHA-256;RR Bridge 只发送固定控制命令与元数据,目标节点自行下载和校验。详见 docs/architecture/05_技术选型说明.mddocs/architecture/07_部署规范.md。这不是已迁移证据。
  • DD 现场运行的是 Cloudreve 4.18.0(容器内二进制构建信息)。本次通过 Home 浏览器实际核对 OAuth 新建页面时,表单没有提供 Files.WriteShares.Write,因此未创建 AgentMeshOS发布协调器,未保存临时客户端密钥,OAuth 分支不作为当前发布前置条件。
  • 截图确认 Cloudreve AgentMeshOS WebDAV 账号对 AgentMeshOS-WebDAV 目录具有“读写”权限。101 的 /etc/agentmeshos/cloudreve-system-webdav.env 已存在且为 root:root 0600;该配置是当前已验证的系统 WebDAV 数据面凭据,供 101 访问受限系统目录,不交给 Worker,也不用于猜测或调用管理 API。
  • GitHub 仓库当前有 9 个 Docker 构建工作流,均只使用自动 GITHUB_TOKEN 推送 GHCR;仓库 Secret 数量为 0,不存在 CLOUDREVE_* 或任何既有发布凭据。GitHub-hosted runner 不能读取 101 的 root-only 配置,也不应以 SSH 方式取得该配置。
  • 当前发布路径改为复用已存在的 101 root-only WebDAV 读写凭据:发布协调器在 101 通过 https://cloud.yohan.fun 写入受控目录,使用版本清单和 SHA-256 记录产物;RR Bridge 仍只接收固定控制动作与版本元数据。该凭据不复制到 Worker,RR 原有凭据继续保留。
  • WebDAV 读写能力不自动等于共享管理 API 权限。创建公开分享或调用管理 API 若仍需要更高权限,必须另行完成现场验证和安全批准;在此之前不创建 OAuth 客户端、不新增发布账号、不写入 GitHub Secret。
  • 在上述任一路径实际可用并完成非生产隔离验收前,不替换 RR 现网 SSH/SCP 传输链路。
  • 在非生产节点执行隔离验收:正确下载/校验、错误域名拒绝、错误摘要不执行、失败清理、成功后的健康和审计记录;通过后才允许替换 SSH/SCP 传输路径。
  • 以版本化摘要证据验证 RR 接收并部署 101/GitHub Actions 已发布产物;该项与 DETACH-02 的正式发布/回滚验收共用证据。
  • 在不破坏现网的条件下,核验 Docs、metrics、Nomad 与节点库存四类操作的健康、审计和回滚路径。