DOMAINS — Agentaily 域名体系(真相源)
2026-06-19 老板定:全线收敛到这一个 monorepo。 域名按三层职责切清:官网 / 平台应用 / 用户发布的制品。 所有历史子域(interviewer / xiaoxi / discovery / cast / xhs / sso / xiaojian / xiaoxiu / akong / xq … 及其阿里云 OSS/FC 后端)、form-design 独立产品(域 + CF 项目 + worker + D1)全部退役删除。 域名注册留阿里云,DNS 迁 Cloudflare;托管一律 Cloudflare;CF 资源命名一律
agentaily-*前缀。
三层(每层一个清晰职责)
| 层 | 域名 | 是什么 | 托管 / CF 项目 |
|---|---|---|---|
| ① 官网 | www.agentaily.com | marketing 落地页(apex agentaily.com → 跳 www) | Cloudflare Pages agentaily-website |
| ② 平台应用 | chat.agentaily.com | 聊天 × 万物 工作台(authoring)+ 同源 /api/* | Cloudflare Pages agentaily①(live) |
| ③ 用户发布的制品(UGC) | **<slug>.form.agentaily.com**②③ | 陌生人访问的成品页;服务用户写的 HTML(UGC) | Worker agentaily-publish(*.form wildcard + for SaaS) |
① 主应用现 live 为 CF Pages 项目 agentaily(agentaily.pages.dev)。CF Pages 不支持改名(改名=重建+重配 secret), 故保留项目名 agentaily,只给它加自定义域 chat.agentaily.com;agentaily-* 前缀这条落到要动的官网(official-website → agentaily-website)。 ② 发布制品按垂直分组:<slug>.<vertical>.agentaily.com(x.form.agentaily.com、deck.slides.agentaily.com…);每个垂直一条 wildcard *.form.agentaily.com / *.slides.agentaily.com。 ③ UGC 也支持用户自带域名(Cloudflare for SaaS)—— 见下。
③ 发布制品 = UGC(用户自带域名 + <slug>.form.agentaily.com)
发布的成品是 UGC —— 地址归用户。两条:
(主)用户自带域名 —— Cloudflare for SaaS(custom hostnames): 用户把自己的域名(如 form.acme.com)CNAME 过来 → 我们按请求的 Host 查到对应发布 app、自动签发证书、服务它。 后端一张 custom_hostnames 表(hostname → projectId)。
(默认)<slug>.<vertical>.agentaily.com:x.form.agentaily.com(projects.slug + 项目 type);wildcard 每个垂直一条(*.form.agentaily.com …)。www/chat/mail 在 apex 一层、与 UGC 命名空间不冲突。
安全(UGC 挂 agentaily.com 子域下,必须守住这条): 平台会话用 Bearer + localStorage(per-origin),UGC 子域读不到 chat 的 localStorage;铁律:平台绝不设 Domain=.agentaily.com 的 cookie (只 host-only / Bearer)—— 否则 *.agentaily.com 下的 UGC 能读/注入平台会话。守住即隔离。
前置:把 agentaily.com 的 DNS 从阿里云迁到 Cloudflare(nameserver 切 CF;注册仍留阿里云)—— 才能原生支持 *.form.agentaily.com wildcard + Cloudflare for SaaS;也契合「托管一律 Cloudflare、退役阿里云」。
✅ 运行时已建(apps/publish/ → Worker agentaily-publish):按 Host 路由 —— <slug>.<vertical>.agentaily.com(projects.slug,且 vertical 须匹配项目 type)与用户自带域名(custom_hostnames 表);自含 page、submit、query,全部同源(桥的相对 URL 直接可用,无 CORS);独立 Worker 即独立源即隔离。本地 e2e 全绿:<slug>.form.agentaily.com 与自带域名服务、apex/www/chat 404、同源提交 201。⏳ 待基础设施:*.form.agentaily.com wildcard 路由、Cloudflare for SaaS 绑定、(产品侧)发布 UI 设 slug / 加自带域名。
配套
| 用途 | 域名 | 落到 |
|---|---|---|
| 数据库 | D1 agentaily-db | Cloudflare(应用 + 发布 Worker 共享) |
| 发件 | mail.agentaily.com | Resend —— 迁到 agentaily 自有账号(现借用 form-design 账号),重验 SPF/DKIM |
| 组件库 Storybook | storybook.agentaily.com | Cloudflare Pages agentaily-storybook(.github/workflows/deploy-storybook.yml 自动部署,与官网/应用同平台,不用 GitHub Pages)。绑域两步:① CF Pages 加自定义域 storybook.agentaily.com;② DNS 在阿里云(非 CF,CF 自动建不了)→ 阿里云加 CNAME storybook → agentaily-storybook.pages.dev。流程见 skill agentaily-deploy-cf-pages-subdomain |
一句话规约: 官网 www.agentaily.com · 应用 chat.agentaily.com(含 /api)· 用户制品 <slug>.form.agentaily.com + 自带域名(per-origin 隔离);历史子域与 form-design 全删;CF 新建/改名一律 agentaily-*。
现状(vault 台账盘出,2026-06-19)
- apex
agentaily.com—— 阿里云注册 + 阿里云 DNS,曾是整个「聊天 × 万物」组合的共享根域。- root 新旧两条记录:旧 →
agentaily-www(阿里云 OSS);新 →official-website-bcm.pages.dev(CF Pages)。迁移未收尾。 - 大量历史子域(
api.*→ 阿里云 FC;m./admin./chat.*→ 阿里云 OSS;含staging.*)+form-design.agentaily.com → form-design-cnw.pages.dev。全部待删。
- root 新旧两条记录:旧 →
- 主应用 —— 已 live:CF Pages 项目
agentaily(agentaily.pages.dev)+ D1agentaily-db+ Pages secrets + Google OAuth 回调agentaily.pages.dev/api/auth/google/callback(yarnbcoder CF 账号)。 - 其他注册域(独立品牌/备用,不挂 agentaily.com,本次不动):阿里云
aiwanna.chatclawchat.cloudguixin.chat;CF DNSagentalk.ccaigushi.cccoursegen.onlinejishu.funsliro.ccvifro.cc;新网akongtech.cn。 - 示例污染(非真域名,勿当配置):
studio.agentaily.com、agentaily.chat仅是代码/文档里的占位示例。
Cutover 跑法(顺序很重要 —— 提前翻活配置会打断线上)
基础设施(账号侧:Cloudflare(DNS + Pages + Workers + for SaaS) + Google + Resend;boss 控制台,或授权我用 vault token 走 CLI/API)
- 把
agentaily.comDNS 迁到 Cloudflare(nameserver 切 CF;注册留阿里云)—— 解锁 wildcard + Cloudflare for SaaS,后面全靠它。 - CF:给 Pages 项目
agentaily加自定义域chat.agentaily.com;等证书。 - Google OAuth:生产回调改/加
https://chat.agentaily.com/api/auth/google/callback。 - 官网:CF 建
agentaily-website(替official-website)→ 部署 →www.agentaily.com指它,apexagentaily.com→ 跳 www;删旧 OSS root 记录。 - ③ 发布制品(UGC):部署 Worker
agentaily-publish→ 绑*.form.agentaily.com(每垂直一条)+ Cloudflare for SaaS(自带域名)→/f/:id旧路径退场。 - Resend:
mail.agentaily.com迁 agentaily 自有账号,重验 SPF/DKIM。 - 删除退役资源(破坏性,逐项确认):所有历史
*.agentaily.comDNS + 对应阿里云 OSS/FC + form-design(域/CF 项目/worker/D1)。- form-design 退役执行进度(2026-06-20):✅ 已删 CF D1
form-design-db、CF Workerform-design-api、本地仓;✅ GH 仓agentaily/form-design已归档(可逆)。⏳ 未完:form-design、form-design-website两个 CF Pages 项目 —— CF 要求先在面板移除自定义域(form-design.studio.agentaily.com/form-design.agentaily.com)才能删项目(wrangler 无删 Pages 域的命令);移除域后wrangler pages project delete <name> --yes即可删。对应 DNS 两条一并清。
- form-design 退役执行进度(2026-06-20):✅ 已删 CF D1
- vault 台账:同步删退役条目、补
www/chat/agentaily-website/agentaily-publish记录。
仓库配置(在 1–2 步就绪后再翻,翻完一推即生效)
apps/web/wrangler.toml:APP_BASE_URL = "https://chat.agentaily.com"(EMAIL_FROM不变)。.github/workflows/deploy-website.yml:--project-name=agentaily-website(deploy.yml的agentaily不动)。
真实 DNS/CF/Resend/Google 变更在各自控制台/API(账号侧,部分破坏性);本仓库 config/docs 以本文件为目标对齐。