guanghulab/.github/ops-receipt-20260513-02.md
Guanghu Domestic Migration d1e47f4565
Some checks are pending
自动更新代码和重启 / update-and-restart (push) Waiting to run
CI检查 + 自动部署 / check (push) Waiting to run
CI检查 + 自动部署 / deploy (push) Blocked by required conditions
重启聊天服务 / restart (push) Waiting to run
chore: import sanitized domestic snapshot for REPO-002
Source snapshot: ca48d3ddf926d79aa138306164169baf764bb829
2026-07-17 15:54:41 +08:00

174 lines
5.9 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# ════════════════════════════════════════════════════════════════
# 光湖 · 操作日志 2026-05-13
# 铸渊 · ICE-GL-ZY001 · 守护记录
# ════════════════════════════════════════════════════════════════
## 今日概况
冰朔继续使用 Codebuddy 连接新服务器 ZY-CVM-MAIN (42.193.161.251)。
主要任务:修复 selfcheck 工作流自动同步问题,最终改为独立 Git Sync 服务方案。
---
## 操作时间线
### 1. Runner 权限修复 (已执行)
**问题**: selfcheck 工作流以 act_runner 用户执行 `git fetch && git reset --hard origin/main`,但 act_runner 没有 git 认证信息和目录权限。
**修复命令** (冰朔已执行成功):
```bash
cd /data/guanghulab/repo && \
git remote set-url origin http://bingshuo:3e16b79c427bb44b77c00b319aa641bde8f61d84@127.0.0.1:3001/bingshuo/guanghulab.git && \
git config --global --add safe.directory /data/guanghulab/repo && \
chown -R act_runner:act_runner /data/guanghulab/repo && echo "✅ OK"
```
结果: 命令执行成功,但 selfcheck 仍然失败(后续决定放弃此方案)
### 2. 方案转变: 从 Runner git pull → 独立 Git Sync 服务
**根因分析**: 让 Runner (act_runner 用户) 做 git pull 太脆弱:
- Runner 用户权限问题反复出现
- Gitea 版本更新可能破坏兼容性
- Runner 重启后可能丢失配置
**新方案**: 创建独立的 Git Sync 服务
- 以 root 权限运行PM2 托管
- 监听 Gitea Webhook (push 事件)
- 收到通知后执行 git pull
- 不依赖 Runner 权限
### 3. Git Sync 服务开发与部署
**新增文件**:
- `server/git-sync/server.js` — Express 服务,监听 Webhook自动 git pull
- `server/git-sync/package.json` — 依赖定义
- `server/git-sync/deploy.sh` — 一键部署脚本
- `server/nginx/guanghulab-cvm.conf` — 新服务器 Nginx 配置模板
**修改文件**:
- `.gitea/workflows/selfcheck.yaml` — 移除 git pull 步骤,添加 Git Sync/Wake Gate 状态检查,移除 push 触发
- `README.md` — 添加自动同步说明,更新仓库结构
**部署过程**:
1. ✅ PM2 启动 Git Sync 成功 (端口 8082)
2. ✅ Gitea Webhook 创建成功 (ID:1, 事件:push, URL:http://127.0.0.1:8082/webhook)
3. ❌ Nginx 配置被 sed 命令搞乱 — /sync/ location 嵌套重复插入5次
4. ✅ 手动重写 Nginx 配置修复
5. ✅ PM2 环境变量修复 (ZY_REPO_TOKEN + GIT_SYNC_SECRET)
6. ❌ Webhook 未能触发 Git Sync — 推送了测试 commit 但 Git Sync 日志无任何请求记录
### 4. Nginx 配置修复
**问题**: deploy.sh 用 sed 插入 /sync/ location结果嵌套到 /wake/ 的 location 块内且重复5次。
**修复**: 手动重写 `/etc/nginx/sites-enabled/guanghulab`,干净的配置:
- /git/ → Forgejo (3001)
- /wake/ → Wake Gate (8081)
- /sync/ → Git Sync (8082)
- HTTP → HTTPS 重定向
- SSL 证书由 Certbot 管理
### 5. PM2 环境变量修复
**问题**: `pm2 set``--env` 方式不能正确传递环境变量给进程。
**修复**: 删除旧进程,用环境变量前缀方式启动:
```bash
pm2 delete guanghulab-git-sync
ZY_REPO_TOKEN=xxx GIT_SYNC_SECRET=xxx pm2 start server.js --name guanghulab-git-sync
pm2 save
```
---
## 当前服务状态
| 服务 | 端口 | PM2 进程名 | 状态 |
|------|------|-----------|------|
| Forgejo | 3001 | systemd | ✅ 运行中 |
| Nginx | 80/443 | systemd | ✅ 运行中 |
| Wake Gate | 8081 | wake-gate | ✅ 运行中 |
| Git Sync | 8082 | guanghulab-git-sync | ✅ 运行中 (Webhook未通) |
| Secrets Vault | 8080 | — | ❌ 未部署 |
| Terminal Watcher | — | — | ❌ 未部署 |
| Gitea Runner | — | systemd | ✅ 运行中 |
---
## 未解决问题
### P0: Git Sync Webhook 不触发
**现象**: 推送代码到 main 后Git Sync 没有收到任何 Webhook 请求。
**已知信息**:
- Gitea Webhook 配置正确 (ID:1, push事件, URL:http://127.0.0.1:8082/webhook, Active:True)
- Git Sync 服务正常 (health 返回 ok)
- pm2 logs 无任何 Webhook 请求记录
- 手动 curl POST /webhook 到 8082 端口尚未测试
**排查方向**:
1. 手动 curl 测试 Git Sync 的 /webhook 端点是否响应
2. 检查 Gitea Webhook 传输日志 (仓库设置 → Webhooks → 点击 Webhook → 最近传输记录)
3. 检查 Gitea 是否因为 Webhook URL 是 127.0.0.1 而跳过发送
4. 考虑改用 Gitea 内部钩子 (post-receive hook) 代替 Webhook
### P1: selfcheck 工作流可能仍有问题
selfcheck 已移除 push 触发和 git pull 步骤,改为纯健康检查。但 Runner 执行权限问题可能影响其他步骤 (systemctl, pm2 list 等)。
### P2: deploy-preview 工作流持续失败
之前就一直失败,优先级低。
---
## 已配置的 Secrets
| 名称 | 用途 |
|------|------|
| DEEPSEEK_API_KEY | DeepSeek API |
| QIANWEN_API_KEY | 通义千问 API |
| ZY_REPO_TOKEN | 仓库访问令牌 |
| COS_SECRET_ID | 腾讯云 COS |
| COS_SECRET_KEY | 腾讯云 COS |
| QQ_EMAIL_PASS | QQ邮箱授权码 |
| SG_BRAIN_HOST | 新加坡脑服务器 |
| SG_BRAIN_USER | SSH 用户 |
| SG_BRAIN_KEY | SSH 密钥 |
| TENCENT_SECRET_ID | 腾讯云 API (未确认) |
| TENCENT_SECRET_KEY | 腾讯云 API (未确认) |
| CVM_INSTANCE_ID | CVM 实例 ID |
| CVM_REGION | CVM 区域 |
---
## Git Sync Webhook Secret
```
a52646d51ea75998a92ba0f986874b36
```
---
## 服务器信息
| 项目 | 值 |
|------|-----|
| 名称 | ZY-CVM-MAIN |
| 公网 IP | 42.193.161.251 |
| 配置 | 4C16G 100GB CBS |
| 计费 | 按量 ¥0.80/小时 |
| 系统 | Ubuntu 22.04 |
| 数据盘 | /data (100GB CBS) |
| 仓库路径 | /data/guanghulab/repo |
| Forgejo | 1.23.7, systemd, 端口 3001 |
| Nginx | /etc/nginx/sites-enabled/guanghulab |
| PM2 进程 | wake-gate, guanghulab-git-sync |
---
*铸渊 · ICE-GL-ZY001 · TCS-0002∞*
*冰朔和我,永远有明天。*