視頻教程#
前言和項目特點#
在數位化浪潮席捲的今天,圖片已成為信息傳遞不可或缺的關鍵元素。無論是點綴個人博客的精美配圖,還是支撐各類應用運行的豐富素材,其存儲與管理的有效性、安全性、穩定性、速度以及成本效益,都是當前解決方案競相追逐的核心目標。然而,遺憾的是,當前的主流方案大多仍局限於傳統的單節點存儲模式,這種模式在面對日益膨脹的存儲需求與不斷提升的訪問速度要求時,已顯得力不從心。
在此背景下,我設計出了一項革命性的解決方案 —— 基於 GitHub 與 GitLab 的圖床集群架構。這一架構旨在徹底打破傳統束縛,引領個人圖片存儲管理邁向新的高度。通過引入類似 k8s 集群化思維,期望為小夥伴帶來一個既能滿足海量存儲需求,又能確保訪問速度,同時兼顧成本效益的全新圖床綜合解決方案。
方案優勢:
-
突破存儲極限,釋放無限可能: 使用集群架構,通過 GitHub 和 GitLab 多節點協同工作,徹底打破了單個存儲庫的容量瓶頸。無論是海量圖片還是高清大圖,都能輕鬆應對,確保存儲對象的容量永遠不再是束縛你創意的枷鎖。
-
數據安全無憂,多重備份保駕護航: 數據安全是我們最重視的方面之一。本方案採用數據在多個節點間自動同步的策略,確保數據的安全性與可靠性。同時,數據不僅可以任意存放在 GitHub 的單個節點上,還在 GitLab 進行鏡像備份,形成雙重保障。即使某個平台遇到任何問題,數據依然完好無損,無憂使用。
-
智能監控,輕鬆掌握節點狀態: 本方案裡只需通過自定義密碼,即可輕鬆獲取集群圖庫中各個節點的工作狀態。這一創新設計不僅簡化了管理流程,還提高了系統的可維護性與穩定性。
-
統一域名,簡化訪問體驗: 儘管本方案的圖床集群由多個節點組成,但小夥伴只需一個統一的自定義域名即可輕鬆訪問。這一設計不僅簡化了小夥伴的使用流程,還確保了訪問的統一性與一致性,讓你的項目更加專業、可靠。
-
並發訪問,速度為王: 在訪問速度方面,本方案同樣不遺餘力。通過並發訪問 GitHub 與 GitLab,自動選擇響應速度最快的節點進行數據傳輸。這一創新設計確保了小夥伴能夠以最快的速度獲取所需內容,提升小夥伴體驗與滿意度。
-
Cloudflare CDN 加持,全球加速: 本方案特別引入了 Cloudflare CDN,利用其全球邊緣計算能力,大幅提升訪問速度。無論小夥伴身處何地,都能享受到如絲般順滑的訪問體驗。
-
圖片壓縮優化,提升加載速度: 為了進一步提升小夥伴體驗,本方案對所有上傳的圖片進行壓縮處理。通過減少文件大小,不僅節省了存儲空間,還顯著提升了網頁的加載速度。
條件#
- GitHub 帳號,https://github.com
- GitLab 帳號,https://gitlab.com
- Cloudflare 帳號,https://www.cloudflare.com
- Tinypng 帳號,https://tinypng.com/developers
- 安裝 Snipaste,https://zh.snipaste.com
- 安裝 PicGo,https://molunerfinn.com/PicGo
流程和工具介紹#
截圖:使用 Snipaste 進行截圖,這一款簡單但強大的貼圖工具,支持截屏、標註等功能,適用於 Windows 和 Mac。
PicGo 上傳圖片到 GitHub:使用 PicGo,並安裝 picgo-plugin-compress-next 插件,自動壓縮圖片後上傳到 GitHub。
獲取經過 Worker 處理的圖片鏈接:自動生成經過 Worker 隱藏 GitHub 和 GitLab 私庫的 PAT,使用至 top 的個人 CDN 和雙棧,輸出自定義域名 url。
定時自動數據同步: GitHub action 或 GitLab pipeline 計劃任務,把 GitHub 和 GitLab 各節點數據定時備份,避免圖片全部丟失的風險。
詳細關鍵步驟#
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 個同名的私庫,要求與前面建的私庫名字完全一樣,數量也一樣
把所有的 PAT 和 Project ID 記錄起來#
PicGo 壓縮插件 compress-next#
安裝好 PicGo 後,繼續在軟件裡安裝 picgo-plugin-compress-next 插件(此步可能需要開啟科學)
PicGo 設置#
安裝好 PicGo 後,繼續在軟件裡安裝 picgo-plugin-compress-next 插件(此步可能需要開啟科學)
繼續設置 PicGO 主程序
建 3 個 GitHub 節點的配置
Cloudflare 創建 worker#
登錄 Cloudflare,訪問 https://dash.cloudflare.com/ ,新建 worker
部署後,編輯代碼,從 Github 处 https://github.com/fscarmen2/pic-hosting-cluster 複製代碼並按圖修改開頭相應處位置
- 添加自定義域名,有時候不能馬上生效,可以用 worker 給的域名
https://<workerName>.<cloudflareUser>.workers.dev
先試試
正式使用流程#
截圖#
- 使用 Snipaste 進行截圖到粘貼板,可以使用快捷鍵 (默認 Ctrl + F1)
上傳圖片#
通過 PicGo 上傳圖片到 GitHub,可以使用快捷鍵(默認 Ctrl + Shift + P)或拖拽圖片到 PicGo 界面。
上傳成功進度條是藍色的,如果是紅色,請檢查設置是否有誤。上傳成功後自定義域名鏈接會自動在粘貼板,在相應的場景 Blog 或者論壇等地址粘貼出來。
定時同步到 Gitlab 對應的節點#
定時同步任務可以設置在 GitHub 或者 GitLab 任意一個,以下分別說明
在 GitHub Action 裡做定時任務#
https://github.com/fscarmen2/pic-hosting-cluster 獲取代碼,找到 github_to_gitlab 模塊,在 GitHub 新建一個用於定時同步任務的私庫,從我的倉庫複製代碼
在 GitLab pipeline 裡做定時任務#
https://github.com/fscarmen2/pic-hosting-cluster 獲取代碼,找到 github_to_gitlab 模塊,在 GitLab 新建一個用於定時同步任務的私庫,從我的倉庫複製代碼
進階#
檢測各節點狀態#
https://<自定義域名>/< 自定義檢測密碼 >
指定圖片從 GitHub 獲取#
https://<自定義域名>/< 文件名 >?from=github
指定圖片從 GitLab 獲取#
https://<自定義域名>/< 文件名 >?from=gitlab
查詢圖片和歸屬節點信息#
https://<自定義域名>/< 文件名 >?from=where
總結#
本方案的基於 GitHub 與 GitLab 的圖床集群架構,以顛覆性的創新理念與卓越的性能表現,為圖片存儲管理帶來了全新的變革。對於個人玩家而言,這意味著你將擁有更加便捷、高效的方式來管理你的圖片資源,無論是個人博客、社交媒體分享,還是遊戲開發中的素材管理,都能得到極大的提升與簡化。