一个基于 Cloudflare Pages、Pages Functions 和 D1 的轻量书签后台。
当前仓库已经收敛到更简单的运行模型:
- 生产部署由 GitHub Actions 自动准备 Pages 项目和 D1 数据库
- 数据库结构只认一份
db/schema.sql - 线上不再提供首设密码页、系统诊断页、远程重置数据库页
- 首次登录可使用默认密码
admin123,登录后请立即在页面内修改密码
.tmp-shuqian-nav/
├─ .github/workflows/
│ └─ frontend_pagefunction_deploy.yml
├─ db/
│ └─ schema.sql
├─ pages/
│ ├─ functions/
│ ├─ package.json
│ └─ wrangler.toml
├─ public/
├─ scripts/
│ ├─ audit-buttons.mjs
│ ├─ audit-loading-matrix.mjs
│ └─ screenshot-admin.mjs
├─ package.json
└─ README.md
- 安装依赖
npm install
npm --prefix pages install- 检查本地配置
.dev.vars(已加入 .gitignore)至少需要包含:
ADMIN_PASSWORD=change-me-now
JWT_SECRET=your-random-secret
ENVIRONMENT=developmentpages/wrangler.toml 已提交到仓库,通常不需要本地生成。
- 初始化或更新本地 D1
npm run db:init:local- 启动本地开发
npm run dev如果要强制使用本地模拟模式:
npm run dev:localGitHub Actions 会自动完成这些步骤:
- 安装
pages/目录依赖 - 校验
CLOUDFLARE_API_TOKEN - 解析
CLOUDFLARE_ACCOUNT_ID - 创建或复用 Pages 项目
- 创建或复用 D1 数据库
- 执行
db/schema.sql - 部署
public/+pages/functions/
工作流文件:
- 登录页:
/login.html - 健康检查:
/api/health - 默认管理员密码:
admin123
密码来源优先级:
ADMIN_PASSWORD环境变量- D1 中的
system_config.admin_password - schema 默认写入的
admin123
建议:
- 首次进入后立刻修改密码
- 生产环境如果要固定密码,可在环境变量里设置
ADMIN_PASSWORD
CLOUDFLARE_ACCOUNT_IDCLOUDFLARE_API_TOKENPAGES_ADMIN_PASSWORDPAGES_JWT_SECRET
CLOUDFLARE_API_TOKEN 最小建议权限:
Account -> Cloudflare Pages: EditAccount -> D1: Edit
| 命令 | 作用 |
|---|---|
npm run db:init:local |
初始化本地 D1 |
npm run dev |
启动 Pages 本地开发 |
npm run dev:local |
使用 --local 启动 Pages |
npm run deploy |
手动部署到 Pages |
npm run lint |
检查前后端 JS |
npm run format:check |
检查格式 |
npm test |
运行回归测试、lint、格式检查 |
.dev.vars 最少建议包含:
ADMIN_PASSWORD=change-me-now
JWT_SECRET=your-random-secret
ENVIRONMENT=development为了简化维护,下面这些线上入口已经移除:
/setup-password/setup-password.html/diagnose/diagnose.html/api/auth/setup-password/api/system/diagnose/api/system/reset-database/api/system/clear-sample-data
旧地址会通过 public/_redirects 回到新的入口。
先安装根目录依赖:
npm install先安装 pages/ 目录依赖:
npm --prefix pages install优先检查:
CLOUDFLARE_ACCOUNT_ID是否正确CLOUDFLARE_API_TOKEN是否为 API Token,而不是 Global API Key- Token 是否同时包含 Pages 和 D1 的编辑权限
- Token 是否能访问目标 Cloudflare Account
部署会明确要求配置 PAGES_ADMIN_PASSWORD 和 PAGES_JWT_SECRET。缺少任意一个都会停止部署,避免线上回落到公开的默认管理员密码。