前言#
由于我有一些分享文件的需求,而市面上的大部分云盘都不符合我的预期。在使用 CDN 过程中了解“赛博活佛” Cloudflare 后知道了他们提供的免费的对象储存 R2,发现这个十分符合我的需求。它有 10G/mon 的免费存储额度,并且我分享的范围很小,所以对我来说是一个免费的存储对象。
开始之前#
R2介绍#
Cloudflare R2 Storage allows developers to store large amounts of unstructured data without the costly egress bandwidth fees associated with typical cloud storage services.
Cloudflare R2 Storage 允许开发人员存储大量非结构化数据,而无需支付与典型云存储服务相关的昂贵的出口带宽费用。
选择它主要是因为它对于我来说是免费的,很适合我们这些个人开发者和小型企业。不像国内的一些 OSS 方案提供商,看着每个月使用 OSS 费用很便宜,但是使用后才发现出站的流量和存储空间是独立与使用费的。每个月只要存的有东西就需要支付一定存储数据或者有外网访问就需要额外支付。而 Cloudflare R2 储存数据量小于 10G/mon ,每个月数据修改量小的话就是免费的,向外网传送数据也是免费的。官方有一个价格计算器,用来比较R2和亚马逊S3对象存储价格。以下是 Cloudflare R2 的免费套餐定价规则:
项目 | 免费额度 |
---|---|
存储 | 10 GB / 月 |
A 类操作 | 100 万个请求 / 月 |
B 类操作 | 1000 万个请求 / 月 |
出口(数据传输到 Internet) | 免费 |
Cloudreve介绍#
Cloudreve 是一个可以自定义存储策略、虚拟文件系统、离线下载、分享等功能的网盘系统。您可以通过多种设备和应用访问您的文件,也可以创建分享链接来控制文件的访问权限。
选择 Cloudreve 的主要原因是它支持 S3 协议,并且支持几乎完整地 Cloudflare R2 API,还有丰富的插件,可以满足大部分需求。
准备工作#
- 一个可以正常访问 Cloudflare dash 的网络环境
- 一个域名,并且需要将域名托管到 Cloudflare 上
- 一张外币卡(支持 visa、万事达、运通其中任意一个)
- 一个用来搭建 Cloudreve 的 VPS(我用的是白嫖的一年 Amazon AWS)
搭建 Clourflare R2#
准备 Cloudflare 账号#
首先你需要一个 Cloudflare 账号、一个域名,并且域名需要托管到 Cloudflare 上。如果没有域名的话在后面的 R2 部分公网访问资源就只能使用 CF 提供的子域名,但是会有一定限制,所以不建议使用。
启用 r2.dev 访问时,Internet 上的任何人都可以使用公共 r2.dev URL 查看此存储桶中的对象。但在使用时有速率限制,因此,不建议用于生产。此外,访问和缓存等 Cloudflare 功能无法再使用。
你可以直接点击下面按钮前往 R2 创建界面,如果没有 Cloudflare 账号请先注册并登录,拥有 Cloudflare 账号的话可以直接登录。
开始使用Cloudflare R2创建订阅#
- 登录 Cloudflare 账号后就会直接进入 R2 订阅界面,点击「进入付款详细信息」
- 添加自己的支付方式,然后点击「保存付款信息」
- 接下来会进行卡的验证,请确认自己卡中至少有 $1,点击「继续转到仪表板」进入下一步
创建 R2 储存桶#
- 在左侧菜单栏找到「R2 -> 概述」
- 在右边面板点击「创建储存桶」按钮
- 输入储存桶名称,其他选项默认,然后点击「继续创建储存桶」
这个时候你就已经成功创建储存桶了,接下来转入下一步设置 API tokrn
获取 R2 储存桶的API密钥#
- 回到 R2 主界面,在右侧找到「管理 R2 API 令牌」
- 点击「创建 API 令牌」按钮
- 输入API 密钥名称,默认也行,权限请务必选择选择「管理员读和写」,TTL 选择「永久」
- 点击右下角「创建 API 令牌」 此时会弹出你的 token 等,此页面内容不会再次显示,请务必复制下来保存好
搭建 Cloudreve#
获取 Cloudreve#
你可以在 GitHub Release 页面获取已经构建打包完成的主程序。其中每个版本都提供了常见系统架构下可用的主程序,命名规则为cloudreve_版本号_操作系统_CPU架构.tar.gz
。比如,普通 64 位 Linux 系统上部署 3.0.0 版本,则应该下载cloudreve_3.0.0_linux_amd64.tar.gz
。
启动 Cloudreve#
Linux 下,直接解压并执行主程序即可:
#解压获取到的主程序
tar -zxvf cloudreve_VERSION_OS_ARCH.tar.gz
# 赋予执行权限
chmod +x ./cloudreve
# 启动 Cloudreve
./cloudreve
Cloudreve 在首次启动时,会创建初始管理员账号,请注意保管管理员密码,此密码只会在首次启动时出现。如果您忘记初始管理员密码,需要删除同级目录下的cloudreve.db
,重新启动主程序以初始化新的管理员账户。
Cloudreve 默认会监听5212
端口。你可以在浏览器中访问http://<服务器IP>:5212
进入 Cloudreve。
以上步骤操作完后,最简单的部署就完成了。你可能需要一些更为具体的配置,才能让 Cloudreve 更好的工作,具体流程请参考下面的配置流程。
Nginx 配置反向代理#
由于我使用的 Cloudflare 的 SSL/TLS 完全(严格)加密模式,所以这里我只添加一个 443 端口的反向代理即可。配置文件中的ssl_certificate
和ssl_certificate_key
为证书和私钥没有的话请前往 Cloudflare 的「SSL/TLS -> 源服务器」中进行创建和下载。
server {
listen 443 ssl http2;
server_name yourdomain.com; # 将 yourdomain.com 替换为你的实际域名
ssl_certificate /etc/nginx/ssl/yourdomain.com.cer; # 请替换为你的证书路径
ssl_certificate_key /etc/nginx/ssl/yourdomain.com.key; # 请替换为你的私钥路径
location / {
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $http_host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header Range $http_range;
proxy_set_header If-Range $http_if_range;
proxy_redirect off;
proxy_pass http://127.0.0.1:5212;
}
}
配置进程守护#
Systemd:
# 编辑配置文件
vim /usr/lib/systemd/system/cloudreve.service
将下文 PATH_TO_CLOUDREVE
更换为程序所在目录:
[Unit]
Description=Cloudreve
Documentation=https://docs.cloudreve.org
After=network.target
After=mysqld.service
Wants=network.target
[Service]
WorkingDirectory=/PATH_TO_CLOUDREVE
ExecStart=/PATH_TO_CLOUDREVE/cloudreve
Restart=on-abnormal
RestartSec=5s
KillMode=mixed
StandardOutput=null
StandardError=syslog
[Install]
WantedBy=multi-user.target
# 更新配置
systemctl daemon-reload
# 启动服务
systemctl start cloudreve
# 设置开机启动
systemctl enable cloudreve
管理命令:
# 启动服务
systemctl start cloudreve
# 停止服务
systemctl stop cloudreve
# 重启服务
systemctl restart cloudreve
# 查看状态
systemctl status cloudreve
配置Cloudreve使用R2#
使用 Nginx 配置反向代理这一步配置的地址(https://yourdomain.com),进入Cloudreve主页
登录后点击右上角头像,点击「管理面板」
从左侧菜单栏选择「存储策略」,点击「添加存储策略」按钮,选择「AWS S3」
对照图片填入配置:
- Bucket: 储存桶的名称
- 空间类型: 阻止全部公共访问权限
- Endpoint: R2 的域名,格式:
<Cloudflare R2 账户ID>.com.r2.cloudflarestorage.com
- S3 Endpoint 地址格式: 强制路径格式
- 储桶所在的区域:
auto
- 是否要对下载/直链使用 CDN: 否
- 访问密钥:
- AccessKey: 访问密钥 ID
- SecretKey: 机密访问密钥
- 存储策略名: 填写自己喜欢的存储策略名称
接下来一直点击「下一步」即可,如果有想要修改的请自行修改
到「跨域策略可选」这一步点击「让 Cloudreve 帮我设置」,如果右上角弹出弹出「跨域策略已添加」即为成功
- 最后点击「完成」即可,然后去用户组修改你想要使用R2的用户组的存储策略
本文作者: 褐瞳さん
本文链接: https://hetong-re4per.com/posts/bulid-own-cloud-drive-on-cloudflare-r2/
版权声明: 本文文字在未特别注明下默认使用 CC BY-NC-SA 4.0 许可协议。