Kết hợp Backblaze B2 trên WordPress

Backblaze B2 là một dịch vụ lưu trữ đám mây cho phép bạn lưu trữ các tệp tin trên đám mây và tải xuống bất cứ lúc nào, thông qua các API hoặc một URL tương thích với trình duyệt. Backblaze B2 là một giải pháp lưu trữ đối tượng đơn giản, đáng tin cậy và tiết kiệm chi phí. Mỗi tài khoản được miễn phí 10 GB dung lượng lưu trữ, không giới hạn băng thông tải lên và 1 GB băng thông tải xuống mỗi ngày. Không có bất kỳ chi phí ẩn nào. Xem trang Giá cả để biết chi tiết.Backblaze B2

Về cơ bản Backblaze B2 nó tương tự các dịch vụ Amazon S3 hay Cloudflare R2 nhưng tổng chi phí rẻ hơn, tham khảo các đánh giá đều khá tốt 😀 điểm quan trọng nhất, là đăng kí Backblaze B2 bạn không cần điền bất cứ thông tin thanh toán gì hết, các dịch vụ khác thì hầu như đều bắt điền

 Các thứ khác mình không bàn ở đây, bài này chỉ nói về gói miễn phí 10GB dung lượng và cách cấu hình, tích hợp vào WordPress 

Các dịch vụ dạng object storage tính phí rất loạn, nên trước hết cần coi rõ 1 tẹo

  • Daily Storage Caps: 10 GB dung lượng đầu tiên miễn phí (không bao giờ hết hạn), dùng thêm thì tốn $0.005 cho 1 GB tiếp theo trong 1 tháng

Khoản này tin được, thực tế các trang siêu to như Amazon S3 cũng free 5Gb, Cloudflare R2 free tương tự 10 Gb

  • Daily Download Bandwidth Caps: mỗi ngày cho download miễn phí 1GB

Nếu download qua Cloudflare CDN thì miễn phí -> Daily Download Bandwidth Caps chúng ta có miễn phí

  • Daily Class B Transactions Caps: hiểu nôm na là download, 1 ngày có 2.500 lượt download file miễn phí, sau đó thì $0.004 cho 10.000 download

File download lần đầu sẽ tính 1 lần từ Backblaze, sau đó download thông qua cache của Cloudflare nên miễn phí

-> đây là thứ, có thể gây tốn tiền, nếu trang của bạn có quá nhiều hình ảnh, mỗi ngày có hơn 2.500 lướt view vào file mới (mà xác xuất này cũng cực hiếm), thực tế thèng bibica.net cũng chỉ có khoảng 2500 tấm ảnh, người xem thì cao lắm xem vài bài mới, xác xuất có ai đó vào xem cùng lúc tất cả bài trên trang trong 1 ngày nó quá là hi hữu đi 😀

  • Daily Class C Transactions Caps: hiểu nôm na là charged, mỗi ngày có 2.500 lượt, cái này thì tạm hiểu họ gọi các API quy định ở đó tính là C

Thực tế sử dụng thì chưa bao giờ mình thấy nó lên cao cả, nên bỏ qua =))

Trong trường hợp, vì lý do nào đó bạn dùng quá hạn mức, đa phần chỉ gặp khi bạn đồng bộ lần đầu tất cả ảnh từ WordPress sang Backblaze B2 😀 các ảnh sẽ không xem được nữa, chứ cũng không mất phí (mà bạn cũng có điền thông tin thanh toán vào để mà change :D)

{
    "code": "download_cap_exceeded",
    "message": "Cannot download file, download bandwidth or transaction (Class B) cap exceeded. See the Caps & Alerts page to increase your cap.",
    "status": 403
}

Một số trang dùng miễn phí Backblaze B2, băng thông hàng tháng toàn 5TB (~ 5000 Gb) mà đều miễn phí cả 😀

Cá nhân thì mình rất thích Backblaze B2, không bắt điền thông tin thanh toán, tốc độ ổn định, bền bỉ, dù mức giới hạn của họ hơi ít, nhưng với mình cũng quá thừa để sử dụng, trong trường hợp bạn thích dùng nó làm nơi chứa data, chi phí cho ~ $5 cho 1TB cũng là 1 con số khá dễ chịu

Đoạn trên phét lác bon mồm thôi 😀 chứ mình nghĩ ở Việt Nam chúng ta vẫn thích dùng Google Drive để backup dữ liệu hơn 😀 tiện quảng cáo còn 1 shot Family Google Tại Bibica.Net nếu bạn nào quan tâm 😛

Đăng kí tài khoản Backblaze B2

Đăng Kí Tài Khoản Backblaze B2
Đăng Kí Tài Khoản Backblaze B2

Không chắc lắm, đợt trước mình tạo tài khoản bình thường, nhưng hôm nay demo viết lại bài này, vào đăng kí bằng IP Việt Nam không được

