CloudDrive v3.0.0
schema v26 去部署

Cloudflare Workers · 单用户 · 零 npm 依赖

一个跑在 Cloudflare 上的
个人网盘。

文件管理、在线预览、分享、同步——全部收进一个 Worker。
本地 KV / R2 加 6 种外部存储,各自一张盘,互不混排。

一键部署 看看 8 种存储
存储后端
8 种
npm 依赖
0 个
单文件硬顶
5 GB
登录有效期
7 天

适合你,如果…

  • 想把网盘挂在自己的 Cloudflare 账号下,不租服务器
  • 文件散在 Google Drive / Zoho / MEGA / B2 / S3 / WebDAV,想统一管
  • 要分享链接、匿名收集、批量下载,不想折腾

先说清楚

  • 单用户制:只有一个 owner,没有注册 / 多人 / 共享空间
  • 免费计划有平台天花板:Worker 请求体 100MB,KV 写 1000 次/天
  • MEGA 原生 API 盘单文件限 64MB,大文件请走 R2 / B2 / WebDAV 中转

功能

日常用的,都在里面。

六组能力,一眼看完。细节数字均以仓库代码为准。

文件管理

盘符视图:每种存储一张盘。分页列表、无限滚动、网格/列表、排序、面包屑深链。

  • 全局搜索,结果带所在目录,一键定位
  • 按类型 / 时间 / 收藏 / 标签筛选
  • 批量重命名(≤100)、复制到…、移动、删除带进度
  • 星标收藏、标签、最近上传

上传

拖拽 / 批量 / 文件夹上传,进度、速度、ETA 实时显示,失败重试,冲突二选一。

  • R2 ≥10MB 自动分片续传(10MB/片,刷新后续传)
  • 大文件预签名直传,不经过 Worker 中转
  • SHA-256 秒传,含跨后端拷贝

下载

单文件 ticket 直链(15 分钟有效);多文件走下载清单,先测速再分批下。

  • 真实文件测速 4MB×2 轮,并发 / 批次间隔可调
  • 单文件重试 + 汇总报告,失败行内说原因
  • MEGA 大文件浏览器直连、边下边解密

预览与编辑

点开即看,不用来回下载。

  • 图片灯箱左右翻、音视频 Range 断点播、PDF 内嵌
  • 文本在线改完保存(txt / md 等 ≤1MB)
  • 50MB 以上建议直接下载查看

分享

单个 / 批量建链,一文件可挂多条不同密码与过期的链接。

  • 密码 ≥8 位(大小写+数字),有效期最长 5 年
  • 文件夹可开“允许上传 / 允许编辑”,支持匿名收集
  • 每条链接统计浏览 / 下载次数与最后访问时间

同步与后台任务

关掉网页,服务端照样干活。

  • GDrive / Zoho 增量同步,间隔 5–120 分钟可调
  • 大批量复制 / 移动 / 拉取变后台任务(≤500/批)
  • Cron 每分钟推进 + 保活 pump,开页关页都不断

存储 · 8 种

本地两盘 + 外部六源。

实际生效上限 = 项目限制 ∩ Cloudflare 平台 ∩ 后端官方,三者取最小。点下面按钮筛选。

KV 本地 · 小文件

20MB / 文件 · 默认总量 900MB

Worker 绑定即用。写 1000 次/天,超了次日恢复;写超限自动转存 R2。

R2 本地 · 大文件主力

5GB / 文件 · 默认总量 9000MB

分片续传 + 预签名直传,零出站费。免费 10GB/月,首选大文件盘。

Google Drive OAuth

5GB / 文件(经本站) · 日传 750GB

Client ID / Secret / Refresh Token / 文件夹 ID 四项接入,增量同步。

Zoho WorkDrive OAuth

免费版实际 1GB / 文件 · 直传 100MB

注意选对区域域名(美/欧/印/中)。超 100MB 自动切续传模式。

MEGA 原生 会话续接

64MB / 文件(Worker 内存墙)

邮箱 + 会话 ID + 主密钥(站内小工具生成一次)。实时读取,无需同步。

MEGA 中转 WebDAV 桥接

5GB / 文件 · 无 64MB 墙

自托管 MEGAcmd / mega-webdav 桥接后填地址,零加解密透传。

Backblaze B2 S3 兼容

5GB / 文件 · 默认总量 9000MB

Key ID + Application Key + Bucket。上传免费,出站月均 3 倍内免费。

S3 / WebDAV 通用

5GB / 文件 · 按服务商空间

S3:Endpoint + Bucket + Key(Tigris 已实测)。WebDAV:pCloud / Koofr / InfiniCloud 已实测,Nextcloud / 群晖照填即用。

单文件上限速查(实际生效值)
后端单文件总量 / 日量超限表现
KV20MB默认 900MB · 写 1000 次/天400 / 413 / 429 次日恢复
R25GB默认 9000MB · 无日 GB 上限413(全局满)
Google Drive5GB(经本站)日传 750GB/用户403 / 429,等 24h
Zoho免费版 1GB无日上限,按套餐空间400 切续传 · 507 空间满
MEGA 原生64MB免费 20GB 起400 换中转或 R2/B2
B2 / S3 / WebDAV5GB按桶 / 账号空间413 配额满 · 4xx 填表错

架构

一个 Worker,一套适配器。

