fscarmen

fscarmen

全网首发!融合 R2、GitHub、GitLab 与 Cloudflare 的存储集群,实现自动备份、极速访问、无限扩展!远比图床方案实用

视频教程#

前言与项目特点#

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

  • 多节点分布式存储:文件按策略分散存储,规避单点故障风险。
  • 自动化备份与同步:数据在不同节点间高效同步,确保一致性和安全性。
  • 智能加速访问:借助 Cloudflare 全球边缘服务,访问速度得到极大提升,用户体验极为流畅。
  • 无限扩展潜力:得益于分布式架构,理论上可以存储几乎无限量的文件。

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

部署条件#

流程和工具介绍#

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 ...

image
image

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

image
image
image
image

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

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

image
image
image
image
image
image

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

image
image
image
image
image
image

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

image

PicGo 压缩插件 s3#

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

image

自定义链接格式填 https://&lt 自定义域名 & gt/$fileName$extName

image
image
image
image

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

image
image

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

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

image
image
image
image

正式使用流程#

上传文件#

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

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

image
image

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

image
image
image
image

进阶#

url 的参数有以下这些

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

检测各节点状态#

image

指定文件从 R2 获取#

image

指定文件从 GitHub 获取#

image

指定文件从 GitLab 获取#

image

查询文件和归属节点信息#

image

总结#

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

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

加载中...
此文章数据所有权由区块链加密技术和智能合约保障仅归创作者所有。