Add local test domain setup (test.*.tkmind.cn).

DNS/TLS/proxy scripts and docs/local-dev.md replace localhost URLs for H5, memind_adm, Plaza, and Ops during local dev.

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
john
2026-06-17 09:55:04 +08:00
parent 67348db026
commit 54de1dd8e3
15 changed files with 908 additions and 105 deletions
+126
View File
@@ -0,0 +1,126 @@
# 本地开发(test.*.tkmind.cn
本地开发统一使用 **test 子域**,不再用 `127.0.0.1` / `localhost` 访问。结构与生产一致,`.tkmind.cn` Cookie 可跨子域共享登录态。
## 域名映射
| 域名 | 服务 | 内部端口 |
|------|------|----------|
| **test.tkmind.cn** | MindSpace H5Vite 热更新) | 5173 |
| **testadm.tkmind.cn** | memind_adm 后台 API | 8082 |
| **testpla.tkmind.cn** | Plaza 发现广场 | 3001 |
| **testops.tkmind.cn** | Ops 审核 / 超管 SPA | 3002 |
Portal(用户 API、登录、`/auth`)仍跑在 **8081**,由 Vite / Plaza 内部代理,**无需单独域名**。
```
浏览器
↓ HTTPS :443local-test-proxy,按 Host 分流)
├─ test.tkmind.cn → :5173 Vite/api、/auth → :8081
├─ testadm.tkmind.cn → :8082 memind_adm
├─ testpla.tkmind.cn → :3001 Plaza Next.js
└─ testops.tkmind.cn → :3002 Ops SPA
```
## 首次配置(一次性)
```bash
# 1. 安装依赖
pnpm install
cd ops && npm install && cd ..
# 2. 环境变量(按需)
cp .env.example .env
# 3. 本地 DNS(覆盖 Tailscale / Clash fake-ip
sudo pnpm setup:local-test
# 或分步:
# sudo pnpm setup:local-dns
# sudo pnpm setup:local-tls
```
`.env` 建议至少设置:
```bash
H5_PUBLIC_BASE_URL=https://test.tkmind.cn
H5_COOKIE_DOMAIN=.tkmind.cn
PLAZA_LOCAL_HOST=testpla.tkmind.cn
PLAZA_PUBLIC_BASE=https://testpla.tkmind.cn
ADMIN_PUBLIC_HOST=testadm.tkmind.cn
PLAZA_APP_DIR=/Users/john/PycharmProjects/goose/ui/plaza # Plaza 源码路径
```
## 日常启动
**终端 1 — 全栈开发:**
```bash
PLAZA_APP_DIR=/Users/john/PycharmProjects/goose/ui/plaza pnpm dev
```
**终端 2 — HTTPS 统一入口(需 root):**
```bash
sudo pnpm dev:local-proxy
```
## 访问地址
| 场景 | 地址 |
|------|------|
| MindSpace | https://test.tkmind.cn/?preview=mindspace |
| Plaza | https://testpla.tkmind.cn/plaza |
| Ops 审核后台 | https://testops.tkmind.cn/ops/ |
| memind_adm 健康检查 | https://testadm.tkmind.cn/healthz |
| 一键打开 H5 | `pnpm open:local-test` |
## 诊断
```bash
pnpm check:local-test
```
## Ops 首次授权
先在 MindSpace 登录,再执行:
```bash
node scripts/grant-ops-role.mjs admin ops_admin
```
## 浏览器「连接不是私密连接」?
本地 HTTPS 使用自签证书(`.local/local-test-tls/`)。首次访问各 test 域名时,在浏览器中信任证书即可。
若 Chrome 仍走 Secure DNS 绕过 `/etc/hosts`
1. 关闭「使用安全 DNS」
2. 或执行 `pnpm open:local-test`
## 移除本地劫持
```bash
sudo pnpm setup:local-dns:remove
```
## 与 plaza.tkmind.cn 的关系
- **testpla.tkmind.cn**:纯本地开发,不与公网冲突
- **plaza.tkmind.cn**:公网 Tunnel 回源,见 [plaza-local.md](./plaza-local.md)
两套域名可并存;日常 Memind 全栈开发优先用 `test.*`
## 环境变量
| 变量 | 默认 | 说明 |
|------|------|------|
| `H5_LOCAL_HOST` | test.tkmind.cn | H5 测试域 |
| `ADMIN_LOCAL_HOST` | testadm.tkmind.cn | 后台 API 测试域 |
| `PLAZA_LOCAL_HOST` | testpla.tkmind.cn | Plaza 测试域 |
| `OPS_LOCAL_HOST` | testops.tkmind.cn | Ops 测试域 |
| `H5_PUBLIC_BASE_URL` | https://test.tkmind.cn | 公开链接 / OAuth 回调基址 |
| `H5_COOKIE_DOMAIN` | (建议 `.tkmind.cn` | 跨子域共享登录 |
| `LOCAL_TEST_DNS_PORT` | 5533 | 本地 DNS 监听端口 |
| `LOCAL_TEST_PUBLIC_PORT` | 443 | HTTPS 代理端口 |
| `LOCAL_TEST_HTTPS` | 1 | 设为 `0` 时用 HTTP :80 |