前端原生 JS(无构建),后端 ESM 全跑 Web 标准 API。新增存储只需加一个适配器。

浏览器 / PWA
原生 JS · 无 import · 离线壳
Worker 入口
公开路由 → 鉴权 / CSRF / 限流 → 分发
Cron · 每分钟
清理 + 同步 + 任务接力(25s 预算)
D1 元数据 · 唯一真相源
KV / R2 本地盘(可选绑定)
适配器 ×8 kv r2 b2 s3 webdav gdrive zoho mega

前端

src/frontend 18 个文件,全靠 window.* 协作;src/static/style.css 是唯一真相样式源。

后端

src/worker 约 45 个 ESM 模块,导入一律带 .js 后缀;D1 访问经重试封装,慢查询 >500ms 告警。

数据

文件内容不进 D1,只存元数据;配额按后端分列记账,写即失效缓存(≤20s 延迟)。探针:GET /api/health。

安全

默认就锁好。

  1. 密码 PBKDF2-HMAC-SHA256 1 万次免费计划 10ms 上限,不调高;5 次失败锁 15 分钟。
  2. 自实现 HS256 JWT(7 天)Bearer 优先、HttpOnly Cookie 兜底;严禁 URL 传 token,下载用一次性 ticket(15 分钟)。
  3. CSRF 双重校验变更请求 X-CSRF-Token == jti + Origin / Sec-Fetch-Site 校验;登出写黑名单。
  4. 密钥不落盘JWT_SECRET / TICKET_SECRET 只经部署脚本写入 Secrets;MEGA 凭据 AES-GCM 加密存库。

部署

两条路,二选一。

完整步骤见仓库 docs/01-部署指南.md;下面是速览。

A · 脚本一键部署 推荐

Linux / macOS / Windows 有终端。依赖只有 curl(缺 jq 自动装)。

./scripts/linux/deploy.sh
scripts/windows/deploy.bat
  • 自动建 D1 / KV / R2、初始化表、拼接前端、上传 Worker
  • 写 Secrets、开子域、配 Cron(*/5)并回读校验
  • 升级保留数据:UPGRADE=1 … --upgrade

B · 手动网页部署 零安装

只会用浏览器也行,全程点鼠标,约 7 步。

  1. 复制 scripts/single/worker-single.js(Raw 全选)
  2. Cloudflare 建 Worker → Edit code 粘贴部署
  3. 建 D1 + KV,绑定变量名 DB / KV(大小写敏感)
  4. 加两条 Secret:JWT_SECRET / TICKET_SECRET(值不同)
  5. 打开网址设 owner(密码 ≥12 位,含大小写+数字+特殊字符)
  6. 配 Cron:* * * * *,用 /api/health 验证心跳

冒烟顺序

GET /api/health → bootstrap-status → setup / login → files/list?parentId=root。进管理后台接外部存储前,先确认 lastCronAt 有心跳。

问答

先看这里,再提问。

KV 和 R2 选哪个存文件?

≤20MB 任意盘都行;大文件、分享热门文件走 R2(分片续传、零出站费)。只绑 D1 不绑 KV 也能打开,但根目录没有可写的本地盘。

MEGA 为什么提示 64MB 上限?

这是 Worker 内存墙,不是 MEGA 官方限制。超 64MB 请用 MEGA WebDAV 中转(回 5GB 硬顶),或换 R2 / B2。

关掉网页后速度变慢,是 bug 吗?

不是。开页时轮询一直在推进,关页后只剩 Cron 每分钟一次。管理后台生成保活 Token,用外部定时器每 30–60s 调一次 /api/jobs/pump 即可接近开页速度。

免费计划够用吗?

个人用够。注意三块天花板:Worker 请求体 100MB、大文件走直传/MPU 绕开;KV 写 1000 次/天;D1 单库 500MB(只存元数据,基本碰不到)。

分享链接安全吗?

token 存哈希不存原文;密码 ≥8 位;过期最长 5 年;输错多次锁定。每条链接有浏览/下载统计,可随时撤销。

升级会丢数据吗?

不会。脚本用 --upgrade 只覆盖代码;手动重贴 worker-single.js 即可。数据库启动时自动迁移,无需手动建表。

更新

最近变了什么。

2026-10 中旬 · v3.0.0

8 种存储齐了(新增 B2 / S3 / WebDAV / MEGA);星标、标签、批量重命名、最近上传;复制/拉取变后台任务,关页接着跑;MEGA 浏览器直连下载;同步间隔与 Cron 优先级可调。

2026-10-04

图片灯箱、音视频直播、PDF 内嵌、文本在线改;搜索定位到目录;一文件多分享链接;新增“复制到…”;上传冲突二选一、下载单文件重试。

2026-09-06 · v3.0.0 单用户

多用户/邀请码/共享空间下线,只剩一个 owner(无限配额);首页变盘符视图;数据库自动迁移,老管理员直接沿用。

这个介绍页怎么上线?(Cloudflare Pages)

本目录 pags-index/ 就是纯静态站:index.html + styles.css + app.js,零依赖、无构建。两种上线方式:

npx wrangler pages deploy pags-index --project-name=clouddrive-intro

或 Dashboard → Workers & Pages → Create → Pages → Upload assets,把 pags-index 文件夹直接拖进去。后续改文字只改 index.html,改样式只改 styles.css,重新上传即生效。