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 的加速能力,讓文件訪問更快、更穩定。

無論是存儲圖片、代碼,還是其他重要文件,這個集群都能以低成本、高效率的方式滿足需求。希望這個方案能夠為你的工作和學習帶來啟發和便利。如果你對這個集群感興趣,不妨嘗試搭建,享受創新帶來的樂趣!

載入中......
此文章數據所有權由區塊鏈加密技術和智能合約保障僅歸創作者所有。