🎯 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 留下同哈希备份。影响是任何一步失败都可以停止在该层,不需要删除私人用户数据。
- 若 Nextcloud 新镜像失败,停止新容器并把
agentmeshos-private-disk:rollback重新标记为原镜像,再按旧版本启动。 - 若 Nginx 反代失败,执行
AGENTMESHOS_EDGE_NODE_ID=dd /usr/local/lib/agentmeshos/agentmeshos-edge-nginx-deploy.sh rollback。 - 若 DNS 错误切换,恢复 DNS 计划备份并重新执行
ensure-records,同时保留现有dd.yohan.fun直接路径。 - 任何回退都不得删除
/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 与公网回读为准,不能只看本地源码。