把 onedrive 部署到 serverless,作为你的图床、共享网盘
项目地址:edge-onedrive, 本博客大部分文章里的图片都是使用该项目进行托管的,目前代码托管在 codeberg,因为我的 github 账号因为在一个 issue 里口嗨被 hidden 了,已经在申诉了,如果申诉成功会迁移回 github
因为深受国内网盘其害,我在大学的时候就将主力网盘切换到了 OneDrive,在淘宝上买的家庭共享只要30/年就有1TB的存储空间,感觉比很多国内网盘要划算,而且没有限速,利用多线程下载器,轻松能实现满速下载。而且 OneDrive 还提供了 api,从而使其作为图床以及直链文件分享成为了可能。于是我便开发了 edge-onedrive 项目,目标时将 OneDrive 的 api 功能封装部署到边缘函数上,目前已经在 Vercel、Cloudflare、EdgeOne 上得到了验证
https://demo-edge-onedrive.sxl.cc (Cloudflare Worker)
https://demo-edge-onedrive.vercel.app (Vercel)
https://demo-edge-onedrive.gmero.com (EdgeOne)
功能说明
edge-onedrive 目前支持以下功能:
- 图床功能:将一个文件夹作为图床目录,上传的图片可以自动重命名带上宽高信息,方便博客使用,提供一个 npm cli 包来方便接入 typora 等软件
- 列目录,展示文件详情,显示缩略图(如果能获取到),下载文件
- 直链下载,支持自定义过期时间(全局)
- 访客模式,可将文件夹设置为访客模式,访客无需登录即可访问该文件夹下的内容
部署教程
可在项目仓库的 examples 目录下找到各个平台的部署示例,其中 EdgeOne 平台代码会多一些,因为进行了优化,同时利用了它的两套运行时,从而降低直链以及图床的延迟
1. fork 或下载仓库源码
目前仓库托管在 codeberg, 在 .forgejo 下能仓库所跑的 ci 自动部署流程,从而实现多平台部署,不过这属于进阶一点的操作了,感兴趣的可以看一下也很简单
2. 注册微软应用
进入 https://entra.microsoft.com/,选择应用注册 → 新注册,然后按图片填入信息


点击继续后就注册完成了,会进入应用详情页面,记住这里的应用程序ID后面配置环境变量需要,拿个记事本记录一下方便一些

接下来点开证书和密码,创建一个客户端密码,添加完成后一定要复制值,保存到记事本,因为后面你就看不到这个了,这个就是 secret,我们配置要用到。客户端密码截止期限没办法设置永久,快到期的时候新建一个轮转就行了

3. 配置环境变量、部署
系统支持额环境变量配置如下,不同平台的配置途径入口不一定一样,但大差不差,都支持在管理面板设置
| 变量名 | 示例 | 说明 |
|---|---|---|
| CLIENT_ID | 6423o99f-e230-4f5e-ac11-e12aae43a3u8 | 应用注册拿到的应用程序ID |
| CLIENT_SECRET | SDF8Q~JkF3ubyKil-kpL.EioUFAzBieY4xnhU3dS | 创建的客户端密码 |
| ENTRA_ID_ENDPOINT | https://login.microsoftonline.com | 认证节点 |
| GRAPH_ENDPOINT | https://graph.microsoft.com | api节点 |
| CORS_ORIGIN | * | 浏览器跨域 |
| GUEST_DIR | /path | 访客文件夹,留空为不开启 |
| LINK_PROXY | false | 开启直链代理,开启后边缘节点会代理onedrive流量 |
| LINK_EXPIRATION | 2 | sign过期时间,设置为0为不过期 |
| LINK_FORCE_SIGN | true | 强制sign,不允许空sign下载 |
| PIC_DIR | /pic | 图床文件夹,留空为不开启图床 |
以 Cloudflare Worker 为例,它可以在配置文件中配置非敏感的环境变量,编辑源码 examples/cf-worker 下的 wrangler.jsonc 文件,主要修改 name, kv_namespaces 下的 id,以及 vars 环境变量,修改完成后,确保你以及安装了 wrangler,并登录了,然后运行pnpm -F cf-worker exec wrangler deploy 部署,为了确保安全,CLIENT_SECRET 项我们需要去 worker 网页后台设置后重新部署
4. 初始账号配置和后台微软账号认证
部署完成后,我们进入页面,会自动跳转到初始化账号页面,如果没有跳转就点击右上角的设置图标,输入自定义的账号密码,设置成功后会进入设置页面,点击授权 OneDrive 进入授权页,需要注意的是在前面微软应用注册那里的重定向 uri(callback uri) 要与你现在的域名保持一致,比如 https://demo-edge-onedrive.sxl.cc/settings/onedrive/callback , 如果不一致可以进行新增,授权成功后,你就可以点击左上角图标进入主页查看 OneDrive 的文件了