自建动态(��间线)服务:Cloudflare Workers + D1 + Vue 3(MD3 风格)。
替代原 Memos 方案,部署后挂在 https://flygeon.top/moments/。
- 公开时间线:分页浏览动态(纯文本,转义渲染)
- 管理登录:顶栏 🔒 图标 → 密码登录(JWT HttpOnly Cookie,7 天有效)
- 登录后可发布(Ctrl+Enter 快捷发布)与删除(两段式确认)
- MD3 设计 tokens 与博客 REBLOG 同源(hue 250/240,亮暗双主题,跟随系统 + 手动切换)
pnpm install
# 1. 创建 D1 数据库,把输出的 database_id 填进 wrangler.jsonc
npx wrangler d1 create moments-db
# 2. 建表(幂等)
npx wrangler d1 execute moments-db --remote --file=schema.sql
# 3. 生产 secrets
npx wrangler secret put ADMIN_PASSWORD # 管理员密码
npx wrangler secret put JWT_SECRET # 随机长字符串(openssl rand -hex 32)
# 4. 本地调试(.dev.vars 里放同样两个变量)
cp .dev.vars.example .dev.vars
pnpm preview # build + wrangler dev,http://localhost:8787/moments/
# 5. 部署
pnpm deploy- 本 Worker 路由:
flygeon.top/moments*(wrangler.jsonc 已配置) - 主站博客 Worker 路由:
flygeon.top/* - Cloudflare 对同域多路由取最具体匹配,
/moments*优先于/* ⚠️ 前提:主站 Worker 必须以「路由」方式绑定;若是「自定义域」(Custom Domain), 自定义域优先级更高会盖住本路由——需在 CF 面板把主站改为flygeon.top/*路由
- GitHub 建仓库并 push
- 仓库 Secrets 配置
CLOUDFLARE_API_TOKEN(Workers Scripts:Edit + D1:Edit + Workers Routes:Edit)和CLOUDFLARE_ACCOUNT_ID - push 到 main 自动构建部署(.github/workflows/deploy.yml)
| 方法 | 路径 | 说明 |
|---|---|---|
| GET | /moments/api/list?limit=20&offset=0 |
公开列表 |
| GET | /moments/api/me |
登录态检查 |
| POST | /moments/api/login |
{password} → Set-Cookie |
| POST | /moments/api/logout |
清除会话 |
| POST | /moments/api/create |
需登录,{content} |
| POST | /moments/api/delete |
需登录,{id} |