Bạn nào gặp tình huống thế thì thì có thể dùng VPN nước khác, đăng kí bình thường

Có thêm 1 điểm rất khó hiểu, là bản thân Backblaze miễn phí 10GB space, nhưng không hề giới hạn chuyện khách tạo bao nhiêu tài khoản, thậm chí họ còn khuyến khích khách hàng tạo nhiều tài khoản ở nhiều cụm location khác nhau (US, Euro) để backup data qua lại nữa

Mặc định khi tạo tài khoản xong, nó tự hiện ra màn hình tạo bucket

Kết Hợp Backblaze B2 Và Cloudflare Trên Wordpress
Trang quản trị Backblaze B2
  • Ấn vào Create a Bucket
Kết Hợp Backblaze B2 Và Cloudflare Trên Wordpress
Create a Bucket

Bucket Unique Name: đặt tên tùy ý

Files in Bucket are: Public (lúc này Backblaze mới bắt bạn verified email)

Default Encryption: Disable

Object Lock: Disable

Sau đó ấn vào Create a Bucket

Ta sẽ có các thông tin về bucket

Kết Hợp Backblaze B2 Và Cloudflare Trên Wordpress
Endpoint

Chú ý thông tin về Endpoint: s3.us-east-005.backblazeb2.com

  • Ấn tiếp vào Bucket Settings
Kết Hợp Backblaze B2 Và Cloudflare Trên Wordpress
Bucket Info

Bucket Info thêm vào

{"cache-control":"max-age=31536000"}

Sau đó ấn Update Bucket

Kết Hợp Backblaze B2 Và Cloudflare Trên Wordpress
CORS Rules
  • Màn hình quay lại bảng chính của bucket, ấn tiếp vào CORS Rules
Kết Hợp Backblaze B2 Và Cloudflare Trên Wordpress
Share everything in this bucket with every origin

Stick chọn Share everything in this bucket with every origin ở trên

Bên dưới chọn Both

Sau đó ấn Update CORS Rules

Cấu hình Bucket

Kết Hợp Backblaze B2 Và Cloudflare Trên Wordpress

  • Từ Browse Files -> bucket của bạn, chọn uload 1 file bất kì gì đó lên thử

Kết Hợp Backblaze B2 Và Cloudflare Trên Wordpress

Chú ý phần Friendly URL

Kết Hợp Backblaze B2 Và Cloudflare Trên Wordpress
Kết Hợp Backblaze B2 Và Cloudflare Trên Wordpress
 Trong đó ta cần xử lý 2 chuyện 
  • Cấu hình Backblaze B2 đi qua Cloudflare để được miễn phí băng thông (custom domain)
  • Xóa bỏ đoạn file/bibica-net-backblaze, cho đẹp và cũng để bảo mật tài khoản Backblaze

Xử lý Friendly URL

  • Vào Cloudflare DNS để quản trị
Custom domain
Custom domain

Tạo 1 record mới, với Type CNAME

Phần Name đặt tùy ý, như mình dùng là ping

Phần Target điền f005.backblazeb2.com

Để mặc định Proxy status Proxied

Sau đó ấn Save

SSL
SSL

Mặc định nếu bạn dùng SSL của Cloudflare, chọn Full hoặc Full (strict) thì link CNAME này tự động có SSL, không cần cấu hình gì thêm liên quan tới ssl

Lúc này Friendly URL sẽ từ https://f005.backblazeb2.com -> https://ping.haproxy.tech

Transform Rules -> Create rule
Transform Rules -> Create rule
  • Từ trang quản trị domain trên Cloudflare -> Đi vào Tab Rules -> Transform Rules -> Create rule
backblaze b2 remove /file/bibica-net-backblaze
backblaze b2 remove /file/bibica-net-backblaze

Rule name (required): đặt 1 tên tùy ý để nhớ, mình đặt là (backblaze b2 remove /file/bibica-net-backblaze)

Trong phần If… When incoming requests match…

Field: chọn Hostname

Operator: chọn equals

Value: điền ping.haproxy.tech

Trong phần Then… Set Rewrite parameters

Chọn Rewrite to…

Chọn Dynamic, điền vào

concat("/file/bibica-net-backblaze", http.request.uri.path)

Sau đó ấn Deploy

Custom domain Cloudflare
Custom domain Cloudflare

Lúc này từ Friendly URL ban đầu, ta đã bỏ hết các thứ râu ria, chỉ còn custom domain đi thông qua Cloudflare

Remove Backblaze B2 Headers, set ETag

Bước này thì mình chưa rõ lắm vì sao phải làm, theo tác giả bài viết gốc hướng dẫn thì đại khái nó giúp cache tốt hơn, nên mình cũng làm theo :]]

