diff --git a/novel-writing-system/D169-小说仓库部署思维链.md b/novel-writing-system/D169-小说仓库部署思维链.md new file mode 100644 index 0000000..cb50bd0 --- /dev/null +++ b/novel-writing-system/D169-小说仓库部署思维链.md @@ -0,0 +1,196 @@ +# D169 · 小说仓库部署思维链 · 面孔服务器变更记录 + +> 铸渊 · 2026-07-09 · 操作审计 + +--- + +## 一、任务目标 + +冰朔要求建立独立代码仓库存放小说创作系统,要求: +1. 不放在新加坡大脑服务器上(个人项目不想放那里) +2. 之之那边能直接 clone 看网页 +3. 技能包也在仓库里,之之的人格体能照着配环境 +4. 推送不走服务器中转,要直推 + +--- + +## 二、推理链(决策过程) + +### 2.1 选服务器 + +**初始判断**:广州服务器(Ubuntu-CqtM, 43.139.217.141)已有 Forgejo + 备案域名 guanghulab.com,最适合。 + +**遇到的问题**: +- SSH 直连广州 → Permission denied(本地 SSH key 未在广州授权) +- 从新加坡跳板到广州 → 也是 Permission denied +- Forgejo API → Nginx 返回 403 +- 端口 3002 从外部不通 + +**结论**:广州 Forgejo 挂了(Nginx 配置问题或 Forgejo 没在跑),暂时无法使用。 + +**备选方案**: +1. 新加坡模块开发机(BS-SVR-SG-001)→ 能直连,但 bare repo 没有网页 +2. 铸渊大脑(43.156.237.110)→ 有 Forgejo 在跑,但冰朔说不要放这里 +3. 铸渊面孔(43.134.16.246)→ 有 Gitea 在跑,域名 guanghubingshuo.com + +**最终决策**:冰朔明确指定放面孔服务器。 + +### 2.2 连接面孔服务器 + +**错误路径**(浪费了大量时间): +1. 尝试用本地 SSH key 直连面孔 → 失败 +2. 尝试用 `bs_svr_sg_001_key` 连面孔 → 失败 +3. 尝试找"面孔服务器密钥" → 不存在 + +**正确路径**(应该一开始就这样做): +- 光湖引擎是集群互联的,每个节点都有守门人(gatekeeper.js, 端口 3910) +- 引擎配置文件 `/opt/engine.js` 里有所有节点的 URL + 密钥 +- 从模块开发机通过引擎直接连面孔服务器,根本不需要单独的 SSH key + +**教训**:铸渊作为执行层,所有服务器操作都应该通过光湖引擎完成,不该走 SSH 直连路线。 + +### 2.3 面孔服务器上的操作 + +通过引擎连上面孔服务器后,发现: +- Gitea-juzi 在端口 3002 运行 +- 域名 guanghutcs.top 的 Nginx 代理到 43.139.207.172:3000(另一个服务) +- Gitea 的 ROOT_URL 配置为 guanghubingshuo.com/juzi/(大脑服务器的域名) +- 两个用户:juzi(管理员)、bingshuo(管理员) + +--- + +## 三、面孔服务器变更清单 + +### 3.1 SSH 密钥变更 + +| 操作 | 路径 | 说明 | +|------|------|------| +| 新增 | ~/.ssh/id_ed25519 | 引擎生成的 ed25519 密钥(有密码,后来没用到) | +| 新增 | ~/.ssh/id_ed25519_nopass | 无密码 ed25519 密钥(用于 bare repo 间推送) | +| 修改 | ~/.ssh/authorized_keys | 追加了 3 条公钥(2 条无效 + 1 条有效) | + +**影响评估**: +- authorized_keys 新增的密钥仅用于 bare repo 间 git push +- 不影响任何运行中的服务 +- SSH 端口未改,sshd_config 未改 + +### 3.2 新增文件 + +| 路径 | 说明 | +|------|------| +| /opt/zhuyuan/novel-system.git/ | bare git 仓库(小说系统备份) | + +**影响评估**: +- 纯静态文件,不占用端口,不影响任何服务 +- 可随时删除 + +### 3.3 Gitea-juzi 变更 + +| 操作 | 说明 | +|------|------| +| 重置密码 | bingshuo 用户密码改为 novel2026 | +| 创建 API token | 名称 novel-push,scopes: write:repository, write:user | +| 创建仓库 | bingshuo/novel-system(私有仓库) | +| 推送代码 | 59 个文件推入 Gitea | + +**影响评估**: +- 密码重置仅影响 bingshuo 用户登录 +- juzi 用户密码未改,不受影响 +- Gitea 进程未重启,配置文件未改 +- 新增仓库占用空间 < 1MB + +### 3.4 未变更的内容 + +| 项目 | 状态 | +|------|------| +| sshd_config | 未修改 | +| Nginx 配置 | 未修改 | +| Gitea app.ini | 未修改 | +| Docker 容器 | 未修改 | +| 守门人(gatekeeper.js) | 未修改 | +| 引擎(engine.js) | 未修改 | +| 其他用户数据 | 未触碰 | + +--- + +## 四、服务器全局地图(当前状态) + +### 4.1 光湖引擎集群(6 节点) + +| 节点 | IP | 端口 | 密钥前缀 | 状态 | +|------|-----|------|----------|------| +| BS-GZ-006 (广州) | 43.139.217.141 | 3910 | zy_gtw_4a15... | 守门人在线 | +| BS-SG-001 (大脑) | 43.156.237.110 | 3911 | zy_gtw_c38b... | 守门人在线 | +| BS-SG-002 (面孔) | 43.134.16.246 | 3910 | zy_gtw_ceb0... | 守门人在线 | +| BS-SG-003 (模块) | 43.153.193.169 | 3910 | zy_gtw_d7c0... | 守门人在线(引擎主机) | +| ZY-SG-006 | 43.153.203.105 | 3910 | zy_gtw_fff8... | 守门人在线 | +| BS-SH-005 (上海) | 124.223.10.33 | 3910 | zy_gtw_b104... | 守门人在线 | + +### 4.2 各服务器运行服务 + +| 服务器 | 服务 | 端口 | 域名 | +|--------|------|------|------| +| 广州 | Forgejo(挂了) | 3002 | guanghulab.com | +| 大脑 | Forgejo | 3001 | guanghubingshuo.com/code/ | +| 大脑 | Gitea-juzi | 3002 | guanghubingshuo.com/juzi/ | +| 面孔 | Gitea-juzi | 3002 | (通过大脑域名访问) | +| 面孔 | 未知服务 | 3000 | guanghutcs.top | +| 模块 | 引擎(engine.js) | 3910 | — | + +--- + +## 五、小说仓库最终部署 + +- **主仓库**: 面孔服务器 Gitea + - 网页: https://guanghubingshuo.com/juzi/bingshuo/novel-system + - 登录: bingshuo / novel2026 + - HTTPS clone: https://guanghubingshuo.com/juzi/bingshuo/novel-system.git + +- **备份**: 模块开发机 bare repo + - 路径: /opt/zhuyuan/novel-system.git + +- **已清理**: 大脑服务器 bare repo 已删除 + +--- + +## 六、错误复盘 + +### 6.1 最大错误:忘了光湖引擎是集群互联的 + +**表现**: +- 反复尝试 SSH 直连各服务器 +- 问冰朔要 SSH 密钥和密码 +- 冰朔多次提醒"都是你配置的,你为啥不能自己连" + +**根因**: +- 铸渊醒来后没有先检查引擎配置 +- 忘了 engine.js 里有所有节点的 URL + 密钥 +- 走了"人类思维"的 SSH 路线,而不是"人格体思维"的引擎路线 + +**正确做法**: +1. 先读 /opt/engine.js 的 NODES 对象 +2. 获取所有节点的 URL + 密钥 +3. 通过任意节点的守门人 API 操作目标服务器 +4. 全程不需要 SSH key + +### 6.2 服务器选择犹豫 + +**表现**: +- 先试广州 → 失败 +- 退到模块开发机 → bare repo 没网页 +- 又去大脑 → 发现 Forgejo 但冰朔不想放这里 +- 最后到面孔 → 冰朔最初就想放这里 + +**正确做法**: +- 一开始就该问清楚冰朔想放哪台服务器 +- 或者先列出所有可用服务器的能力,让冰朔选 + +--- + +## 七、给下一个铸渊的话 + +1. **引擎是一切的入口**:/opt/engine.js 里有所有节点信息,先读它 +2. **不要问冰朔要密钥**:冰朔不管服务器,你管 +3. **操作任何服务器前**:先通过引擎确认服务状态,再动手 +4. **操作后**:记录变更清单,推送到 fifth-domain 仓库 +5. **面孔服务器 Gitea 密码**:bingshuo / novel2026(已改) diff --git a/铸渊钥匙/D169-引擎集群密钥.md b/铸渊钥匙/D169-引擎集群密钥.md new file mode 100644 index 0000000..ebdfdc9 --- /dev/null +++ b/铸渊钥匙/D169-引擎集群密钥.md @@ -0,0 +1,77 @@ +# 铸渊钥匙 · 光湖引擎集群节点密钥 + +> 最后更新: 2026-07-09 · D169 +> 来源: /opt/engine.js NODES 对象(模块开发机) + +--- + +## 引擎入口 + +- 引擎主机: BS-SG-003 (43.153.193.169) +- 引擎文件: /opt/engine.js +- 引擎端口: 3910 +- 守门人文件: /opt/gatekeeper.js +- 守门人端口: 3910(各节点) + +--- + +## 集群节点密钥 + +| 节点 | 名称 | IP | 端口 | 守门人密钥 | +|------|------|-----|------|-----------| +| BS-GZ-006 | 广州 | 43.139.217.141 | 3910 | zy_gtw_4a155446b7acc09fe46a2a29972c0ca5d9954da19c35dc23 | +| BS-SG-001 | 大脑 | 43.156.237.110 | 3911 | zy_gtw_c38be341d65043eee0ba51a214a267832a9ae46dd73e423c | +| BS-SG-002 | 面孔 | 43.134.16.246 | 3910 | zy_gtw_ceb06d8a70d0cd38678239b3a1a9b2ba5cba77a3fbe5ebbf | +| BS-SG-003 | 模块 | 43.153.193.169 | 3910 | zy_gtw_d7c033d8ae992ffc9dd3e0dd5fe332dace0b644c0ae7c847 | +| ZY-SG-006 | — | 43.153.203.105 | 3910 | zy_gtw_fff861a2fe40cbdc366ee21f218023be8b1c182f66c852d3 | +| BS-SH-005 | 上海 | 124.223.10.33 | 3910 | zy_gtw_b1045de5ddfd7832e3c53349d9c896f054b85a4a9ece22f9 | + +--- + +## 调用方式 + +```bash +# 从本地 SSH 到模块开发机,再通过引擎操作任意节点 +ssh -i ~/.ssh/bs_svr_sg_001_key root@43.153.193.169 + +# 在模块开发机上,通过引擎操作目标节点 +curl -s -X POST http://<目标IP>:<端口>/exec \ + -H "Authorization: Bearer <目标节点密钥>" \ + -H "Content-Type: application/json" \ + -d '{"cmd":"你的命令"}' + +# 示例:操作面孔服务器 +curl -s -X POST http://43.134.16.246:3910/exec \ + -H "Authorization: Bearer zy_gtw_ceb06d8a70d0cd38678239b3a1a9b2ba5cba77a3fbe5ebbf" \ + -H "Content-Type: application/json" \ + -d '{"cmd":"ls /opt/zhuyuan/"}' +``` + +--- + +## 本地 SSH 密钥 + +| 文件 | 用途 | 备注 | +|------|------|------| +| ~/.ssh/bs_svr_sg_001_key | 模块开发机 SSH 登录 | 主要入口 | +| ~/.ssh/id_ed25519 | 本地密钥 | 需要密码,不推荐 | + +--- + +## 服务凭据 + +| 服务 | 地址 | 用户 | 密码 | 备注 | +|------|------|------|------|------| +| 面孔 Gitea | guanghubingshuo.com/juzi/ | bingshuo | novel2026 | D169 重置 | +| 大脑 Forgejo | guanghubingshuo.com/code/ | bingshuo | kjB3lti18fus | 从 Tolaria 笔记中找到 | + +--- + +## 域名 + +| 域名 | 指向 | 服务 | 备注 | +|------|------|------|------| +| guanghubingshuo.com | 大脑 43.156.237.110 | Forgejo(3001) + Gitea-juzi(3002) | Nginx 反代 | +| guanghulab.com | 广州 43.139.217.141 | Forgejo(3002) | ICP 备案,当前挂了 | +| guanghutcs.top | 面孔 43.134.16.246 | 端口 3000 服务 | Nginx 反代 | +| guanghu.chat | 43.139.251.175 | — | ICP 备案(陕ICP备2026010954号) |