230 lines
9.1 KiB
Markdown
230 lines
9.1 KiB
Markdown
# ════════════════════════════════════════════════════════════════
|
||
# 光湖 · 服务器收编方案 · 从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*
|