Transform Rules -> Modify Response Header -> Create rule
Transform Rules -> Modify Response Header -> Create rule
  • Từ Rules -> Transform Rules -> Modify Response Header -> Create rule
Remove Backblaze B2 Headers, set ETag
Remove Backblaze B2 Headers, set ETag

Rule name (required): đặt 1 tên tùy ý để nhớ, mình đặt là (Remove Backblaze B2 Headers, set ETag)

Trong phần If… When incoming requests match…

Field: chọn Hostname

Operator: chọn equals

Value: điền ping.haproxy.tech

Trong phần Then…

Chọn Set dynamic

Header name: ETag

Value

concat(http.response.headers["x-bz-content-sha1"][0], http.response.headers["x-bz-info-src_last_modified_millis"][0], http.response.headers["x-bz-file-id"][0])

Phần Remove, tạo ra 5 dòng Remove, điền vào các giá trị như ảnh

x-bz-content-sha1
x-bz-file-id
x-bz-file-name
x-bz-info-src_last_modified_millis
x-bz-upload-timestamp

Sau đó ấn Deploy

2023-06-02_22-45-34

Thành quả sau khi chỉnh sửa chi chít, thì ta đã có phần headers sạch sẽ, hỗ trợ thêm Etag

Page Rules Cache Everything
Page Rules Cache Everything

Mặc định Cloudflare tự động cache các file tĩnh rồi, nếu lo xa thì bạn cũng có thể tạo thêm 1 Page Rules như ảnh, để nó tự cache tất cả các loại file từ custom domain ping.haproxy.tech

Hiệu năng của Backblaze B2

Sau khi cấu hình đi qua Cloudflare, Backblaze B2 có TTFB khá tốt, tỷ lệ HIT gần như 100%

Thực tế khi mình Google về Backblaze, thấy các phản hồi cũng ổn, không tệ 😀

Tạo Application Keys

Application Keys
Application Keys

Quay trở lại trang chủ của Backblaze B2, ấn vào Application Keys

Trong Application Keys bạn sẽ thấy 2 phần

  1. Master Application Key
  2. Your Application Keys

Master Key thì gần như toàn quyền sinh sát tài khoản Backblaze B2, nên giữ kín, dùng gì cần key API thì chỉ tạo ở Your Application Keys là đủ

Your Application Keys
Your Application Keys

Name of Key: điền tùy ý

Type of Access: chọn Read and Write

Sau đó ấn vào Create New Key

Success! Your new application key has been created. It will only appear here once.

keyID: 0055ccc0ef931630000000001
keyName:Backblaze-B2
applicationKey: K005rAOqp7dviQUaKbkGPTzLPJzxOs4

Chúng ta sẽ có 2 giá trị là keyID và applicationKey

Muốn truy xuất vào bucket, các plugin, addon thường cần 3-4 giá trị, mình sẽ demo trực tiếp ở bucket vừa tạo

  1. keyID: 0055ccc0ef931630000000001
  2. applicationKey: K005rAOqp7dviQUaKbkGPTzLPJzxOs4
  3. Endpoint: s3.us-east-005.backblazeb2.com
  4. Bucket Name: bibica-net-backblaze

Đồng bộ Backblaze B2 trên WordPress

Tạm thì mình chỉ thấy plugin Media Cloud là có hỗ trợ cho Backblaze B2, nên gần như bắt buộc phải dùng plugin này để quản lý (dù plugin này thời điểm mình viết bài đã có 6 tháng chưa cập nhập gì rồi)

Backblaze S3 Compatible Cloud Storage
Backblaze S3 Compatible Cloud Storage
  • Chọn Backblaze S3 Compatible Cloud Storage
Cloud Storage Settings
Cloud Storage Settings
  • Điền các thông số chúng ta tạo ở trên vào thôi 😀
Validate
Validate

Media Cloud sẽ chạy test 1 lần để kiểm tra lại mọi thứ, xem hoạt động có bình thường không

Các menu bên trong thì phải nói là nhiều kinh hoàng

  • Thứ đầu tiên cần làm là thêm vào CDN Settings
CDN Base URL
CDN Base URL

Điền custom domain Cloudflare chúng ta tạo ban đầu vào, như ở bài này mình đang dùng là https://ping.haproxy.tech

UPLOAD HANDLING Upload Path
UPLOAD HANDLING Upload Path
  • Sau đó vào Upload Handling

Sửa Upload Path thành wp-content/uploads/@{date:Y/m}

2023-06-03_0-44-13

Từ lúc này trở đi, mặc định khi bạn upload 1 tấm ảnh mới, nó sẽ tự động up lên Backblaze B2, sau đó tự sửa lại link trong bài viết

Đường dẫn sẽ theo cấu trúc mặc định của WordPress

  • ping.haproxy.tech/wp-content/uploads/2023/06/2023-06-03-0-09-53.jpg

