MENU

在 Cloudflare 部署 FODI 后端

2019 年 12 月 23 日 • 阅读: 71590 • 后端

之前写过一个基于腾讯云 SCF 的 OneDrive 列表程序 FODI,现在腾讯云要收费了,每月至少 8 毛钱,虽然不多,但既然 Cloudflare 仍是免费的,不如移植一下,反正只是改改入口。

突然白屏

refresh_token 有效期 3 个月,如突然无法打开,请 重设后端代码计划使用 Github Action 自动更新,还没开始写,请耐心等待。 现已支持自动续期,请展开下方迟到的自动续期查看(如果是初次部署,请阅读完其它部分再看)。

迟到的自动续期

之前,FODI 每过 3 个月要重设后端代码,原因是 Cloudflare Worker 是 Serverless 环境,不支持持久化存储。刚编写 FODI 时,Cloudflare KV 还处于收费状态,如果使用第三方免费存储则担心可用性和延迟问题。考虑过使用 CI 定时更新环境变量但一直没有动工,想着整体重构后一并添加。但现在重构意愿不强了,Cloudflare KV 免费服务也已推出一段时间,于是添加几句代码,让它支持 Token 自动续期。

重设后端代码

首先,打开 部署助手,按照页面上方步骤重设 Worker 代码。

创建 KV 命名空间

保存好代码后,切换到顶部菜单栏的 KV 标签。在 命名空间名称 下方的输入框中输入 FODI_CACHE,随后点击右边蓝色的 添加 按钮。

添加 KV 命名空间

在 Worker 中绑定 KV

转到 FODI Worker 脚本的 设置 页面,点击页面中部 KV 命名空间绑定 项目右侧的 添加绑定 按钮。

添加命名空间绑定

变量名称 下方的输入框键入 FODI_CACHEKV 命名空间 下拉框也选择 FODI_CACHE,最后点击 保存

设定变量名称

添加续期计划任务

转到设置左边的 触发器 面板,点击页面右边蓝色的 添加 Cron 触发器 按钮。

添加触发器

切换到 添加 Cron 触发器 项目的 Cron 标签,在 Cron 下方输入框键入 0 0 1 * *,最后点击右下方蓝色的 Add Trigger 按钮。

保存触发器

验证 Token 是否保存

现在打开你的 FODI 前端等待网页列出文件后,再次进入 KV 面板,点击页面中部 FODI_CACHE 右侧的 查看

查看 KV

当看到 token_data 时,表明代码工作正常,不出意外,以后都不再需要手动续期。

token_data

演示地址

注册 Cloudflare 并创建 Workers

打开 Cloudflare 注册页面,输入 邮箱密码 后点击 Create Account,进入下个页面后直接点击左上角的 CLOUDFLARE 图标进入控制面板主页,不要进行其他操作。

login

进入主页后,点击靠近右下角的 Workers

workers

此时系统会建议你修改子域名,直接点击 Set up,随后点击弹出对话框中的 Confirm

confirm

之后会进入套餐选择页面,页面往下拉,找到 Continue with free,点击它。

continue

完成上述步骤后,系统会发送确认邮件到你的注册邮箱,请自行登录邮箱,找到相关邮件,点击其中的确认链接,完成确认。

上传 FODI 后端

完成邮箱验证后,再次点击左上角的 CLOUDFLARE 图标进入控制面板主页,点击右下角的 Workers

现在点击页面中间你刚刚创建的函数,进入代码编辑界面,随后打开 FODI Deployment Helper,按照指引生成并复制代码,粘贴到下图的代码编辑器中。

continue

填写完毕后,点击页面中下部的 Save and Deploy

部署 FODI 前端

前端部署方法和老文章相同,见 通过 Github Pages 部署前端 章节。

唯一不同的是 SCF 网关地址 要换成 Cloudflare 的,右击下图箭头,选择 复制链接地址 即可获得。

copy

