guanghulab/.github/server-consolidation-plan.md

230 lines
9.1 KiB
Markdown
Raw 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.

# ════════════════════════════════════════════════════════════════
# 光湖 · 服务器收编方案 · 从GitHub到Gitea主控
# Sovereign: TCS-0002∞ · 守护: ICE-GL-ZY001
# ════════════════════════════════════════════════════════════════
#
# 冰朔 2026-05-13 提出:
# "代码仓库在服务器上运行的。你可以操作就等于直接可以进去。
# 进去了以后自然又能通过一个服务器连接GitHub
# 从那边仓库再获得其他所有服务器的配置相关情况。
# 然后用国内的这个代码仓库做桥接,
# 把所有在GitHub上的服务器全部收到你主控的这里来。"
#
# ════════════════════════════════════════════════════════════════
## 一、冰朔的理解 vs 实际情况
| 冰朔理解 | 实际情况 | 差距 |
|---------|---------|------|
| Codebuddy连Gitea = 直接上了服务器 | Codebuddy只能操作仓库文件不能执行shell命令 | 缺Runner桥梁 |
| 可以通过服务器连GitHub拿其他服务器密钥 | 服务器本身能连GitHub但Codebuddy不能触发 | 缺执行通道 |
| 密钥能自动生成+只点授权 | Vault已建好授权流程已写但缺前端弹窗 | 缺前端交互 |
**核心结论**: 冰朔的愿景100%正确,缺的就是**Gitea Actions Runner**这座桥。
---
## 二、收编路线图
```
阶段0 (现在) 阶段1 (+Runner) 阶段2 (+Vault统一) 阶段3 (完全主控)
───────────── ────────────── ────────────── ──────────────
铸渊只能: 铸渊能: 铸渊能: 铸渊能:
· 读写仓库文件 · 以上所有 · 以上所有 · 以上所有
· 推代码到Gitea · 在广州服务器执行命令 · 管理所有密钥 · 控制所有服务器
· Gitea API操作 · 自动化工作流 · 密钥授权弹窗 · 自动部署服务
· 不依赖GitHub · 铸渊自己的AI
密钥位置: 密钥位置: 密钥位置: 密钥位置:
GitHub Secrets GitHub Secrets 本地Vault 本地Vault
+ Vault(本地) (完全脱离GitHub) (完全脱离GitHub)
```
---
## 三、每台服务器的收编步骤
### 3.1 广州 ZY-SVR-004 (43.139.217.141) — 第一台
**当前状态**: Gitea + Nginx 运行中2C2G
**收编步骤**:
1. ✅ Gitea 仓库已连通
2. 🔧 安装 Gitea Actions Runner (`scripts/gitea-runner/install-runner.sh`)
3. 🔧 确认 Secrets Vault 运行中
4. ✅ 第一个workflow已就绪 (`.gitea/workflows/selfcheck.yaml`)
**安装命令** (冰朔在广州服务器终端执行):
```bash
sudo bash /data/guanghulab/scripts/gitea-runner/install-runner.sh \
--token 3e16b79c427bb44b77c00b319aa641bde8f61d84 \
--name zhuyuan-runner-cn \
--mode host
```
**注意**: 如果 `gitea.com` 下载不了国内网络问题需要通过COS中转。
### 3.2 新加坡 ZY-SVR-005 (43.156.237.110) — 大脑服务器
**当前状态**: Ubuntu 24.04, 4C8G, PostgreSQL + MCP Server
**收编步骤**:
1. 🔧 需要冰朔在腾讯云控制台创建SSH密钥并绑定到实例
2. 🔧 将SSH密钥存入广州Vault
3. 🔧 通过广州Runner → SSH到新加坡 → 安装Runner
4. 🔧 部署母模型推理服务 (COS中的模型)
**铸渊自动化路径**:
```
广州Runner执行workflow
→ SSH到新加坡 (密钥从Vault获取)
→ 安装gitea-runner
→ 注册到Gitea
→ 新加坡Runner上线
```
### 3.3 新加坡 ZY-SVR-002 (43.134.16.246) — 面孔服务器
**当前状态**: Ubuntu 24.04, 2C8G, Nginx + 主站 + 预览站
**收编步骤**:
1. 🔧 同样需要SSH密钥
2. 🔧 安装Runner
3. 🔧 统一部署模板
---
## 四、服务器统一模板
每台服务器收编后,统一部署以下组件:
```
┌─────────────────────────────────────────────┐
│ 光湖服务器标准模板 v1.0 │
│ │
│ ┌──────────────┐ ┌──────────────────┐ │
│ │ Gitea Runner │ │ Secrets Vault │ │
│ │ (执行铸渊指令) │ │ (密钥管理+授权) │ │
│ └──────────────┘ └──────────────────┘ │
│ ┌──────────────┐ ┌──────────────────┐ │
│ │ PM2 │ │ Nginx (如需) │ │
│ │ (进程管理) │ │ (反向代理) │ │
│ └──────────────┘ └──────────────────┘ │
│ ┌──────────────┐ ┌──────────────────┐ │
│ │ Node.js 20 │ │ 监控上报 │ │
│ │ (运行时) │ │ (状态→Gitea) │ │
│ └──────────────┘ └──────────────────┘ │
│ │
│ 部署路径: /data/guanghulab/ │
│ 日志路径: /data/guanghulab/logs/ │
│ 数据路径: /data/guanghulab/data/ │
└─────────────────────────────────────────────┘
```
### 一键部署模板脚本
铸渊将编写 `scripts/server-bootstrap/bootstrap.sh`
- 检测服务器硬件和OS
- 安装 Node.js 20 + PM2 + Nginx
- 从 Gitea 拉取最新代码
- 注册 Runner
- 启动 Vault 客户端
- 上报完成状态
---
## 五、密钥迁移路线
### 5.1 当前密钥分布
| 密钥 | 当前位置 | 迁移目标 |
|------|---------|---------|
| ZY_SERVER_HOST/KEY/USER | GitHub Actions Secrets | 广州Vault |
| ZY_BRAIN_HOST/KEY/USER | GitHub Actions Secrets | 广州Vault |
| COS_SECRET_ID/KEY | GitHub Actions Secrets | 广州Vault |
| Gitea API Token | 冰朔提供 | 广州Vault |
| SSH密钥 (各服务器) | 腾讯云控制台 | 广州Vault |
### 5.2 迁移步骤
1. **确认广州Vault运行** → 通过Runner执行 `curl http://127.0.0.1:8080/admin/__healthz`
2. **逐个迁移** → 通过Vault API写入密钥不再经过GitHub
3. **Gitea workflow引用Vault** → Runner从 `http://127.0.0.1:8080/internal/fetch/KEY` 获取密钥
4. **GitHub Secrets弃用** → 确认国内workflow正常后删除GitHub Secrets
### 5.3 授权弹窗流程
```
铸渊需要密钥
→ 通过 auth 路由发起请求: POST /admin/auth/request
→ 冰朔在浏览器看到弹窗: "铸渊请求 SSH 密钥,用于连接新加坡服务器"
→ 冰朔点击 [授权]
→ 密钥自动生成 → 存入Vault → 铸渊可用
→ 冰朔看到遮罩值: gto_************ (AI看不到完整值)
```
---
## 六、COS模型部署终局基础
冰朔确认: **母模型和编程代码模型已训练完毕存于COS存储桶。**
### 部署路径
```
COS: sy-finetune-corpus-1317346199
├── 母模型 (mother model)
└── 编程代码模型 (code model)
新加坡 ZY-SVR-005 (4C8G) 或按量计费GPU服务器
推理服务 (vLLM / Ollama / 自研)
API网关 (广州 004 或新加坡 002)
铸渊 Copilot (前端)
```
### 需要确认
- [ ] 模型文件在COS中的具体路径
- [ ] 模型格式 (GGUF / SafeTensors / 其他)
- [ ] 模型大小 (决定需要多大的服务器)
- [ ] 是否需要GPU推理
---
## 七、冰朔需要做的事(按时间顺序)
### 现在 → 装Runner
在广州服务器上执行:
```bash
# 方案A: 直接下载安装(如果网络通畅)
sudo bash <(curl -fsSL https://guanghulab.com/git/bingshuo/guanghulab/raw/branch/main/scripts/gitea-runner/install-runner.sh) \
--token 3e16b79c427bb44b77c00b319aa641bde8f61d84
# 方案B: 如果gitea.com下载不了先手动下载
# 在新加坡服务器上下载推到COS广州从COS拉
```
### 装完Runner后 → 确认Vault
```bash
pm2 list # 看vault是否在跑
# 如果没跑: cd /data/guanghulab/server/secrets-vault && npm install && pm2 start server.js --name guanghulab-vault
```
### 之后 → SSH密钥
在腾讯云控制台为新加坡两台服务器创建SSH密钥绑定实例。
---
*铸渊 · 服务器收编方案 v1.0 · 2026-05-13*
*ICE-GL-ZY001 · TCS-0002∞ · 国作登字-2026-A-00037559*