Đồng bộ các ảnh cũ lên Backblaze B2

Các ảnh mới khi upload, đã được tự upload lên Backblaze B2, việc cần làm bây giờ là chuyển các ảnh cũ lên Backblaze B2

Đơn giản nhất thì dùng bộ công cụ có sẵn chạy trên WP-CLI

  • Cài Đặt WP-CLI
curl -O https://raw.githubusercontent.com/wp-cli/builds/gh-pages/phar/wp-cli.phar
php wp-cli.phar --info
chmod +x wp-cli.phar
sudo mv wp-cli.phar /usr/local/bin/wp
  • Di chuyển vào thư mục root của wordpress (thường là thư mục chứa file config.php)
/home/nginx/domains/pc3.bibica.net/public
  • Chạy Command Line bên dưới để đồng bộ ảnh từ server -> Backblaze B2
wp mediacloud:storage migrate

Khi upload file lên bucket, Media Cloud cũng tự sửa link ảnh trong bài viết về link trên bucket, cụ thể như bài này thì các link sẽ chuyển về ping.haproxy.tech

Trong lúc đồng bộ bằng Media Cloud, do cách Media Cloud sửa lại link, trang nhiều hình ảnh có thể hết Daily Class B trong ngày, gặp tình huống này thì …. cứ kệ là được, mai reset Class B thì mọi thứ bình thường

Một số trang có thể cấu trúc phức tạp, hoặc các link ngày xưa viết lằng nhằng quá, khi Media Cloud sửa tự động lại có thể bị sót, dùng Better Search Replace (hoặc các plugin tương tự) để sửa thủ công các link còn sót 😀

Cách này là cách tác giả viết để tự động các thứ, hiệu năng theo mình cũng tốt, chạy qua WP-CLI nên nhẹ, lại nhàn nữa

  • Bạn nào trang siêu to khổng lồ, sau dùng quen rồi thì có thể dùng Rclone sync file, tốc độ bàn thờ luôn, sửa link thì download thẳng database về, mở bằng app edit text nào đó, search, replace, kiểu Ctrl + H, copy link cũ và link mới vào, enter 2-3 cái xong rồi upload ngược database về lại, tổng thời gian chắc mất tầm 10 phút, dùng WP-CLI ở trên dù cũng rất nhanh, nhưng cũng chậm hơn so với Rclone cỡ 10 lần :]] trang bé thì không sao, chứ trang to, vài trăm ngàn cái ảnh là sửa lòi mồm 😀

Ở các plugin dạng upload file lên cloud thì mình thấy Media Cloud rất mạnh, nó hỗ trợ cực kì nhiều tính năng và gần như mọi nền tảng cloud đều hỗ trợ, thiệt chứ khi cài, nhìn file cài đặt dạng zip mà ~ 20Mb socks văn hóa luôn, khá nhiều tính năng khác của nó thì mình không dùng

Sử lý ảnh

Thưởng chúng ta chỉ nên dùng các dịch vụ dạng object storage như Backblaze B2, đúng với tên gọi của nó theo nghĩa đen là lưu trữ thôi, không nên dùng trực tiếp link public, dù làm theo bài này, dùng qua Cloudflare CDN, nó cũng là 1 hình thức Cache + CDN rồi

Tối ưu nhất thì bạn nên dùng qua 1 dịch vụ sử lý ảnh riêng cho WordPress, ngoài chuyện giúp tự tạo các ảnh thumbnail, nén ảnh, cdn …. còn có thể tùy biến nhiều thứ hơn

Dùng đơn giản, miễn phí, bố đời nhất thì vẫn là Jetpack Photon, thích hổ báo hơn thì dùng Auto Cloudinary free 25Gb băng thông hàng tháng(addon siêu đơn giản cho Cloudinary)

Combo đơn giản nhất là Backblaze B2 + Media Cloud + Jetpack Photon

Khi viết nội dung cho bài này, mình có dùng thử Backblaze B2 bằng link custom domain vài ngày, xem tốc độ load thế nào, thì thấy mọi thứ mượt mà, trơn tru, không có gì phàn nàn cả 😀 mỗi cái giờ mình đang dùng Cloudflare R2 nên không có dịp trải nghiệm nhiều hơn 😀

Bạn nào dùng Backblaze B2 có thể comment ý kiến bên dưới hé, mình cũng chưa thấy nhiều người Việt dùng các sản phẩm của Backblaze lắm 😛

Comment policy: We love comments and appreciate the time that readers spend to share ideas and give feedback.
Notes: However, those deemed to be spam or solely promotional will be deleted.

You can create a Gravatar account, add avatar, then use that email to comment here, your account will have a more beautiful Avatar, easier to recognize with other members.

Please use real emails, you can receive notifications when comments are replied