celium.cn 上线工程:现状、计划与接续说明

这份文档是给"下一次继续工作"用的。线上代码为准——文档可能滞后于线上。 参考实现(权威)在 ~/400ee,线上部署在 ali-245m / home-ubuntu / box-bj。

1. 参考实现:400ee 的既有流程

~/400ee400ee.xiaohuaerai.com 的仓库,deploy/ 目录就是整套流程:

文件作用
public/p2p-loader.js浏览器加载器:按 P2P → box(IPv6/443/8443) → cache → 源站 的顺序取静态资源,并把每条路径的成败与耗时上报
deploy/peer.jshome 上的 P2P 服务(WebRTC 信令),带来源 host 白名单
deploy/report.js多租户上报收集 + /p2p-report/ 看板;按 Host 分域统计,按 loader 版本分组
deploy/ali-nginx.confali-245m 公网入口:TLS、/p2p-signal/→home:9001、/p2p-report/→home:9002、/api/→home:8080、静态兜底、/p2p-loader.js 本地
deploy/box-nginx.confbox 中继:IPv4/IPv6 的 443 与 8443,反代到 home:8080,自带 CORS
deploy/home-nginx.confhome 上的 OpenResty 源站(Tailscale 8080)
deploy/400ee-shell.lua五分钟有效的 P2P token + ali 兜底选择
deploy/dns-upsert-certbot.py用 certbot-dns-aliyun 的凭据改 AliDNS 记录(Python 3.5 兼容,给 ali-245m 用)

线上拓扑(实测确认):

浏览器 ──TLS──> ali-245m (123.56.139.147, OpenResty)
                  ├── /                    → 静态兜底 (本地 root) 或 Lua shell → home:8080
                  ├── /p2p-signal/  (wss)  → home 100.67.224.65:9001
                  ├── /p2p-report/         → home 100.67.224.65:9002
                  ├── /api/                → home 100.67.224.65:8080
                  └── /p2p-loader.js       → 本地静态
浏览器 ──TLS──> box400ee/box6400ee.xiaohuaerai.com:443/8443 → home:8080(中继,分担流量)
home-ubuntu: 源站 Node 8080 · P2P 信令 9001 · 上报收集 9002

report.js 的数据模型(/p2p-report/stats 返回):

{"site":"…","date":"…","total":N,"p2p_ok":N,"p2p_fail_total":N,"p2p_failures":{},
 "box_ok":N,"ipv6":N,"cache":N,"www":N,"p2p_rate":"…","offload_rate":"…","p2p_avg_ms":N,
 "loader_versions":{…},"loader_results":{…},"box_fail_total":N,"box_failures":{},
 "box_fail_versions":{},"box_fail_states":{},"box_route_failures":{},"box_routes":{…},
 "nodes":[{"node":"web-<ip>","ip":"…", …同上…}]}

多租户靠三处白名单:report.jsALLOWED_SITESpeer.js 的来源 host 列表、 以及每个域名的 nginx vhost。接 celium.cn 就是在这些地方加一项,加上自己的 vhost、证书和静态站点。

2. celium.cn 的目标形态

celium.cn / www.celium.cn   → ali-245m:官网静态站 + /p2p-loader.js + /p2p-signal/ + /p2p-report/
login.celium.cn             → 设备授权登录页(celium up 打印的那个链接)
box.celium.cn (待定)         → box-bj:静态资源中继(443 + 8443,IPv4/IPv6)

DNS 现状:celium.cn 的 NS 是阿里云(dns13/dns14.hichina.com),目前没有任何 A 记录。 需要在 ali-245m 上用 dns-upsert-certbot.py(沿用 certbot-dns-aliyun 的凭据)添加记录。

3. 计费(参考 tailscale.com 现价,折人民币后 5 折)

档位Tailscale 现价Celium 定价说明
个人版 Personal$0(最多 6 用户)¥0用户设备不限,3 个 ACL 组,50 个标签资源
标准版 Standard$8/用户/月¥29/用户/月10 个 ACL 组,基础 SSH
高级版 Premium$18/用户/月¥65/用户/月300 个 ACL 组,高级 SSH,更多临时资源
定制版 Enterprise定制联系我们私有化部署、专属支持

换算口径:人民币价 = Tailscale 美元月价 × 汇率 × 0.5,汇率取 7.2 ($8×7.2×0.5≈¥28.8→¥29;$18×7.2×0.5≈¥64.8→¥65)。汇率或 Tailscale 改价时, 只改这一处与站点文案。

4. 工作分解

#工作包状态
WP1官网(中文、科技风格、四档计费、favicon)进行中
WP2P2P 分发 + 分域看板 + nginx/box/证书(对齐 400ee 流程)进行中
WP3celium up 设备授权登录(https://login.celium.cn/a/xxxx进行中
WP4Let's Encrypt 自动签发与续期(DNS-01,阿里云)待 WP2 落地后接
WP5部署与验收(先本地测试通过再上线上待前述完成

5. 铁律:不碰线上其他服务

  • 所有改动先在本地跑通测试(站点构建、report.js 单元/集成测试、nginx -t 校验);
  • 线上只做新增(新 vhost、白名单加一项),不改动既有站点的路径与配置;
  • report.js / peer.js 前先备份,重启后用 /p2p-report/stats 验证三个既有站点仍正常;
  • nginx 改动先 nginx -t,再 reload(不是 restart),reload 失败立即回滚配置;
  • 每一步都要有回滚命令,写进部署脚本里。

6. 本地已有的东西

  • Celium 组网软件本体:/Users/yimingwang/deepseek/celium(Go,控制面+账号+引擎,端到端测试全绿)
  • 站点与部署产物:/Users/yimingwang/deepseek/celium/site/Users/yimingwang/deepseek/celium/deploy
  • 参考实现:~/400ee(只读参考,不要改)
  • 服务器凭据:~/pwd.txt(ali-245m、home-ubuntu、box-bj 等,均在 Tailscale 组网内可达)