FODI:用 Cloudflare Workers 零成本搭建 OneDrive 文件列表站

前言

OneDrive 是个好东西 ——Office 365 订阅送了 1TB,存了一堆文件。但有个问题:想把某个文件夹分享给别人,要么发共享链接(暴露自己账号),要么下载下来再传。

FODI(Fast OneDrive Index)解决的就是这个场景。它在 Cloudflare Workers 上跑一个简单的文件列表页,读取你 OneDrive 里的文件,然后以网页形式展示出来。别人打开你的域名,看到的是一个干净的文件列表 —— 可以浏览、下载、预览,但完全不知道背后是 OneDrive。

整套方案完全免费,因为 Cloudflare Workers 的免费额度对个人使用来说绰绰有余。

Cloudflare Workers 免费额度够用吗?

先算账。免费计划:

资源免费额度个人场景够用吗
请求次数100,000 次 / 天够。就算每天 1000 人访问,3 万次 / 月
KV 读取100,000 次 / 天够。文件列表缓存读 KV
KV 写入1,000 次 / 天够。token 续期 + 偶尔刷新缓存
KV 存储1 GB用不完。只存 token 和缓存

坦率讲,Workers 的免费额度对个人项目来说是一个「用不完」的水平。除非你的文件站突然火了,否则不用担心超额。

部署步骤

第一步:OneDrive 授权

FODI 需要访问你的 OneDrive。走的是 OAuth 授权,不需要给密码。

去 Microsoft Azure 应用注册页面创建一个应用,获取 client_idclient_secret。这一步稍麻烦,但跟着官方文档一步步走就好。

关键是在「重定向 URI」里填 http://localhost—— 用于本地获取 refresh token。

第二步:部署到 Cloudflare Workers

先装 Wrangler CLI:

Terminal window
npm install -g wrangler
wrangler login

然后克隆 FODI 项目:

Terminal window
git clone https://github.com/vcheckzen/FODI.git
cd FODI
npm install

配置 wrangler.jsonc,填入你的 OneDrive 凭据和 Cloudflare 账号信息。然后:

Terminal window
wrangler deploy

部署完成。你的文件站已经在 https://fodi.你的域名.workers.dev 上线了。

第三步:绑定自定义域名

Workers 默认域名太长了。在 Cloudflare 控制台 Workers → Triggers → Custom Domains 里绑定一个短域名,比如 files.yourdomain.com

第四步:配置自动续期

FODI 项目内置了 Cron 触发器,定期用 refresh_token 换取新的 access_token。在 wrangler.jsonc 里配置:

{
"triggers": {
"crons": ["*/50 * * * *"]
}
}

每 50 分钟自动续一次。Token 存在 KV 里,不会过期。

功能概览

部署好之后你的文件站支持:

  • 文件列表:按文件夹层级浏览,跟 OneDrive 网页版一样
  • 文件预览:图片、视频、PDF、Office 文档在线预览
  • 文件下载:点击直接下载
  • 加密文件夹:设置密码保护特定文件夹
  • WebDAV:支持 WebDAV 协议挂载到本地
  • 搜索:按文件名搜索

界面简洁但该有的都有。不是 OneDrive 网页版的翻版,就是一个干净的索引页。

跟 alist 比呢?

alist 是另一个流行的文件列表方案,功能更多、支持更多存储后端。但 alist 需要一台服务器(或者至少一个容器),而 FODI 跑在 Workers 上,零服务器成本。

选哪个取决于你的需求:

FODIalist
部署Cloudflare Workers需要服务器 / Docker
费用免费需服务器成本
存储后端仅 OneDriveOneDrive/阿里云盘/本地等 20+
功能基础列表 + 预览更全(上传/管理/多用户)

如果你只需要一个简单的 OneDrive 文件分享页面,FODI 是最省事的方案。如果需要管理多个网盘或者多人协作,alist 更合适。

总结

FODI 的魅力在于极致简单:OneDrive 授权 + Wrangler 部署 = 一个能用的文件列表站。不需要服务器、不需要数据库、不需要维护。

Cloudflare Workers 的免费额度让这个方案可以长期零成本运行。对于「分享一些文件给朋友」「把自己 OneDrive 当简易网盘用」这种场景,没有比这更省事的方案了。