docs(ops): 统一 md.tkmind.cn 域名与 105→103 反代拓扑

将管理后台公网域名从 gadm 更正为 md.tkmind.cn,补充 105 nginx 反代 103 的部署说明,
默认 VITE_BASE_PATH=/ 以支持 /analytics/seo-geo 根路径访问。

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
john
2026-08-10 17:38:31 +08:00
parent 6a7d6cec70
commit 0da7f04878
13 changed files with 98 additions and 73 deletions
+29 -11
View File
@@ -11,12 +11,29 @@
| 项 | 默认值 |
|---|---|
| **公网域名** | `https://md.tkmind.cn`DNS → **105** `120.26.184.105` |
| **应用进程** | 跑在 **103** Studio`5174` preview + `8085` Admin API |
| **105 角色** | HTTPS 终止 + nginx 反代到 103**不在 105 跑 memind_adm** |
| 部署目标 | `john@10.10.0.2:/Users/john/Project/memind_adm`fallback `john@58.38.22.103` |
| 服务端口 | `5174` |
| 运行方式 | `vite preview`(静态资源 + API 反代) |
| 后端 API | 本仓库 `server/``ADM_API_PORT` 默认 `8085`,与 Memind portal 解耦) |
| 日志 | `/Users/john/Project/memind_adm/adm-preview.log` |
### 公网访问路径(105 → 103
```text
浏览器 https://md.tkmind.cn
→ 105 nginx/etc/nginx/conf.d/md.tkmind.cn.conf
→ 103:5174 /、静态与 SPA
→ 103:8085 /auth、/admin-api、/api
gadm.tkmind.cn → 301 到 md.tkmind.cn105 nginx
```
105 活动 upstream 当前为 `58.38.22.103`103 公网 IP);内网 `10.10.0.2` 可达时可改用 LAN 地址。
nginx 示例:`scripts/md-nginx-105.conf`(与 105 线上一致)。
## 硬规则
`memind_adm` 允许项目独立,**不允许用户体系、权限体系、技能体系、策略体系独立**。
@@ -57,19 +74,20 @@
`MEMIND_LIB_ROOT=/Users/john/Project/Memind`
`H5_USERS_ROOT=/Users/john/Project/Memind/users`
## gadm 独立登录
## md.tkmind.cn 独立登录
`https://gadm.tkmind.cn` 应部署 **本仓库 memind_adm**,勿再反代到 `Memind/ops` Vite dev(旧版未登录会跳 `localhost:5173`)。
`https://md.tkmind.cn` 应部署 **本仓库 memind_adm**,勿再反代到 `Memind/ops` Vite dev(旧版未登录会跳 `localhost:5173`)。
| 项 | 说明 |
|---|---|
| 登录 | 本页 `/auth/login`,账号来自共用 MySQL |
| 会话 | 设置 `H5_PUBLIC_BASE_URL=https://gadm.tkmind.cn`**不要**设 `H5_COOKIE_DOMAIN=.tkmind.cn` |
| 路径 | `https://gadm.tkmind.cn/` 直达超管后台;Plaza 运营在 `/ops``/ops/admin` 已废弃 |
| 会话 | 设置 `H5_PUBLIC_BASE_URL=https://md.tkmind.cn`**不要**设 `H5_COOKIE_DOMAIN=.tkmind.cn` |
| 路径 | 公网 `https://md.tkmind.cn/` 直达超管后台;Analytics / SEO·GEO 在 `/analytics`、`/analytics/seo-geo`Plaza 运营仍在 `/ops` |
| API | `ADM_DEV_BACKEND=http://127.0.0.1:8085`preview 反代目标) |
| 初始化 admin | `npm run admin:init` 只更新 `Memind` 主用户表中的 admin 密码,不创建独立后台账号 |
nginx 示例见 `scripts/gadm-nginx.conf.example``/ops/` → preview`/auth` `/admin-api` `/api` → Admin API `8085`)。
nginx 示例见 `scripts/md-nginx.conf.example``/` → preview`/auth` `/admin-api` `/api` → Admin API `8085`)。
105 公网入口见 `scripts/md-nginx-105.conf`。
## 当前规则
@@ -187,8 +205,8 @@ ssh john@10.10.0.2 'tail -f /Users/john/Project/memind_adm/adm-preview.log'
# preview 反代目标(/auth、/admin-api、/api)— 指向本仓库 Admin API
ADM_API_PORT=8085
ADM_DEV_BACKEND=http://127.0.0.1:8085
H5_PUBLIC_BASE_URL=https://gadm.tkmind.cn
VITE_BASE_PATH=/ops
H5_PUBLIC_BASE_URL=https://md.tkmind.cn
VITE_BASE_PATH=/
# 共享 Memind 主库与主实现
DATABASE_URL=mysql://<user>:<password>@<host>:3306/<db>
@@ -196,7 +214,7 @@ MEMIND_LIB_ROOT=/Users/john/Project/Memind
H5_USERS_ROOT=/Users/john/Project/Memind/users
# 套餐自动同步到生产后台(可选)
PLAN_SYNC_TARGET_BASE_URL=https://gadm.tkmind.cn
PLAN_SYNC_TARGET_BASE_URL=https://md.tkmind.cn
PLAN_SYNC_USERNAME=admin
PLAN_SYNC_PASSWORD=<admin-password>
PLAN_SYNC_TIMEOUT_MS=10000
@@ -267,14 +285,14 @@ PY'
| 文档 | 内容 |
|------|------|
| [docs/analytics-deploy.md](analytics-deploy.md) | gadm 环境变量、验收、故障排查 |
| Memind [docs/analytics-release-runbook.md](../Memind/docs/analytics-release-runbook.md) | 跨仓库发布顺序(105 → 103 Portal → gadm |
| [docs/analytics-deploy.md](analytics-deploy.md) | md.tkmind.cn Analytics / SEO·GEO 配置 |
| Memind [docs/analytics-release-runbook.md](../Memind/docs/analytics-release-runbook.md) | 跨仓库发布顺序(105 → 103 Portal → md.tkmind.cn |
生产 `.env` 至少配置:
```env
UMAMI_ADMIN_PASSWORD=<Umami admin 密码>
MEMIND_UMAMI_SSO_SECRET=<与 105 Umami .env 一致>
UMAMI_SSO_USERNAME=admin
```
可选:`UMAMI_URL`、`UMAMI_WEBSITE_ID`、`UMAMI_SSO_USERNAME`。
+16 -15
View File
@@ -5,7 +5,9 @@
平台边界与字段口径见 Memind [docs/analytics-platform.md](https://git.tkmind.cn/tkmind/Memind/src/branch/main/docs/analytics-platform.md)。
跨仓库发布顺序见 Memind [docs/analytics-release-runbook.md](https://git.tkmind.cn/tkmind/Memind/src/branch/main/docs/analytics-release-runbook.md)。
## 功能入口(gadm 5174
## 功能入口(md.tkmind.cn · 103 进程 · 105 反代
生产 URL**https://md.tkmind.cn/analytics/seo-geo**
| 路由 | 页面 | 说明 |
|------|------|------|
@@ -35,22 +37,22 @@ adm **不**直连浏览器到 Umami 写库;读统计通过服务端用 Umami
`/Users/john/Project/memind_adm/.env` 增加或确认:
```env
# SEO/GEO 看板(必填
UMAMI_ADMIN_PASSWORD=<Umami admin 密码>
# 管理后台公网域名(会话 cookie 绑定 md 域名
H5_PUBLIC_BASE_URL=https://md.tkmind.cn
# SEO/GEO 看板 + Umami SSO(必填,与 105 Umami .env 一致)
MEMIND_UMAMI_SSO_SECRET=<与 /opt/memind-analytics/.env 一致>
UMAMI_SSO_USERNAME=admin
# 可选:覆盖默认
UMAMI_URL=https://fxi.tkmind.cn
UMAMI_WEBSITE_ID=<Memind Generated Pages 的 Website ID>
UMAMI_SSO_USERNAME=admin
# Umami SSOAnalytics 配置页)
MEMIND_UMAMI_SSO_SECRET=<与 105 /opt/memind-analytics/.env 一致>
UMAMI_WEBSITE_ID=<Memind 公共页面 Website ID>
```
说明:
- `UMAMI_ADMIN_PASSWORD` 未配置时,SEO/GEO 看板 API 会报错「未配置 UMAMI_ADMIN_PASSWORD
- `websiteId` 也可在 gadm **Analytics 配置** 页面保存(写入 MindSpace admin 配置),服务端优先读库内配置
- 105 生产 Umami 启用 `MEMIND_UMAMI_SSO_ONLY=1` 时,须配置 `MEMIND_UMAMI_SSO_SECRET`;勿依赖 `UMAMI_ADMIN_PASSWORD`
- `websiteId` 也可在 **Analytics 配置** 页面保存(写入 MindSpace admin 配置),服务端优先读库内配置
- 103 必须能访问 `UMAMI_URL`(内网或公网,依网络拓扑)
## 发布
@@ -75,13 +77,13 @@ bash scripts/release-prod.sh --yes
ssh john@10.10.0.2 'curl -sf http://127.0.0.1:8085/health'
# SEO/GEO API(需替换 cookie 或在内网浏览器登录后测)
# 期望 200 + pages 数组,而非 500 / 未配置 UMAMI_ADMIN_PASSWORD
# 期望 200 + pages 数组,而非 500 / 未配置 MEMIND_UMAMI_SSO_SECRET
```
浏览器:
1. `https://gadm.tkmind.cn/analytics` → 「打开 Umami 分析后台」跳转成功
2. `https://gadm.tkmind.cn/analytics/seo-geo` → 表格加载;SEO / GEO Tab 切换正常
1. `https://md.tkmind.cn/analytics` → 「打开 Umami 分析后台」跳转成功
2. `https://md.tkmind.cn/analytics/seo-geo` → 表格加载;SEO / GEO Tab 切换正常
3. 列口径与 Umami「所有生成页面明细 / public page」一致(页面、PV、UV、点击/表单/参与率等)
## 本地开发
@@ -94,7 +96,6 @@ pnpm dev # 5174
```env
UMAMI_URL=http://127.0.0.1:3100
UMAMI_ADMIN_PASSWORD=umami
UMAMI_WEBSITE_ID=<local website id>
MEMIND_UMAMI_SSO_SECRET=<local secret>
```
@@ -105,7 +106,7 @@ Memind 本地 analytics 变量见 [local-analytics.md](https://git.tkmind.cn/tkm
| 现象 | 检查 |
|------|------|
| SEO/GEO 看板 500 | 103 `adm-api.log``UMAMI_ADMIN_PASSWORD`105 Umami 是否 active |
| SEO/GEO 看板 500 | 103 `adm-api.log``MEMIND_UMAMI_SSO_SECRET`105 Umami 是否 active |
| Umami SSO 失败 | `MEMIND_UMAMI_SSO_SECRET` 与 105 `.env` 是否一致 |
| 看板无 SEO/GEO 行 | Memind discovery 是否已发布;Umami 是否有带 `discovery_channel` 的事件 |
| Rybbit 链接/报错 | 清理旧书签;代码已移除 Rybbit SSO |