Lazy loaded image
FlareDrive-R2:基于 Cloudflare R2 的免费网盘搭建指南
字数 1835阅读时长 5 分钟
2025-12-3
2025-12-3
type
status
date
slug
summary
tags
category
icon
password
菜单级别
Place
Verification
Owner
FlareDrive-R2 是基于 Cloudflare R2 + Pages 构建的在线网盘系统,支持文件上传/下载/分享、多用户权限管理、目录级访问控制和静态文件托管。完全免费,无需购买服务器。
📌 本项目修改自 Cloudflare-R2-oss,实现了更加美观的前端页面。如果有功能方面的需求,请在上游仓库提出。

🌟 项目特性

  • 完全免费:基于 Cloudflare R2 免费额度(每月 10GB 存储 + 10GB 流量)
  • 文件管理:支持文件上传、下载、在线预览、分享
  • 权限控制:多用户权限管理,目录级访问控制
  • 静态托管:可作为静态文件托管服务
  • 美观界面:优化的前端页面设计

🚀 快速部署

前置要求

  • Cloudflare 账号
  • 已开通 R2 服务(免费计划即可)
  • GitHub 账号

部署步骤

步骤 1:创建 R2 存储桶

  1. 前往 Cloudflare 控制台,进入 R2 Object Storage
  1. 点击「创建存储桶」,输入存储桶名称(建议全小写,如 my-drive
  1. 创建完成后,进入存储桶的「设置」页面
  1. 在「公共访问」区域,点击「允许访问」启用公开访问
  1. 复制「公共存储桶 URL」,格式类似:https://pub-xxxxxxxx.r2.dev
⚠️ 安全提示:仅启用「公开访问」,不要开启「公开写入」权限,否则任何人都可以向你的存储桶上传文件。

步骤 2:部署 Pages 应用

  1. Fork 项目仓库:前往 FlareDrive-R2 并 Fork 到你的 GitHub 账号
  1. 创建 Pages 项目:前往 Cloudflare 控制台
      • 重要:默认会显示创建 Worker 的界面,不要点击上方的选项
      • 向下滚动到页面底部,找到「Looking to deploy Pages? Get started
      • 点击「Get started」进入 Pages 创建流程
notion image
  1. 连接 Git 仓库
      • 点击「连接到 Git
      • 选择你刚才 Fork 的仓库
      • 保持默认的构建设置
      • 点击「保存并部署
💡 提示:第一次构建完成后页面可能无法正常显示,这是正常现象,需要继续配置环境变量。

步骤 3:配置环境变量

  1. 在 Pages 项目页面,进入「设置」→「环境变量
  1. 添加以下环境变量(点击「添加变量」):
变量名
示例值
必填
说明
PUBURL
✅ 必填
R2 公共存储桶地址
admin:123456
*
✅ 必填
管理员账号,格式为 用户名:密码
GUEST
public/
❌ 可选
游客写入的默认目录
user1:123456
user1/,shared/
❌ 可选
普通用户及其可写入目录,支持多个目录,格式一致
环境变量配置说明
  • PUBURL:必须配置为步骤 1 中获取的 R2 公共存储桶 URL
  • 管理员账号:变量名格式为 用户名:密码,值设置为 * 表示拥有所有权限
  • 普通用户:变量名格式为 用户名:密码,值为该用户可访问的目录列表(逗号分隔,以 / 结尾)
  • GUEST:可选,设置游客可写入的默认目录
权限配置技巧
  • 使用 * 作为变量值表示拥有所有目录权限
  • 目录名必须以 / 结尾
  • 多个目录用逗号分隔,不要在开头或结尾添加多余逗号
  • 错误示例:,dir1/, 会导致权限配置错误
⚠️ 重要提示:请勿开启 R2 存储桶的公开读写权限!否则你的存储资源可能会被恶意刷爆。

步骤 4:绑定 R2 存储桶

  1. 在 Pages 项目设置页面,点击「函数」→「R2 存储桶绑定
  1. 点击「添加绑定
  1. 变量名填写:BUCKET(必须是这个名称)
  1. 选择你在步骤 1 创建的 R2 存储桶
  1. 点击「保存

步骤 5:重新部署

  1. 进入 Pages 项目的「部署」标签页
  1. 点击右上角的「创建部署
  1. 选择「生产环境」并确认部署
  1. 等待部署完成后,访问 Pages 提供的域名即可使用

⚙️ 自定义配置

绑定自定义域名

  1. 在 Pages 项目设置中,进入「自定义域
  1. 点击「设置自定义域
  1. 输入你的域名(如 drive.example.com
  1. 按照提示在 DNS 服务商处添加 CNAME 记录
  1. 等待 SSL 证书自动配置完成

修改前端样式

如需自定义界面,可以修改以下文件后重新提交到 Git:
1. 背景图片
编辑文件:assets/App.vue
2. 页脚链接
编辑文件:assets/Footer.vue
提交修改后,Cloudflare Pages 会自动触发重新部署。

🔧 故障排查

问题 1:页面无法访问或显示空白

可能原因
  • R2 存储桶未绑定或绑定变量名错误
  • 环境变量 PUBURL 配置错误
解决方法
  1. 检查 R2 存储桶绑定,确保变量名为 BUCKET
  1. 检查 PUBURL 是否正确,格式应为 https://pub-xxx.r2.dev
  1. 重新部署项目

问题 2:文件上传失败

可能原因
  • 用户没有目标目录的写入权限
  • 目录权限配置错误
解决方法
  1. 检查环境变量中的用户目录配置
  1. 确认目录名以 / 结尾
  1. 检查目录列表中没有多余的逗号

问题 3:样式或功能更新后未生效

解决方法
  1. 清除浏览器缓存(Ctrl + Shift + Delete)
  1. 确认修改已提交到 GitHub 仓库
  1. 在 Pages 控制台手动触发重新部署
  1. 使用无痕模式测试

问题 4:登录后仍无法上传

可能原因
  • 环境变量格式错误
  • 用户目录配置缺失
解决方法
  1. 检查用户名密码格式:username:password
  1. 检查用户目录变量名格式:username_DIRS
  1. 确保至少配置了一个可写目录

📚 相关资源

💡 使用建议

  1. 安全性
      • 使用强密码作为管理员密码
      • 定期更换密码
      • 不要将敏感文件存储在游客可访问的目录
  1. 成本控制
      • 免费计划每月 10GB 存储 + 10GB 流量
      • 超出部分按量付费,注意监控用量
      • 建议设置用量告警
  1. 性能优化
      • R2 存储桶选择离用户较近的区域
      • 大文件建议启用分片上传
      • 使用自定义域名可以更好的管理缓存

通过 FlareDrive-R2,你可以利用 Cloudflare 的免费服务快速搭建一个功能完善的个人网盘系统,支持多用户、权限控制、文件分享等功能,完全无需购买服务器或付费存储服务。
上一篇
Python 字符串格式化完全指南
下一篇
OpenWrt SSH 连接错误解决方案:no matching host key type found