R2+GitHub+GitLab:私人文件集群

R2+GitHub+GitLab:私人文件集群

介绍: 在当今文件存储需求日益增长的环境下,我成功打造了一个高效、灵活的私人文件存储集群,结合了 R2、GitHub 和 GitLab 多平台的优势,形成了一个高度可靠、分布式的存储系统。这套方案的核心亮点包括:

  • 多节点分布式存储:文件按策略分散存储,规避单点故障风险。
  • 自动化备份与同步:数据在不同节点间高效同步,确保一致性和安全性。
  • 智能加速访问:借助 Cloudflare 全球边缘服务,访问速度得到极大提升,用户体验极为流畅。
  • 无限扩展潜力:得益于分布式架构,理论上可以存储几乎无限量的文件。
  • 这不仅是一个简单的图床解决方案,更是一个适合代码、文档乃至任何数据存储的多功能分布式存储系统。

集群节点信息截图:
Image description

这不仅是一个简单的图床解决方案,更是一个适合代码、文档乃至任何数据存储的多功能分布式存储系统。

部署条件

流程和工具介绍

PicGo 上传文件:使用 PicGo,并安装 s3 插件,上传文件到 Cloudflare R2 存储桶。

GitHub action 1:定时迁移 Cloudflare R2 存储桶上的文件到 GitHub,负载存储文件。

GitHub action 2:定时把 GitHub 节点镜像到 GitLab,避免文件全部丢失的风险。

获取经过 Worker 重写的链接:通过 Worker 隐藏 GitHub, GitLab 和 R2 私库的 PAT,输出自定义域名 url。

利用全球 Edge CDN 加速访问: 通过 Cache Rules 缓存静态文件,减少回源请求,大幅提升访问速度与稳定性。

GitHub 建 n 个私库作节点,获取一个 PAT

访问 https://github.com/new ,以建3个为例子,建3个私库,要求有相同的前缀,加数字序号,如 node-1, node-2, node-3 …

为这3个私库创建 PAT,访问 https://github.com/settings/tokens

GitLab 建 n 个同名私库作节点,获取n个 PAT 和 Repo ID

访问 https://gitlab.com/projects/new#blank_project ,建3个同名的私库,要求与前面建的私库名字完全一样,数量也一样

n 个 CloudFlare 账户各自建 R2 存储桶,获取 n 个 API 密钥

把所有的 PAT 和 Project ID 记录起来

PicGo 压缩插件 s3

安装好 PicGo 后,继续在软件里安装 s3 插件

自定义链接格式填 https://<自定义域名>/$fileName$extName

文件路径 files/{fileName}.{extName}

GitHub 建私库,运行两个定时任务

https://github.com/fscarmen2/pic-hosting-cluster 获取代码,在 GitHub 新建一个用于定时同步任务的私库,从我的仓库复制代码

正式使用流程

上传文件

通过 PicGo 上传文件到 GitHub,可以使用快捷键(默认 Ctrl + Shift + P)或拖拽文件到 PicGo 界面。

上传成功进度条是蓝色的,如果是红色,请检查设置是否有误。上传成功后自定义域名链接会自动在粘贴板

在 GitHub Action 里手动运行定时任务

进阶

url 的参数有以下这些

参数 query说明
https://<自定义域名>/<自定义检测密码>检测各节点状态
https://<自定义域名>/<文件名>?from=r2指定从 R2 获取
https://<自定义域名>/<文件名>?from=github指定从 GitHub 获取
https://<自定义域名>/<文件名>?from=gitlab指定从 GitLab 获取
https://<自定义域名>/<文件名>?from=where查询文件和归属节点信息

检测各节点状态

指定文件从 R2 获取

指定文件从 GitHub 获取

指定文件从 GitLab 获取

查询文件和归属节点信息

总结

通过本方案,我们成功搭建了一个融合 R2、GitHub 和 GitLab 的高效分布式文件存储集群。这一架构不仅提升了文件的安全性与备份可靠性,还充分利用了 Cloudflare 全球 Edge CDN 的加速能力,让文件访问更快、更稳定。

无论是存储图片、代码,还是其他重要文件,这个集群都能以低成本、高效率的方式满足需求。希望这个方案能够为你的工作和学习带来启发和便利。如果你对这个集群感兴趣,不妨尝试搭建,享受创新带来的乐趣!

视频: https://wu8.in/NAbjDza2

原文博文:https://www.fscarmen.com/2024/11/oss.html

代码:https://yyjj.in/QFBya