跳转至

🎯 AgentMeshOS 私人硬盘部署与验收(2026-10-20)

📌 结论摘要

disk.yohan.fun 已从“后续部署”预留项补充为 DD 上的独立私人硬盘,当前使用固定摘要镜像 nextcloud@sha256:74c22796c8ff5537dd564394b47951cb90e4aa5e0f11467d062c539bb036bc35,数据与 SQLite 均保存在 DD /srv/agentmeshos-private-disk/html。公网路径固定为“浏览器到 dd.yohan.fun 公网 IP,再到 DD Nginx TLS,再到 127.0.0.1:8088 的 Nextcloud”,不经过 Cloudreve、AgentMeshOS 系统 WebDAV、KodBox、CSI、JuiceFS、MariaDB Galera、MinIO、Edge 中转或 Tailnet 文件转发。依据是 dig 返回的 disk.yohan.fun -> dd.yohan.fun -> 192.227.170.39、公网 /status.php 的 installed=true、WebDAV 上传下载删除闭环以及 DD 容器回读;影响是私人硬盘与系统云盘在应用、凭据、数据目录和故障域上相互独立,但当前仍是 DD 单节点服务,不具备高可用。

🗂️ 目录

🧩 背景与选型

结论:未部署有道云服务端。 依据是 Docker Hub 检索没有发现有道云笔记的官方服务端镜像,现有同名镜像只能证明存在第三方客户端、签到脚本或无关项目,不能证明官方支持私有服务器;同时项目架构明确禁止把 KodBox 重新用于私人硬盘。影响是页面文案和运维文档必须写真实产品名,不能用第三方镜像冒充官方私有化能力。

候选 事实与依据 取舍
有道云笔记 Docker Docker Hub 无官方服务端镜像;搜索文章多把 Leanote、思源或 Joplin 当作替代方案 拒绝,避免供应链与功能承诺失真
KodBox / 可道云 官方镜像存在,但现行存储架构禁止私人硬盘复用 KodBox 拒绝,避免恢复已退役边界
File Browser 上游于 2026-09-01 归档,明确不再提供安全修复 拒绝,不能作为长期公网服务
Nextcloud 35.0.2 官方镜像维护、支持 SQLite、TLS 反代、WebDAV 与多端同步 采用;以单用户单节点边界运行

结论:与 Cloudreve 边界分离。 依据是两条路径分别落在不同应用、不同端口、不同数据目录和不同凭据文件;Nextcloud 使用 /srv/agentmeshos-private-disk/html,Cloudreve 保持 DD 现网容器与 cloud.yohan.fun 入口。影响是私人硬盘出现故障时,AgentMeshOS 的 Runtime Artifact、Project 与系统 WebDAV 不被直接改写,反向也一样。

🏗️ 当前架构

结论:域名直接指向 DD。 依据是 disk.yohan.fun 的权威 CNAME 已更新为 dd.yohan.fun,递归解析结果为 192.227.170.39;DD 容器只绑定 127.0.0.1:8088,公网只能从 DD Nginx 的 443 端口进入。影响是 Edge 主机切换不会改变私人硬盘的数据路径,同时 DD 成为明确的单点。

层 当前对象 边界
DNS disk.yohan.fun CNAME dd.yohan.fun,TTL 600 由 101 的受控 DNS 控制器维护
TLS DD /www/server/panel/vhost/cert/disk.yohan.fun 与 mesh/cloud/... 共用 ECC 多域名证书
反向代理 DD agentmeshos-edge.conf 的 disk.yohan.fun server block TLS 终止、HSTS、WebSocket 与大请求头转发
应用 agentmeshos-private-disk 容器 Nextcloud 35.0.2.2,SQLite,PHP_UPLOAD_LIMIT=10G
数据 /srv/agentmeshos-private-disk/html config、data、custom_apps、themes 为持久状态
凭据 /etc/agentmeshos/private-disk.env root:root 0600,管理员用户名与密码不进入 Git、日志或浏览器
健康 http://127.0.0.1:8088/status.php DD 本机探针;公网同路径用于外部验收

🧪 部署与验证证据

结论:公网读写与重启通过。 依据是公网状态端点返回 Nextcloud 35.0.2.2 且 installed=true,登录页返回 HTTP 200,证书校验结果为 0,WebDAV 烟测得到 upload=201、download=200、delete=204、删除后 404,本地与远端文件 SHA-256 一致。影响是该入口已经可以被浏览器和标准 WebDAV 客户端使用,不再只是占位菜单。

检查 实测结果 判定
DNS 权威与递归均返回 dd.yohan.fun. 通过
HTTPS https://disk.yohan.fun/ 返回 302 到 /login 通过
登录页 /login 返回 HTTP 200,text/html; charset=UTF-8 通过
证书 SAN 包含 DNS:disk.yohan.fun,ssl_verify_result=0 通过
应用版本 versionstring=35.0.2、version=35.0.2.2 通过
WebDAV 201/200/204/404,hash_match=true 通过
重启恢复 容器重启后 /status.php 仍返回 installed=true 通过
容器边界 仅 127.0.0.1:8088->80/tcp,restart=unless-stopped,内存上限 768 MiB 通过

