目 录CONTENT

文章目录

OneDrive在线网盘搭建

米尔嘉
2023-07-07 / 0 评论 / 3 点赞 / 271 阅读 / 1,444 字 / 正在检测是否收录...
温馨提示:
本文最后更新于 2024-01-23,若内容或图片失效,请留言反馈。部分素材来自网络,若不小心影响到您的利益,请联系我们删除。

OneDrive网盘开源地址:https://github.com/spencerwooo/onedrive-vercel-index
OneDrive文档地址:https://ovi.swo.moe/zh/docs/getting-started

OneDrive public directory listing, powered by Vercel and Next.js

简短教程

这是一个简短的构建你自己的 onedrive-vercel-index 的指导。

  1. Fork 此项目。
  2. 将 site.config.js 里的 userPrincipleName 改为你的微软账户邮箱。
  3. 将 site.config.js 里的 baseDirectory 修改为你要分享的文件夹路径。
  4. 根据你的 OneDrive 版本示情况修改 api.config.js。
  5. 将你的项目导入到 Vercel 并 添加 Upstash 插件 以更方便地设置 REDIS_URL 环境变量。
  6. 部署,并享受! 🎉

部署完成后的项目会引导你进行 OAuth 步骤,并自动将所需的凭证存储到 Redis 数据库里。这就是我们要做的全部事情!

立即上手

使用 onedrive-vercel-index 来共享、预览你的 OneDrive 里的文件、视频、音频、文档,并提供下载。

onedrive-vercel-index 本质上就是由 Next.js 构建的模板,你可以将其免费部署在 Vercel、Netlify 或者其他托管平台上。下面我们将 完全从头开始 创建你自己的 onedrive-vercel-index。

Fork 此项目。

将此项目 Fork 到你自己的 GitHub 账户中,因为你会需要维护一个包含你自己配置的项目。

修改设置

有些设置是需要修改的。项目包括两个配置文件,分别是 config/site.config.jsconfig/api.config.js。前者是用来定制你的网页的,后者那个是用来定义 API 参数的。

客制化网站

请根据自身情况修改config/site.config.js

  • userPrincipalName - 是用来在 OAuth 步骤时认证你的个人信息的。通常是你的 微软账户邮箱。
  • baseDirectory - 是你要分享的 OneDrive 目录。你必须保证此目录有效且与此参数一致。(你可以直接在 OneDrive 内创建一个叫做 Public 文件夹,并将此项设置为 /Public。)

20240123023947

将 site.config.js 里的 userPrincipleName 改为你的微软账户邮箱。
将 site.config.js 里的 baseDirectory 修改为你要分享的文件夹路径。
根据你的 OneDrive 版本示情况修改 api.config.js。

将你的项目导入到 Vercel 并 添加 Upstash 插件 以更方便地设置 REDIS_URL 环境变量。

在 Vercel 导入 你自己的 onedrive-vercel-index GitHub 项目,并进行以下设置:

  • 修改 Build command 为 pnpm build.
  • 修改 Install command 为 pnpm install.

然后点击部署,Vercel 将会下载你的项目并进行部署。这次部署有可能会失败,这是因为我们还没有设定 REDIS_URL 环境变量。这就是我们接下来要做的。

连接到 Redis

创建一个 Redis 数据库,并且将数据库的访问链接填写到 Vercel 的 REDIS_URL 环境变量里。Redis 数据库是用于存储在 OAuth 时获取的 access_tokens 与 refresh_tokens 的。

  • 推荐使用 Upstash ,它完全免费,并且与 Vercel 深度合作,详情请参考 Vercel Integration。(请忽略最后一步时让你 Create Your Redis Client ,onedrive-vercel-index 已经为你处理好了)。
  • 你可以使用你自己的 Redis 数据库,只要有 Vercel 能用的访问链接就行。

无论你用什么方式,你应该在 Vercel 的 REDIS_URL 环境变量里填好一个类似这样的 Redis URL:

redis://:xxx...@some-thing-like-35533.upstash.io:35533

如果你为 Redis 数据库启用了 传输加密

rediss://:xxx...@some-thing-like-35533.upstash.io:35533

重新部署

最后,重新进行一次部署。并在部署完成后访问 Vercel 提供的链接,onedrive-vercel-index 将会引导你进行 OAuth 认证。你也可以在 Vercel 自定义访问链接,详情请参考 自定义域名

进行认证

参考:https://ovi.swo.moe/zh/docs/getting-started#进行认证

访问你的 onedrive-vercel-index ,如果你从未进行认证,OAuth 认证将会自动开始。

第一步 - 准备工作

20240123025148
检查此页面上的参数是否正确,尤其是 client_id 与 client_secret (加密的),他们应该与你的项目里的一致。你还要检查一下 API 权限,应该只需要这三个:

  • user.read: 在进行 OAuth 时认证你的身份,防止某些人通过重新认证雷普你的项目。
  • files.read.all: 用于访问你的 OneDrive 的文件
  • offline_access: 就是……用来离线访问 🙃
    如果一切都准备好了,就来到第二步。如果有些什么差错,检查你的 config/api.config.js 然后重新部署。
第二步 - 获取认证码

20240123025156

点击链接,你将会进入一个新标签页并进行登录。请确保你登陆的账户与你在 config/site.config.js 的 userPrincipalName 里设置的一致。

完成登录后,你将会跳转到 http://localhost ,尽管它显示无法访问,你只需要复制地址栏中的地址然后粘贴到第二步的输入框里。onedrive-vercel-index 会自动识别用于获取 access_token 与 refresh_token 的认证码,然后点击 Get tokens 就行。
20240123025210

20240123025203

第三步 - 获取凭证

20240123025116
你只需要等待几秒钟,页面上就会显示成功提示以及几行凭证,请点击 Store tokens ,你的凭证就会保存到 Redis 数据库里。
最后,你将会跳转到你全新的 onedrive-vercel-index 。

参考文章

3

评论区