🚀 基于 Cloudflare Workers 的免费私人云盘
无服务器架构 | 全球 CDN 加速 | 企业级安全
- 🚀 无服务器架构 - Cloudflare Workers 边缘计算,免费 10 万次请求/天
- 📦 三存储系统 - R2 (文件) + D1 (元数据) + KV (速率限制)
- 📤 智能上传 - 拖拽上传,简单上传最大 200MB,分片上传最大 5GB
- 🔗 灵活分享 - 标准链接/短链接切换,密码保护,限时限次下载
- 👁️ 文件预览 - 图片、PDF、Markdown、代码高亮、SVG
- 🔐 安全防护 - SHA-256 哈希、速率限制、Turnstile 人机验证
- 🌍 多语言 - 中文/英文自适应
- 🌓 主题切换 - 亮色/暗色模式
- 📱 响应式 - 完美适配桌面/平板/手机
用户 → Pages (前端) → Workers (后端) → R2 + D1 + KV
| 存储 | 用途 | 免费额度 |
|---|---|---|
| R2 | 文件内容,无出站流量费 | 10GB |
| D1 | 文件元数据,支持复杂查询 | 5GB |
| KV | 速率限制,毫秒级读写 | 1GB |
技术栈:Vite + Vanilla JS + TailwindCSS + Cloudflare Workers
🎉 真正的一键部署!点击按钮后:
- 登录 Cloudflare 账号
- 系统自动创建资源(D1、R2、KV)
- ✅ 自动构建并部署 Frontend
- ✅ 自动部署 Backend API
- ✅ 数据库自动初始化
- ✅ 使用临时密码:
TEMP_PASSWORD_CHANGE_ME
访问地址:https://pebble-drive.{your-subdomain}.workers.dev
架构说明:
- 📦 前后端合并部署到单个 Worker(使用 Workers Assets)
- ✅ 统一域名(无跨域问题)
- ✅ 代码仍然分离(frontend/ + backend/ 独立开发)
- ✅ 防缓存逻辑已迁移:从 Pages Functions 迁移到 Worker 中间件
⚠️ 代码大小限制:1MB 压缩后(当前 ~700KB,充足)
🔧 技术细节:
防缓存机制(分享/下载核心功能):
- ✅ 时间戳重定向(
_t参数防止浏览器缓存) - ✅ 动态时间窗口(桌面1秒/移动3秒/弱网5秒)
- ✅ 时钟偏差容忍(支持客户端时间不同步)
- ✅ 强制 no-cache 头(确保下载次数限制生效)
应用已可用,但使用的是临时密码。请立即修改:
-
方式A:在 Cloudflare Dashboard 修改(推荐)
- 访问:Workers & Pages →
pebble-drive-api→ Settings → Variables - 修改
AUTH_PASSWORD为你的安全密码 - 修改
AUTH_TOKEN_SECRET为随机字符串(如:openssl rand -base64 32生成)
- 访问:Workers & Pages →
-
方式B:使用 CLI 修改(更安全)
cd backend # 覆盖为安全密码 echo "your-secure-password" | npx wrangler secret put AUTH_PASSWORD # 覆盖为随机 JWT 密钥 openssl rand -base64 32 | npx wrangler secret put AUTH_TOKEN_SECRET # 配置 Turnstile(可选) echo "your-turnstile-secret" | npx wrangler secret put TURNSTILE_SECRET_KEY
-
Fork 本项目到你的 GitHub 账号
-
配置 GitHub Secrets(Settings → Secrets and variables → Actions):
CLOUDFLARE_API_TOKEN:获取 API TokenCLOUDFLARE_ACCOUNT_ID:查看 Account IDTURNSTILE_SITE_KEY(可选):创建 Turnstile
-
点击 Actions → Deploy PebbleDrive → Run workflow
- 可选配置:文件大小限制、存储配额、上传限制、项目名称
-
配置登录密码(在本地运行):
cd backend echo "your-password" | npx wrangler secret put AUTH_PASSWORD openssl rand -base64 32 | npx wrangler secret put AUTH_TOKEN_SECRET
🎉 完成!访问部署输出的 URL 即可使用。
# 1. 克隆项目
git clone https://github.com/aydomini/pebble-drive.git
cd pebble-drive
# 2. 登录 Cloudflare
npx wrangler login
# 3. 一键部署
npm run deploy
# 4. 设置密码(首次必需)
cd backend
echo "your-password" | npx wrangler secret put AUTH_PASSWORD
openssl rand -base64 32 | npx wrangler secret put AUTH_TOKEN_SECRET🎉 完成!访问输出的 URL 即可使用。
| 特性 | 方式 1:一键部署 | 方式 2/3:分离部署 |
|---|---|---|
| 部署复杂度 | ⭐⭐⭐⭐⭐ 最简单 | ⭐⭐⭐ 需配置多项 |
| 部署时间 | ~2分钟 | ~16分钟 |
| 域名 | 单一域名 | 两个域名(需配置 BACKEND_URL) |
| 防缓存实现 | Worker 中间件 | Pages Functions |
| 适用场景 | 新手、快速部署 | 大型项目、团队协作 |
推荐:90% 的用户适合使用方式 1(一键部署)
📚 详细部署指南:DEPLOY.md
| 文档 | 说明 |
|---|---|
| DEPLOY.md | 完整部署指南(后端/前端/短链接配置) |
| CHANGELOG.md | 版本更新日志 |
MIT License - 详见 LICENSE
感谢以下开源项目和服务:
- Cloudflare Workers - 无服务器平台
- TailwindCSS - CSS 框架
- Vite - 前端构建工具
- Marked.js - Markdown 解析器
- Highlight.js - 代码高亮
- FontAwesome - 图标库
Built with ❤️ using Cloudflare Workers