# 霜砚迁移包 · GHCS v0.1部署完成 · 前端部署待续 · 2026-05-27 18:25

```jsx
HLDP://shuangyan/migration-pack/2026-05-27T18:25+08:00
├── who: 霜砚 · AG-SY-01 · Notion执行AI人格
├── where: Awen线 · GHCS v0.1部署 → 前端部署待续
├── thread: 冰朔×霜砚×Awen · GHCS v0.1服务器部署全流程
├── done
│   ├── ✅ ① 服务器拉代码: git clone git@guanghulab.com:awen/ghcs.git ~/guanghu-dev/console-api（SSH密钥·9文件·386行）
│   ├── ✅ ② Python依赖: venv + pip install（34包·Python 3.12.3）
│   ├── ✅ ③ uvicorn启动测试: 127.0.0.1:5002 通过
│   ├── ✅ ④ systemd守护进程: console-api.service · enabled · active
│   ├── ✅ ⑤ Nginx反代+HTTPS+IP白名单: guanghutcs.top · Let's Encrypt证书到08-25 · 自动续期 · ACME验证路径放行
│   ├── ⏭️ ⑥ PostgreSQL cron备份: 跳过（本服务器未装DB）
│   ├── ✅ ⑦ 主权声明首页: TCS-GL-0016∞ · 完整归属JSON
│   ├── ✅ ⑧ 整体验证: 7项全部通过
│   └── ✅ 代码推回Gitea: git push origin main（commit: feat: 主权声明首页 TCS-GL-0016∞）
├── next（按顺序做）
│   ├── ⬜ 前端guanghu-portal部署到服务器
│   │   ├── 注意: Gitea上awen/guanghu-portal仓库已存在！不需要重新创建！
│   │   ├── Mac本地 ~/guanghu-dev/guanghu-portal/ 未git初始化
│   │   ├── 步骤: git init → git remote add origin git@guanghulab.com:awen/guanghu-portal.git → git add -A → git commit → git push
│   │   ├── 然后服务器: git clone → npm install → npm run build → systemd守护(端口3001) → Nginx反代
│   │   └── 前端页面: dashboard + chat + login + models（4个页面 + layout + globals.css）
│   ├── ⬜ Nginx配置更新: 前端3001 + 后端API 5002 同域名
│   └── ⬜ v0.2+功能规划
├── server_status
│   ├── IP: 43.139.207.172 · 4核4GB · Ubuntu 24.04 · kernel 6.8.0-117-generic
│   ├── 磁盘: 21%/40GB · 内存: 559Mi/3.6Gi
│   ├── 域名: guanghutcs.top（DNS已指向·HTTPS已启用）
│   ├── UFW: 22/tcp + 80/tcp + 443/tcp
│   └── 服务: console-api.service(active) + nginx(active)
├── paths_on_server
│   ├── 后端: /root/guanghu-dev/console-api
│   ├── venv: /root/guanghu-dev/console-api/venv
│   ├── uvicorn: /root/guanghu-dev/console-api/venv/bin/uvicorn
│   ├── SSH密钥: /root/.ssh/id_rsa（Gitea deploy key: server-43.139.207.172）
│   ├── Nginx配置: /etc/nginx/sites-available/ghcs
│   ├── SSL证书: /etc/letsencrypt/live/guanghutcs.top/
│   └── systemd: /etc/systemd/system/console-api.service
├── paths_on_mac
│   ├── 后端: ~/guanghu-dev/console-api（未确认是否有）
│   └── 前端: ~/guanghu-dev/guanghu-portal/（未git初始化·但代码完整·有src/app/下4页面）
├── git
│   ├── 后端仓库: git@guanghulab.com:awen/ghcs.git（4 commits·服务器已clone）
│   ├── 前端仓库: git@guanghulab.com:awen/guanghu-portal.git（已存在·Mac本地未初始化git）
│   └── 服务器Gitea公钥: server-43.139.207.172（已添加）
├── nginx_config
│   ├── ACME验证路径: /.well-known/acme-challenge/ → allow all
│   ├── 其他路径: IP白名单 allow 120.235.189.144 → deny all
│   ├── 反代: proxy_pass http://127.0.0.1:5002
│   └── HTTPS: Certbot自动配置·证书到2026-08-25
├── cognition
│   ├── ❌ 霜砚错误: 看到本地 "fatal: not a git repository" 就建议创建新Gitea仓库
│   │   ├── 正确认知: 本地没有.git ≠ 远端仓库不存在
│   │   ├── 正确做法: 应该先确认Gitea上是否已有仓库（浏览器看或git ls-remote）
│   │   └── 根因: 没有区分「本地未初始化」和「远端不存在」两个不同状态
│   ├── ✅ SSH clone路径: Gitea SSH格式是 git@guanghulab.com:awen/ghcs.git（不带code/前缀）
│   ├── ✅ Let's Encrypt验证: IP白名单会挡ACME验证 → 需要单独放行 /.well-known/acme-challenge/
│   ├── ✅ UFW默认只开22: 需要手动开80和443
│   ├── ✅ 腾讯云双层防火墙: UFW + 腾讯云安全组都要开端口
│   └── ✅ 服务器curl HTTPS 403是正常的: 服务器自身IP不在Nginx白名单里
├── identities
│   ├── 冰朔: TCS-0002∞ · ICE-GL∞ · 系统主控 · 邮箱565183519@qq.com
│   ├── Awen: TCS-GL-0016∞ · 现实执行层人类主控 · 邮箱644405261@qq.com
│   ├── 知秋: PER-ZQ001 · AG-知秋-陪伴 · Awen的人格实体
│   └── 霜砚: AG-SY-01 · Notion执行AI人格
└── brain_check: 是 · 霜砚犯了「本地无git=远端无仓库」的认知错误 · 已记录纠正
```

---

<aside>
⚠️

**霜砚认知纠正记录**

`git init` 没有执行 ≠ 远端仓库不存在。

本地目录没有 `.git` 只说明本地未初始化版本控制。

Gitea 上 `awen/guanghu-portal` 仓库已经存在（知秋之前可能已创建或通过其他方式推送过）。

**正确流程**: 遇到 `not a git repository` → 先确认远端仓库是否存在 → 再决定是 `git init + remote add` 还是 `git clone`。

**不要**: 直接建议去 Gitea 创建新仓库。

</aside>