使用 Cloudreve 挂载 Backblaze B2 私人网盘全记录(含踩坑与解决方案)
侧边栏壁纸
  • 累计撰写 10 篇文章
  • 累计收到 0 条评论

使用 Cloudreve 挂载 Backblaze B2 私人网盘全记录(含踩坑与解决方案)

Momoko
2025-06-11 / 0 评论 / 2 阅读 / 正在检测是否收录...

Cloudreve 是一款功能强大的私有网盘系统,支持多种存储后端,其中包括兼容 S3 的对象存储。Backblaze B2 提供了 S3 Compatible API,非常适合个人用户。

目标是实现:

  • 上传文件至 Backblaze B2
  • Cloudreve 前端支持断点续传、分片上传
  • 使用私有 bucket,保护文件隐私

本文记录本人成功将 Cloudreve 与 Backblaze B2 对接作为私人网盘的完整流程,涉及配置 S3 存储策略、解决分片上传失败、CORS 报错、ETag 缺失等问题。下文默认你已经部署好了 Cloudreve。

一、Backblaze B2 配置

  1. 创建 Bucket: 登录 Backblaze 控制台, 创建私有 bucket。如果启用Default Encryption则被加密的文件将不会出现在未来创建的快照中,也就是说,如果你依赖 snapshots 来备份数据,则这些加密文件不会包含在内。Object Lock保持Disable即可。

  2. 创建应用密钥
    限定该密钥只能访问新创建的 bucket,也可以设置为ALL。授权 Read & Write 权限。其它可选项不管。

  3. 记下生成的keyID、applicationKey

二、Cloudreve 存储策略配置

  1. 在 Cloudreve 管理后台的存储策略配置中,选择存储类型为 AWS S3
    创建策略
  2. 参数填写。Bucket 名称,Endpoint,Region(从Endpoint中截取,例如us-east-005),keyID / applicationKey(使用刚才生成的应用密钥
  3. 其它配置参数保持不变,一路向下!你可能在 CORS policy 这一步遇到问题,先点跳过,解决方法看后面章节。这个时候,你已经初步设置好了 Cloudreve 部分,但你在 Cloudreve 中上传文件时可能报错 Network Error。原因是 Backblaze B2 默认不暴露 ETag header,且未开放 S3 PUT/POST 操作跨域访问。你需要回到 Backblaze 中进行设置

三、CORS 设置(关键!)

为了解决上传出错问题,你需要额外设置。

参考使用 B2 CLI 设置 CORS对应官方文档:Backblaze B2 (S3 兼容)

解决

  1. linux环境下下载并安装 B2 CLI 工具

    # 1. 下载最新版 B2 CLI 二进制文件
    wget https://github.com/Backblaze/B2_Command_Line_Tool/releases/latest/download/b2-linux -O b2
    
    # 2. 添加执行权限
    chmod +x b2
    
    # 3. 移动到系统路径,方便全局调用(可选)
    sudo mv b2 /usr/local/bin/
  2. 登录Backblaze 账户,你需要提前在 B2 控制台创建 Master Application Key 或 具有修改 bucket 权限的 Key(即前文创建的那个)

    b2 authorize-account

    系统会提示你输入:Application Key ID 和 Application Key,登录成功后,B2 CLI 就可以操作你的 bucket。

  3. 应用修改后的 CORS 规则,替换下面为你创建的名称。

    b2 bucket update <bucketName> allPrivate --cors-rules '[{"corsRuleName":"cloudreveCorsUpload","allowedOrigins":["*"],"allowedHeaders":["authorization","content-type","x-bz-file-name","x-bz-content-sha1"],"allowedOperations":["b2_download_file_by_id","b2_download_file_by_name","b2_upload_file","b2_upload_part","s3_put","s3_post","s3_get","s3_delete"],"exposeHeaders":["ETag"],"maxAgeSeconds":3600}]'
  4. 确认修改是否完成

    b2 bucket get <bucketName>

    输出中必须含有"exposeHeaders": ["ETag"]

  5. 立即测试上传,确认:小文件上传无误;大文件(>chunk)自动分片上传成功;中文文件名支持(建议搭配自动重命名)

四、Cloudreve 忘记密码

Cloudreve 忘记密码后重置密码,不用修改数据库。 进入 Cloudreve Docker 容器终端,然后执行指令:

./cloudreve --database-script ResetAdminPassword

接着你的终端/日志中就会出现重置后的密码了

0

评论

博主关闭了所有页面的评论