快速开始
Lumen 由一个 Cloudflare Worker 提供:它同时承担 API 服务、SPA 资源,以及绑定到 Cloudflare Email Routing 的 email() 处理函数。
一个 Lumen,一个团队
一套 Lumen 只服务一个 Prism 团队。团队的 owner 与 co-owner 可以管理应用配置 并把邮箱地址分配给成员;成员不能自助分配地址。
前置条件
- 已开通 Workers Paid 计划的 Cloudflare 账号。
- 一个托管在 Cloudflare 上的自定义域名,已启用 Email Routing。
- 一个 Prism 实例(或使用
prism.siiway.org),并为 Lumen 创建好 OAuth 应用。 - Bun ≥ 1.3 与 wrangler。
1. 安装
sh
git clone https://github.com/siiway/lumen.git
cd lumen
bun install2. 创建 Cloudflare 资源
sh
bunx wrangler d1 create lumen-db
bunx wrangler kv namespace create lumen-kv
# 可选;如果你不想保存原始 .eml 与附件,可以略过
bunx wrangler r2 bucket create lumen-mail把 ID 写入 wrangler.jsonc。如果不要 R2,删掉 r2_buckets 块即可—— InitPage 中 “启用 R2” 默认就是关闭的。
3. 本地运行
sh
bun run dev访问 http://localhost:5173。会进入两阶段的 InitPage:
- 运维填写 OAuth 与存储配置。 Lumen 把配置 “暂存”,执行建表, 但不会立即标记为已初始化。
- 运维通过 Prism 登录。 回调中校验该用户是配置团队的 owner, 通过后才会翻转
init:configured,系统进入正式可用状态。
如果第二步登录的不是 owner,Lumen 会拒绝完成初始化。 此后日常登录也会通过同一回调强制校验团队成员身份。
4. 配置 Email Routing
在 Cloudflare 控制台中:
- Email Routing → Routes →
Custom address,目的地选Send to a Worker, 选择lumen。 - 对每个想要送达 Lumen 的地址都重复一次,或者使用
Catch-all。 - 当某个用户至少在 Lumen 登录过一次后,owner / co-owner 可在 设置 → 应用管理 → 地址 把地址分配给他。 成员不能自助分配——他们只在 设置 → 地址 看到自己被分配的地址。
5. 部署
sh
bun run deploy首次部署注意
部署后请尽快完成 InitPage。在你完成之前,任何能访问公开 URL 的人都可以暂存配置 (随后的 OAuth 校验会阻止他完成初始化,但仍建议尽快锁定)。