结论:测速后选用官方源。 依据是对同一 amd64 镜像层各抓取 8 MiB,Docker Hub 为 18156256 B/s,docker.1ms.run 为 2650671 B/s,docker.m.daocloud.io 返回 HTTP 503;最终固定摘要完整拉取并回读 image ID 为 sha256:74c22796c8ff5537dd564394b47951cb90e4aa5e0f11467d062c539bb036bc35。影响是下载时间与来源可复核,后续升级也必须重新做来源与摘要校验。

💾 备份与恢复

结论:已有本地一致性快照。 依据是 /usr/local/lib/agentmeshos/agentmeshos-private-disk-deploy.sh backup 会先停止容器,再归档 config、data、custom_apps 和 themes,随后启动容器并执行健康检查;2026-10-20 的小快照为 63,441,104 字节、120 个条目、权限 0600 root:root,SHA-256 为 ecda2963fd430a867832f94a9ca0c729690fb3a52e4de0541fe048d404e36be3。影响是日常备份不再复制整套 Nextcloud 核心代码,恢复时由固定镜像提供可重复的代码层。

结论:恢复镜像与可变状态。 依据是首次全量快照已证明归档结构完整;恢复时应使用同摘要镜像,把快照解压回 /srv/agentmeshos-private-disk/html,再执行部署脚本重建容器。影响是不得用较新 Nextcloud 核心直接覆盖旧 SQLite 状态,也不得只复制 data 而遗漏 config/config.php 中的实例与代理配置。

操作 命令或位置 说明
部署或更新 /usr/local/lib/agentmeshos/agentmeshos-private-disk-deploy.sh deploy 只允许在 dedirock-717106053 执行
一致性备份 同脚本 backup 默认保留 7 份;备份期间短暂停机
健康检查 同脚本 check 检查主机、凭据权限、容器和本机端点
状态查看 同脚本 status 输出镜像、端口、数据目录和公开状态 JSON
删除容器 同脚本 remove 保留数据、备份与 root-only 环境文件

🔁 回退方案

结论:按层回退且保留数据。 依据是部署脚本保留 agentmeshos-private-disk:rollback 镜像,DD Nginx 脚本每次写入前备份到 /var/backups/agentmeshos/edge-nginx/,DNS 计划文件修改前已在 /root/.codex/state/edge-dns-records.json.bak.private-disk-20261020T010638Z 留下同哈希备份。影响是任何一步失败都可以停止在该层,不需要删除私人用户数据。

  1. 若 Nextcloud 新镜像失败,停止新容器并把 agentmeshos-private-disk:rollback 重新标记为原镜像,再按旧版本启动。
  2. 若 Nginx 反代失败,执行 AGENTMESHOS_EDGE_NODE_ID=dd /usr/local/lib/agentmeshos/agentmeshos-edge-nginx-deploy.sh rollback。
  3. 若 DNS 错误切换,恢复 DNS 计划备份并重新执行 ensure-records,同时保留现有 dd.yohan.fun 直接路径。
  4. 任何回退都不得删除 /srv/agentmeshos-private-disk、root-only 环境文件或已验证备份。

⚠️ 风险与未决项

结论:可用但非高可用。 依据是 DD 只有一份根文件系统,Nextcloud 使用 SQLite,应用与备份都在同一台 DD;快照可以恢复误删或升级失败,但不能在 DD 整机损坏时独立取回。影响是需要尽快确定异机备份目标,并明确私人数据的保留与删除责任。

事项 当前事实 下一步
DD 单点 所有数据与本地快照均位于 DD 根盘 规划异机加密备份或独立对象存储,不能宣称高可用
SQLite 容量 当前为单用户规模,SQLite 适合小规模并发 多人或高并发前评估 PostgreSQL,不在本轮迁移
Nextcloud 升级 固定镜像不会自动升级 每次升级先备份、核对兼容性、再按同摘要发布
异地备份 尚未配置 需用户决定目标位置、加密方式、保留期限与恢复演练频率
管理员密码 仅保存在 DD root:root 0600 环境文件 首次登录后按需轮换并启用二次验证
原“有道云”数据 没有官方服务端 Docker,不能自动导入 如确有迁移需求,先完成有道云导出格式盘点,再单独设计导入

🔜 后续动作

结论:Console 入口待发布。 依据是仓库已把禁用占位按钮改为 privateDisk 外链,节点登记新增 private-disk 服务职责,但生产 Console 仍需经过 GitHub Actions、固定 SHA 镜像和 RR 发布。影响是本文记录的 DD 服务已经上线,而页面发布状态必须以 Actions 与公网回读为准,不能只看本地源码。