最后如果这个项目帮到了你,不妨到 Github 为我点颗星。

TG 大佬群 QQ 大佬群

最后编辑于: 2021 年 11 月 29 日
返回文章列表 文章二维码
本页链接的二维码
打赏二维码
添加新评论

Loading captcha...

已有 122 条评论
  1. world world   Mac OS X 10.15.7  Google Chrome 130.0.0.0

    你好, 请问这个支持 vercel 部署吗

    1. LOGI LOGI   Windows 10 x64 Edition  Google Chrome 122.0.0.0

      @world前端可以直接在 vercel,后端必须在 cloudflare,但可以用 vercel 反代

  2. mihu mihu   Windows 10 x64 Edition  Google Chrome 126.0.0.0

    原用index程序不知道为什么出错了,更换为此程序,但是原来的文件记录不太好改动,稍微改动了部分代码。功能是直接使用url/folder/file下载文件而不用加上?file=,但是目前缺点是如果文件夹包含.可能无法成功访问,但是对个人来说已经很满足了。在此感谢作者的作品,并希望这个微小改动能帮助到有相同需求的人。

    1. mihu mihu   Windows 10 x64 Edition  Google Chrome 126.0.0.0

      @mihu以下是代码
      async function handleRequest(request) {
      let queryString, querySplited, requestPath;
      let abnormalWay = false;
      if (request.url.includes("?")) {

    2. mihu mihu   Windows 10 x64 Edition  Google Chrome 126.0.0.0

      @mihu queryString = decodeURIComponent(request.url.split("?")[1]);
      } else if(request.url.split("/").pop().includes(".")) {
      let tmppath = request.url.split("://")[1] || "";

    3. mihu mihu   Windows 10 x64 Edition  Google Chrome 126.0.0.0

      @mihu queryString = `file=/${tmppath}`;
      abnormalWay = true;
      }
      中间不变
      if ((querySplited && querySplited[0] === "file") || abnormalWay) {

  3. 可以出一个可以在Pages上部署的吗 Workers 的域名在大陆地区用不了

    1. LOGI LOGI   Windows 10 x64 Edition  Google Chrome 122.0.0.0

      @没用的小废鼠抱歉,没时间维护了,worker 绑定域名可能可以用

    2. @LOGI我找到了一个不错的解决办法(比较浪费) 用 pages的函数转发到 workers

    3. LOGI LOGI   Windows 10 x64 Edition  Google Chrome 122.0.0.0

      @没用的小废鼠@(大拇指)

  4. lxy lxy   Windows 10 x64 Edition  Google Chrome 115.0.0.0

    你好,那个 FODI Deployment Helper选择其他版本(我是微软个人onedrive应该就选其他版本吧),点击登陆后就跳转到无法访问,localhost已断开连接了,请问大佬要怎么解决

    1. lxy lxy   Windows 10 x64 Edition  Google Chrome 115.0.0.0

      @lxy我没有看全使用说明,我的问题,如果看到这个评论,就删掉吧,有点丢人#(狂汗),不好意思

  5. Tufei Tufei   Windows 10 x64 Edition  Google Chrome 108.0.0.0

    大佬,现在还能部署么,我世纪互联api挂了,重新用国际版od,生成配置,粘贴到cfworks,但是打开是cf的cdn错误页面,挂科学上网访问的@(乖)

    1. LOGI LOGI   Windows 10 x64 Edition  Google Chrome 108.0.0.0

      @Tufei可以

  6. Clown Clown   Windows 10 x64 Edition  Google Chrome 107.0.0.0

    AADSTS9002313: Invalid request. Request is malformed or invalid.
    获取代码提示这个,仓库的代码放进去部署提示错误。。

  7. min min   Windows 10 x64 Edition  Google Chrome 104.0.5112.81

    创建weorker后,worker编辑不了啊,不知道咋回事#(期待)

  8. OOOh OOOh   Windows 10 x64 Edition  Google Chrome 104.0.0.0

    为什么现在 FODI Deployment Helper 点击获取代码后就白屏了呢?

    1. LOGI LOGI   Windows 10 x64 Edition  Google Chrome 104.0.0.0

      @OOOh挂下 t

  9. joye joye   Windows 10 x64 Edition  Google Chrome 102.0.0.0

    replayURL这里到底应该填啥呢

  10. joye joye   Windows 10 x64 Edition  Google Chrome 102.0.0.0

    redirectUri 24行报错了

  11. 臭粑粑大朱 臭粑粑大朱   Windows 10 x64 Edition  Google Chrome 101.0.4951.67

    现在是不是不好使了, 我看本文链接 你的免费网盘 也一样打不开了!@(乖)

  12. Cookie987 Cookie987   Windows 10 x64 Edition  Google Chrome 101.0.4951.41

    大佬, 我用 FODI Deployment Helper 登录后点击生成代码后网页变为空白, 请问如何解决
    浏览器: 版本 101.0.4951.41(正式版本) (64 位)

    1. 啊哈 啊哈   Windows 7 x64 Edition  Google Chrome 101.0.4951.67

      @Cookie987挂t子就行了

  13. james james   Windows 10 x64 Edition  Google Chrome 98.0.4758.102

    Hello Logi. first of thank for beautiful site. getting Error 1101 while deploy on cloudflare
    please help
    不會寫中文

    1. LOGI LOGI   Windows 10 x64 Edition  Google Chrome 98.0.4758.102

      @jamesThank you for your love but I am too busy to help you. You can try to translate the webpage to your native language.

  14. ooooooh ooooooh   Windows 10 x64 Edition  Google Chrome 97.0.4692.99

    已经成功安装,膜拜大佬!

  15. 8854 8854   Windows 7 x64 Edition  Google Chrome 93.0.4577.42

    大佬想问一下Fodi怎么设置链接能直接指向某个文件夹下的某个文件

  16. 8854 8854   Windows 7 x64 Edition  Google Chrome 93.0.4577.42

    请问大佬 Cloudflare网关地址如何查看

    1. LOGI LOGI   Windows 10 x64 Edition  Google Chrome 96.0.4664.45

      @8854最后一张图箭头指的就是

  17. PYX PYX   Windows 10 x64 Edition  Google Chrome 95.0.4638.69

    想问一下大佬为啥部署好了之后显示的还是您的demo呢...
    根目录底部显示
    console.log('FODI DEMO');

    1. LOGI LOGI   Windows 10 x64 Edition  Google Chrome 96.0.4664.45

      @PYXworker地址没换对吧

  18. ChirmyRam ChirmyRam   Windows 10 x64 Edition  Google Chrome 96.0.4644.0

    我现在准备重设后端来实现续期,使用部署助手重新获取的代码粘贴进wokers预览会报错,控制台报错:
    ```
    worker.js:177 Uncaught (in promise) TypeError: Cannot read properties of undefined (reading 'length')
    at fetchFiles (worker.js:177)
    at async handleRequest (worker.js:58)
    fetchFiles @ worker.js:177
    Promise.then (async)
    (anonymous) @ worker.js:16
    Uncaught (in response) TypeError: Cannot read properties of undefined (reading 'length')
    ```
    请问这个如何解决呢?

    1. ChirmyRam ChirmyRam   Windows 10 x64 Edition  Google Chrome 96.0.4644.0

      @ChirmyRam抱歉打扰~我选错了公开文件夹@(小乖),感谢大佬,体验很流畅。#(赞一个)

  19. 一只小天依 一只小天依   Windows 10 x64 Edition  Google Chrome 92.0.4515.131

    为啥我的到了FODI Deployment Helper登录那块浏览器提示localhost 已拒绝连接,这是怎么回事?

  20. Su Su   iOS 13.6  Mozilla Compatible

    感谢,折腾了一会儿。成功了。@(哈哈)