使用 Backblaze B2 + Cloudflare + PicGO 搭建免費圖床

森嵛發表於2024-05-23

簡介

Backblaze B2 是一個雲端儲存解決方案,類似於Amazon AWS S3, 前 10GB 儲存是完全免費的,通常情況下,像使用 AWS S3 這類的服務,頻寬費用特別高。不過,由於有了 Bandwidth Alliance(頻寬聯盟),Backblaze 到 Cloudflare 之間的出口是完全免費的。


Backblaze B2有一個免費套餐,它可以讓你享受以下優惠:

  • 10GB的儲存容量,足夠您存放一些重要的檔案或者媒體資料。
  • 每天1GB的流量,可以讓您方便地上傳和下載資料,或者透過網路瀏覽檔案。
  • S3相容的API,可以讓您輕鬆地將Backblaze B2整合到您的應用程式或者服務中。
  • 支援多種工具和軟體,例如Cloudflare CDN、Veeam備份、NAS裝置等,可以讓您提高資料的安全性、可用性和傳輸速度。

即使超出了免費額度,Backblaze B2也只會收取非常低的費用:

  • 每月$0.005/GB的儲存費用,比Amazon S3和Microsoft Azure便宜80%以上。
  • 每月$0.01/GB的下載費用,比Amazon S3和Microsoft Azure便宜88%以上。

Backblaze配置

1.登入 Backblaze B2(可以直接使用 Google 帳號);

2.建立一個公開的儲存桶(Bucket)並上傳檔案;
image

3.在儲存桶設定的桶資訊中寫入 {"cache-control":"max-age=720000"},設定快取控制時間;

4.透過檢視檔案詳細資訊獲得檔案地址並複製備用,如;

https://f004.backblazeb2.com/file/<儲存桶名稱>/<資料夾名稱>/<檔名稱>

image

Cloudflare配置

5.登入 Cloudflare

6.在某域名下(如果沒有就註冊一個,或者轉入一個)進入 SSL/TLS,確保 Cloudflare 以 FULL 模式對源使用 SSL(Backblaze B2 僅支援 HTTPS 連線);
image

7.在同域名下新建一條 CNAME 解析,建立一個該域名的子域,目標地址 f004.backblazeb2.com(與檔案詳細中的檔案地址域名相同);

配置Page Rule快取

8.配置Page Rule快取可以降低對backblaze的訪問,在同域名下的 Rules > Page Rules 中配置頁面規則以僅允許從您的域中獲取您的儲存桶;

https://<解析的域名>/* # 設定:快取級別 - 快取所有內容
image

重寫URL

9.因為桶名暴露在公共下比較危險,容易讓別人濫用流量。於是可以透過cloudflare進行URL重寫。點選規則-轉換規則-重寫URL,新增一個規則,在同域名下的 Rules > transform Rules 中配置轉換規則以隱藏儲存桶名稱,我們需要新增的規則為:當路徑為/file/bucket_name,且主機名為你剛才的二級域名時,重寫。
條件
http.request.uri.path ne "/file/{bucketName}" and http.host eq "{your_domain}"
重寫
concat("/file/{bucketName}",http.request.uri.path)

例如:
image

這裡的配置實現了{your_domain}/xxx.jpg -> https://f004.backblazeb2.com/file/{bucketName}/xxx.jpg 的轉換,既不會暴露自己的桶名稱,還縮短了 URL。

picgo配置

Picgo 是一個開源的圖片上傳工具,它可以讓你方便地將圖片上傳到各種圖床服務,包括 Backblaze B2(有 s3 外掛支援)。Picgo 支援 Windows、MacOS 和 Linux 系統,它有一個簡潔的介面和豐富的外掛。你可以透過快捷鍵、拖拽、剪貼簿等方式上傳圖片,也可以對圖片進行壓縮、裁剪、水印等處理。Picgo 還可以自動生成圖片的 URL 和 Markdown 程式碼,方便你在網上引用圖片。
PicGO的下載地址:https://github.com/Molunerfinn/PicGo/releases
PicGo Amazon S3 上傳外掛: https://github.com/wayjam/picgo-plugin-s3

10.在Backblaze的控制皮膚找到左側的Application Keys,然後拉下來新增一個新key,找到金鑰ID和金鑰複製填入到PicGo就可以使用PicGo愉快的上傳圖片了

    "aws-s3": {
      "accessKeyID": "002a03abebexample000002",
      "acl": "public-read",
      "bucketName": "example",
      "endpoint": "s3.example.backblazeb2.com",
      "pathStyleAccess": false,
      "region": null,
      "rejectUnauthorized": false,
      "secretAccessKey": "K0028example96r7wtlblUQ",
      "uploadPath": "PicGo/{fullName}",
      "urlPrefix": "https://cdn.example.cn"
      },

相關文章