OneDrive-vercel-index 搭建记录

介绍

摘自 项目 README

Showcase, share, preview, and download files inside your OneDrive with onedrive-vercel-index

- Completely free to host 💸
- Super fast ⚡ and responsive 💦
- Takes less than 15 minutes to setup ⏱️
- Highly customisable ⚒️

🍌 More importantly, we are pretty (●'◡'●)

创建 Office 365 E5 开发者账号并设置子账号

  • 1. 注册用于加入 开发者计划 的微软账号,并启用两步验证
  • 2. 输入公司信息(注意!这里国家/地区一栏最好写中国大陆或香港等,数据中心位置将会根据填写区域走),需要手机号验证
  • 3. 注册 E5 全局管理账号,需要手机号验证(可与上面的开发者账号用同一个号码),同时可能会遇到谷歌验证码
  • 4. 可以预配置 15 个子账号并统一设置初始密码,后续直接修改信息即可使用
  • 5. 用全局管理账号登录 Office ,菜单中选择 Admin 打开 admin center,转到 这里 修改 OneDrive 最大空间为 5T
# 使用全局管理账号登录 SharePoint
Connect-SPOService -Url https://{NAME-HERE}-admin.sharepoint.com
# 修改用户空间大小
Set-SPOSite -Identity https://{NAME-HERE}-my.sharepoint.com/personal/{DOMAIN-HERE}_onmicrosoft_com -StorageQuota 5242880
  • 6. 按需激活全局管理和子账号的 OneDrive
  • 7. 准备部署 oneindex / pyone / onemange 等程序,确保触发 API 完成订阅续订~~

部署 onedrive-vercel-index

  • 注册 Vercel 和 upstash 账号
    • Vercel: Serverless 运行 Next.js,用于部署网站前端
    • upstash: Serverless 数据库,用于网站的 Redis 数据库
  • 安装 Vercel CLI
    • 如果本地没有 npm/yarn,可以安装 nvm ,方便使用各个版本的 npm(n 的话需要 node 支持,为了避免 node_modules 地狱不推荐)
  • 阅读 参考文档
  • 将项目 git clone 到本地或直接在 GitHub 上 fork
    • 由于 Vercel 只能访问公开仓库,访问私有仓库时会有一些限制,于是尝试本地部署
    • 然而本地部署一直失败,查看 Vercel 日志后出现与 Discussion 一样的 error
      • ERROR [ioredis] Unhandled error event: Error: connect ECONNREFUSED 127.0.0.1:6379 at TCPConnectWrap.afterConnect [as oncomplete]
    • 最终还是选择 fork 搭建
  • 修改 vercel.json,关闭 Vercel-bot 的烦人提示
  • 修改 site.config.js
    • userPrincipalName: 出于隐私考虑,选择在 Vercel 的环境变量里创建 NEXT_PUBLIC_USER_PRINCIPLE_NAME
      • 注意 site.config.js不要注释掉 userPrincipalName: process.env.NEXT_PUBLIC_USER_PRINCIPLE_NAME || '', 这一行,而是像前文这样将邮箱的位置改成空值,否则 Vercel 部署时无法应用环境变量
    • icon: 自定义网页 ,同时替换 GitHub /public/icons 目录的 favicon。
    • 其余参照文档即可
  • 修改 api.config.js
    • 为了 Office 账号安全性(不暴露全局管理员账号), 自行创建 client id 与 secret
    • 根据 OneDrive 国际版/世纪互联,可视情况修改 API
  • 导入 Vercel,修改 build 参数
  • 使用 与 Vercel 深度集成的 Upstash
    • onedrive-vercel-index 会自动创建 REDIS_URL 等环境变量
    • 同样,Redis 数据库默认开启了传输加密
      • 格式: rediss://:{PASSWORD}@{ENDPOINT}:{PORT}
      • 样例: rediss://: xxx...@some-thing-like-35533.upstash.io:35533
  • 重新部署 preview,确认可以进入 OAuth 认证页面
  • 自定义域名
    • 在域名商或者 CDN 处添加 CNAME 验证域名所有权
    • Vercel 上设置 308 重定向
  • 根据网站实际情况,可能需要暂时禁用子域名的 cache
    • Cloudflare 可在域名管理中开启 Development Mode,关闭缓存来即时确认网站部署情况
  • 部署 prod,进行 OAuth 认证

定制化

  • 受密码保护的文件夹
    • 有个看起来有点反人类的设计: 输入访问密码之后,可以看到 .password 文件,虽然逻辑上没什么问题,但这个文件应该隐藏了?
    • 尝试通过文件搜索找到 .password,看来只会查找文件名,而不能搜索文件扩展名。
    • 在 SpencerWoo 的实例测试找到了,不过访问 .password 文件本身也需要访问密码,那应该没什么问题~
  • 屏蔽私密文件夹的文件搜索
  • 链接测试
    • 原来 OneDrive 里就可以添加链接,那就只是一个很普通的功能
  • Replit 反代
  • 自定义字体
  • 引入更多网盘列表
  • 尝试合并 iRedScarf/onedrive-vercel-index

Vinfall's Geekademy

Sine īrā et studiō