国内静态站部署说明

目标:把 GitHub 仓库作为开源数据源和维护记录,把国内可访问网页作为普通用户主入口。

建议主域名:

kunming.tianmind.com

备用域名可以考虑:

km.tianmind.com

当前静态站能力

index.html 在国内站点上应直接完成这些核心动作:

GitHub 链接只保留为开源协作入口,不作为普通用户完成核心动作的前提。

本地构建

npm run validate
npm run build:site

构建输出:

dist/

dist/ 会包含:

线索表单后端

submit.html 在国内主站会把表单提交到同域接口;GitHub Pages 备用页会通过受限 CORS 提交到同一个国内接口:

POST https://kunming.tianmind.com/api/leads

后端代码在:

server/lead_api.py
server/kunming-leads-api.service

设计边界:

服务器默认路径:

/opt/kunming-tech-radar/api/lead_api.py
/opt/kunming-tech-radar/leads/leads.jsonl

服务端口:

127.0.0.1:3924

nginx 需要把 /api/ 反代到本机服务,例如:

location /api/ {
    proxy_pass http://127.0.0.1:3924/;
    proxy_http_version 1.1;
    proxy_set_header Host $host;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_set_header X-Forwarded-Proto $scheme;
    client_max_body_size 64k;
}

查看待复核线索:

ssh tianmind-104 "tail -n 20 /opt/kunming-tech-radar/leads/leads.jsonl"

导入正式数据前必须人工复核公开来源。不要把表单里的联系方式、私人说明或无法核验内容直接写入公开数据。

部署配置

仓库根目录已准备 deploy.json

{
  "name": "kunming-tech-radar",
  "domain": "kunming.tianmind.com",
  "server": "tianmind-104",
  "type": "static",
  "build": "npm run build:site",
  "output": "dist",
  "ssl": true
}

正式上线前需要确认:

  1. 使用 kunming.tianmind.com 还是 km.tianmind.com
  2. 是否用 tianmind-104 作为静态站服务器。
  3. 是否立即创建 Cloudflare DNS、nginx 配置和证书。

确认后可在本机执行 TianMind 部署工具:

/Volumes/三星T7/Dev/site-tools/deploy.sh

也可以用 webhook 全站部署,但正式上线前仍应先确认域名。

上线后核验

不要只看 HTTP 200。需要检查内容标记:

curl -sL https://kunming.tianmind.com/ | rg "国内可访问入口"
curl -sL https://kunming.tianmind.com/submit.html | rg "不会 GitHub"
curl -sL https://kunming.tianmind.com/submit.html | rg "leadForm|/api/leads"
curl -sL https://kunming.tianmind.com/api/health
curl -sL https://kunming.tianmind.com/data/companies.json | node -e "let s=''; process.stdin.on('data',d=>s+=d); process.stdin.on('end',()=>console.log(JSON.parse(s).companies.length))"
curl -sI https://kunming.tianmind.com/robots.txt
curl -sL https://kunming.tianmind.com/sitemap.xml | rg "submit.html"

同时检查:

后续成功指标

国内站点上线后,成功指标不应只看 GitHub star。更重要的是: