图匣是自托管服务,你需要一个 Cloudflare 账户来部署它。以下为部署与使用要点。
环境要求
- Node.js 24.x
- pnpm 11.x
- 一个 Cloudflare 账户(用于 Workers、R2、D1)
本地开发
先在项目根目录准备 .dev.vars,写入 Better Auth 密钥:
BETTER_AUTH_SECRET=<your-secret>
首次运行安装依赖并初始化本地 D1:
pnpm install
pnpm db:migrate:local
pnpm dev
浏览器打开 http://localhost:5173 即可访问。
常用命令
| 命令 | 作用 |
|---|---|
pnpm dev | Vite + Workers 本地开发服务器 |
pnpm build | 构建 SPA 与 Hono Worker |
pnpm preview | 在 Workers runtime 中预览生产产物 |
pnpm typecheck | TypeScript 检查 |
pnpm db:generate | 生成 Drizzle migration |
pnpm db:migrate:local | 迁移本地 D1 |
pnpm db:migrate | 迁移远程 D1 |
部署
wrangler.jsonc 默认复用 D1 数据库与 R2 bucket。生产部署前设置密钥并迁移数据库:
pnpm wrangler secret put BETTER_AUTH_SECRET
pnpm db:migrate
pnpm deploy
pnpm deploy 会先用 Vite 构建 SPA 与 Hono Worker,再由 Wrangler 部署同一份
Worker + Static Assets 产物。
配置公开直链(可选)
如果 R2 bucket 已开启 r2.dev 或绑定了自定义公开域名,可配置环境变量:
R2_PUBLIC_BASE_URL=https://files.example.com
配置后,/api/file/:id 会 302 重定向到 R2 公开对象地址,
而不是经 Worker 代理读取——更快,也更省 Worker 调用额度。
日常使用
- 首次访问后注册账户,完成邮箱验证。
- 在存储设置里选择使用内置 R2,或填入你自己的 S3 兼容配置。
- 上传图片,图匣会自动去重并生成外链。
- 需要自动化时,在设置中签发 API Token,供脚本或第三方客户端调用上传接口。
- 可将图片发布到公开画廊,或保持私有。