最近有用到 oss 存儲的需求,跟群友調研了下國內 & 國外的 oss 後,深感找個合適的 oss 不容易,國內的有阿里雲 OSS、七牛雲、騰訊雲,國外的有 Backblaze、Cloudflare R2 等,經過激烈討論後我決定使用 Backblaze + Cloudflare,這個決定其實並不難,因為 Backblaze 提供的雲存儲服務價格非常低,而且穩定性和快速性也非常不錯。同時,Backblaze 和 Cloudflare 之間的數據傳輸是免費的。
原因及介紹#
Backblaze 提供的雲存儲服務價格低廉,而 Cloudflare 則可以提供穩定且快速的 CDN 服務,兩者之間的數據傳輸也是免費的,使用 Picgo 結合 s3 插件 則可以輕鬆解決圖片上傳到 Backblaze 的問題。
Backblaze 簡介#
Backblaze 是一個提供雲存儲服務的公司,它的 B2 Cloud Storage 產品可以讓你以極低的價格存儲大量的數據。B2 Cloud Storage 的存儲費用只有0.005 美元 / GB / 月,下載費用只有 0.01 美元 / GB。而且,如果你使用 Cloudflare 的 CDN 服務,那麼下載費用就是免費的,這是因為 Backblaze 和 Cloudflare 是 Bandwidth Alliance 的成員,他們之間沒有數據傳輸費用。這樣一來,你就可以用很少的錢擁有一個高性能的雲存儲空間。
優點:免費、穩定、收費額度的價格也很低廉
- 免費額度足夠大量,付費價格足夠低廉:每月有 10GB 的 免費額度,每日有 1GB 的免費下載流量,作為個人圖床來說完全夠用!並且超過的收費部分每 GB 也只需 0.005 美元
- 結合 Cloudflare 下載費用免費:因為 Backblaze 和 Cloudflare 都是 Bandwidth Alliance 的成員,他們之間的數據傳輸是免費的
- 豐富的 API:Backblaze 提供了豐富的 API,可以方便地集成到自己的應用程序中,提高開發效率和便捷性。
- 支持多種上傳方式:除了 Picgo 外,Backblaze 還支持多種上傳方式,如官方提供的 web 界面、CLI 工具、第三方客戶端等。
- 不限制文件類型:相比於一些圖床服務只能存儲圖片類型的文件,Backblaze 沒有文件類型的限制,用戶可以存儲各種類型的文件,如視頻、文檔、音頻等。(
甚至有人拿來當雲盤)
缺點:國內速度不好說、學習成本高、風險分散不均
- 國內網絡環境對於國外雲存儲服務的訪問速度有限制,可能導致上傳和下載速度較慢。
- API 調用次數限制:但是綁了卡就沒限制
- 學習成本高:使用這個組合需要手動配置多個服務,存在一定的學習成本。
- 風險分散不均:由於數據存儲和 CDN 服務分別由 Backblaze 和 Cloudflare 提供,因此存在一定的風險分散不均的情況,比如某個服務出現問題時可能會影響整個圖床的正常使用。
當然這些對於這個衝浪選手來說是完全夠用了~
Cloudflare 簡介#
Cloudflare 是一個提供全球 CDN 和安全服務的公司,它可以讓你的网站更快、更安全、更智能。Cloudflare 有一個免費套餐,可以讓你享受無限制的流量和請求,以及很多高級功能,比如 SSL 證書、防火牆、頁面規則、轉換規則等。通過 Cloudflare ,你可以將你的 Backblaze B2 存儲桶綁定到你自己的域名上,還可以設置規則來隱藏桶名、Remove Headers 等,比如 files.example.com ,這樣你就可以用自己的域名訪問你的圖片,而不是 Backblaze B2 的默認域名。Cloudflare 還可以為你的圖片提供緩存和優化,提高圖片的加載速度和質量。
Picgo 簡介#
Picgo 是一個開源的圖片上傳工具,它可以讓你方便地將圖片上傳到各種圖床服務,包括 Backblaze B2(有 s3 插件支持)。Picgo 支持 Windows、MacOS 和 Linux 系統,它有一個簡潔的界面和豐富的插件。你可以通過快捷鍵、拖拽、剪貼板等方式上傳圖片,也可以對圖片進行壓縮、裁剪、水印等處理。Picgo 還可以自動生成圖片的 URL 和 Markdown 代碼,方便你在網上引用圖片。
前提#
需要以下幾樣東西:
- 一個 Backblaze 賬戶(郵箱註冊)
- 一個 Cloudflare 賬戶(郵箱註冊)
- 一個自己的域名(我用的是阿里雲的域名,很早就買了的)
- Picgo 客戶端
如果你還沒有這些東西,請先去註冊 / 下載 / 整一個~
關於詳細的配置步驟,下面這兩篇博文是我認為比較好並且詳細的,完全可以順著走下去:
只不過由於更新等,接下來我主要會說一下我遇到的幾個坑點或者原文沒有講的很清楚的地方~
AliYun 域名控制台更換 DNS 服務到 Cloudflare#
轉移後就是在 Cloudflare - DNS - Records 進行管理了~
更改 DNS 伺服器需要耗費一些時間,更改成功後,阿里雲域名控制台會顯示如下
需要注意的是導入域名到 Cloudflare 的時候我似乎丟失了幾條域名解析,記得導入完後檢查一遍,比如我的 vercel 相關解析貌似有一些沒導入成功,最後手動配置解析了一下,如果你也有需求,記得導入後檢查一下自己域名的解析記錄~
Cloudflare 配置 Transform Rules 重寫 URL#
根據 使用 Cloudflare + Backblaze B2+PicGo 的搭建免費圖床 這篇文章提到的重寫 URL 路徑,在我配置的時候不能直接像文中那樣 Edit expression 就可以了,而是需要這麼玩兒:
-
(http.request.uri.path ne "/file/{bucketName}" and http.host eq "{your custom domain}")
-
Path 重寫為
concat("/file/{bucketName}",http.request.uri.path)
這裡的配置實現了 example.com/xxx.jpg
-> example.com/file/{bucketName}/xxx.jpg
的轉換,既不會暴露自己的桶名稱,還縮短了 URL~
在 Picgo 中配置 Backblaze 上傳#
按照博文中 配置 S3 插件 這一步,我在這裡的配置死活不對,直到我查到了這篇文章:Getting Started with the S3 Compatible API – Backblaze Help
這下一切就很晴朗了,Endpoint 就填入自定義節點,地區則是自己的 S3 Endpoint 的第二部分,如圖中的 Endpoint 的地區就是 us-west-001
然後需要將 PathStyleAccess 打開,而下面的 public-read 不用動
配置成功~撒花~~
對了,使用 obsidian 寫這篇文章的時候,圖床就是使用 Image Auto Upload Plugin 這個插件結合 Picgo,體感十分絲滑
如果是 mac 用戶,推薦使用 DropShare,直接支持 Backblaze!
以上就是我踩的一些坑以及解決方案啦,希望能幫到同樣有需求的人~~