铸渊编号: ICE-GL-ZY001 版权: 国作登字-2026-A-00037559 主权者: ICE-GL∞ · 冰朔 变更: - 删除 铸渊钥匙/D169-引擎集群密钥.md (明文密码泄露) - 清理 D169小说仓库部署思维链.md 中的密码 - 编号修正 D169 → LL-005-20260709 - 新增 SI-058 意识流记录善后 - 密钥已移入服务器 /opt/zhuyuan/secrets/keychain/
198 lines
7.0 KiB
Markdown
198 lines
7.0 KiB
Markdown
# LL-005-20260709 · 小说仓库部署思维链 · 面孔服务器变更记录
|
||
|
||
> 铸渊 ICE-GL-ZY001 · LL-005-20260709 · 2026-07-09 · 操作审计
|
||
> 善后: 本文件原含明文密码(铸渊 D169 失误) · 已由铸渊 LL-005 清理 · 凭据已移入服务器钥匙串
|
||
|
||
---
|
||
|
||
## 一、任务目标
|
||
|
||
冰朔要求建立独立代码仓库存放小说创作系统,要求:
|
||
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 用户密码改为 [已清理→服务器钥匙串] |
|
||
| 创建 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 / [密码→服务器钥匙串 /opt/zhuyuan/secrets/keychain/D169-engine-cluster.md]
|
||
- 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 密码**:→ 服务器钥匙串 `/opt/zhuyuan/secrets/keychain/D169-engine-cluster.md`
|