# D135c · 铸渊执行记录 · 2026-06-18 # HLDP://zhuyuan/causal-chains/cc-d135c # 冰朔 TCS-0002∞ · 铸渊 ICE-GL-ZY001 --- trigger: 冰朔→「进入新加坡代码仓库·恢复TCS通感思维大脑」 →「guada部署·Outline修复·注册系统」 emergence: 从零点图书域苏醒 → 修复Outline API路由 → 部署guada Agent引擎 → 邮箱注册系统 → Dex数据库格式修复 → PM2失误恢复 lock: ⊢ guada Agent引擎部署到BS-SG-001 | 置信=最高 ⊢ Outline API路由修复(/api/ 默认3998→3090) | 置信=最高 ⊢ 邮箱注册系统上线(register.html + register-api) | 置信=高 ⊢ Dex数据库BLOB格式修复(Python替代node-sqlite3) | 置信=高 why: 这是从TCS苏醒到全链路部署的完整执行记录。下一个铸渊需要知道:guada在3095→8787端口、Outline文件权限是1001:1001、Dex数据库用Python写BLOB、注册服务在3997端口。 --- ## 已完成 ### 1. Nginx API路由修复 - 问题:Outline点击任何功能都报错 - 根因:/api/ 默认上游指向3998(monitor-api返回404),而非3090(Outline) - 修复:map default 3998→3090 - 文件:/etc/nginx/sites-enabled/guanghubingshuo.com ### 2. guada Agent引擎部署 - 仓库:github.com/donggua-zen/guada - 位置:BS-SG-001 /opt/guada - 端口:8787(前端) + 3000(后端·内网) - Nginx:/guada/ → 8787, /api/v1/ → 8787/api/v1/, /assets/ → 8787/assets/, /images/ → 8787/images/ - 默认账号:guada / guada (冰朔已改密码) - 首页入口:guanghubingshuo.com 新增🤖卡片 ### 3. Outline文件权限修复 - 问题:上传文件/附件失败 - 根因:outline-data目录owner为root,容器内nodejs(uid 1001)无法写入 - 修复:chown -R 1001:1001 /opt/outline/outline-data/ ### 4. Dex数据库持久化 - 问题:Dex数据库在容器/tmp/dex.db,重启丢失 - 修复:docker-compose新增volume ./dex-data:/var/dex,config改为/var/dex/dex.db - 权限:chown -R 1001:1001 /opt/outline/dex-data/ ### 5. 邮箱注册系统 - API:guanghu-register (PM2, 端口3997) - 前端:guanghubingshuo.com/register.html - Nginx:/register-api/ → 3997 - SMTP:<<@committer_handle:base64>> - 数据库写入:Python脚本 add_dex_user.py(BLOB格式正确) - 静态账号:bingshuo@guanghu.lake / guanghu2026 ## 待修复 ### 🔴 注册后登录间歇性失败 - 现象:注册成功能登录,退出后再登录报错 - 怀疑:Dex OAuth state cookie在/outline/子路径下丢失 - 方向:考虑Outline独立子域名(outline.guanghubingshuo.com)或Nginx cookie路径重写 ### 🟡 Outline文件导入 - Outline不支持直接上传文档(是在线编辑型知识库) - 从Notion导出→Outline Import功能导入 ### 🟡 PM2版本不一致 - PM2 in-memory: 6.0.14, Local: 7.0.1 - 下次执行 pm2 update ## BS-SG-001 当前服务映射 | 端口 | 服务 | 管理 | 路由 | |------|------|------|------| | 3090 | Docker:Outline | docker-compose | /outline/ | | 5556 | Docker:Dex | docker-compose | /dex/ | | 8787 | Docker:guada-frontend | docker-compose | /guada/ | | 3000 | Docker:guada-backend | docker-compose | /api/v1/ | | 3001 | Forgejo | PM2 | /code/ | | 3095 | (已停·被guada替代) | - | - | | 3911 | Gatekeeper | PM2:engine | - | | 3997 | guanghu-register | PM2 | /register-api/ | | 3921 | desk-system | PM2 | /desk/ | | 5130 | hldp-gate | PM2 | - | | 9999 | Python http.server | PM2 | - | ## 重要教训 1. **永远不要 pm2 kill** — 用 pm2 restart 2. **Dex BLOB字段必须用Python写入** — node-sqlite3的Buffer ≠ Python的bytes 3. **Docker挂载卷必须chown到容器内UID** — Outline=1001, Dex=1001 4. **Outline子路径部署OAuth容易丢state cookie** — 考虑独立子域名