6 điểm bởi GN⁺ 14 ngày trước | 1 bình luận | Chia sẻ qua WhatsApp
  • Một trường hợp chuyển blog cá nhân sang bunny.net để giảm sự phụ thuộc tập trung vào Cloudflare
  • bunny.netdịch vụ CDN châu Âu có trụ sở tại Slovenia, cung cấp hiệu năng nhanh trên toàn cầu và mạng lưới PoP hiệu quả
  • Sử dụng Porkbun để đăng ký tên miền và chuyển tính năng “Orange Cloud” của Cloudflare sang môi trường bunny.net
  • Cấu hình CDN hoàn chỉnh theo từng bước với Pull Zone, chính sách cache, chứng chỉ SSL, Edge Rule
  • Chỉ với các tính năng cơ bản như bảo vệ DDoS, Origin Shield, Stale Cache, dịch vụ vẫn đủ ổn định và có thể trở thành một lựa chọn thay thế Cloudflare thực tế cho người dùng cá nhân

Chuyển từ Cloudflare sang bunny.net

  • Tổng hợp quá trình và cách cấu hình để chuyển blog cá nhân sang bunny.net nhằm giảm sự phụ thuộc vào Cloudflare và vấn đề tập trung hóa
    • Cloudflare cung cấp nhiều tính năng mạnh mẽ miễn phí, nhưng điều đó cũng làm gia tăng mức độ phụ thuộc vào một công ty duy nhất, và khi sự cố xảy ra có thể ảnh hưởng tới internet trên diện rộng
    • Sự khó chịu với tình trạng internet tập trung quanh các công ty Mỹ cùng nhiều tranh cãi khác đã thúc đẩy việc tìm kiếm phương án thay thế

Tổng quan về Bunny.net

  • bunny.net là một công ty châu Âu có trụ sở tại Slovenia, cung cấp dịch vụ CDN có thể cạnh tranh với Cloudflare
    • Dịch vụ cho thấy hiệu năng và tốc độ cao trên phạm vi toàn cầu; quy mô mạng PoP nhỏ hơn nhưng hiệu quả
    • Cũng được đánh giá tích cực ở khía cạnh hỗ trợ sự phát triển của hệ sinh thái công nghệ châu Âu

Thoát khỏi Cloudflare

  • Tác giả từng dùng Cloudflare làm nhà đăng ký tên miền cho blog, nhưng rất khó tìm được phương án thay thế trong châu Âu
    • INWX bị loại vì không có WHOIS privacy miễn phí, nên chọn Porkbun thay thế
    • Porkbun dùng hạ tầng Cloudflare nhưng chất lượng hỗ trợ rất tốt
  • Chuyển tính năng “Orange Cloud” của Cloudflare (tự động cache, ẩn origin, tính năng bảo vệ) sang bunny.net

Các bước cấu hình Bunny.net

  • Tạo tài khoản

    • Khi đăng ký sẽ có 20 USD credit trong 14 ngày, và thêm 30 USD nếu đăng ký thẻ tín dụng
    • Có thể cấu hình sau khi xác thực email; áp dụng mô hình tính phí theo mức sử dụng (tối thiểu 1 USD/tháng)
    • Chuyển sang một mô hình mà “người dùng là khách hàng chứ không phải sản phẩm”
  • Tạo Pull Zone

    • Đây là thành phần cốt lõi để kích hoạt CDN, kết nối máy chủ bằng cách chỉ định Origin URL
    • Nếu đang vận hành nhiều ứng dụng, hãy chỉ định tên miền trong Host header
    • Có thể chọn gói Standard rồi cấu hình Zone có mức giá khác nhau theo từng khu vực
    • Người dùng ở khu vực đã vô hiệu hóa sẽ được chuyển hướng đến Zone đang hoạt động gần nhất
  • Kết nối Pull Zone

    • Nhập tên miền website vào mục “Add a custom hostname”
    • Thêm bản ghi CNAME theo hướng dẫn để kết nối đường CDN (dạng website.b-cdn.net)
    • Sau khi DNS propagation hoàn tất, nhấn “Verify & Activate SSL” để hoàn tất chứng chỉ SSL
    • Khi thành công, website sẽ được phục vụ thông qua CDN của bunny.net

Cấu hình cache

  • Nếu website trả về header Cache-Control phù hợp thì bunny.net sẽ tôn trọng thiết lập đó
    • Kiểm tra tùy chọn “Respect origin Cache-Control” trong “Caching → General”
    • Nếu đặt no-cache thì sẽ không cache
  • Nếu không có header cache, tính năng Smart Cache sẽ tự động cache chỉ các tệp như ảnh, CSS, JS
  • Với blog dựa trên Elixir Phoenix, tác giả đã thêm middleware header cache tùy chỉnh vào pipeline public
    • Thiết lập cache-control: public, s-maxage=86400, max-age=0 để cache cả trang HTML
    • Khi đăng bài mới, cần xóa cache của Pull Zone thủ công để HTML mới nhất được phản ánh
  • Kết quả đo bằng công cụ Larm cho thấy tốc độ phản hồi được cải thiện ở nhiều vị trí trên thế giới

Thiết lập cơ bản được khuyến nghị

  • Bật “Force SSL” để bắt buộc mọi request dùng HTTPS
  • Có sẵn bảo vệ DDoS; nếu bật thêm Origin Shield thì có thể giảm tải cho máy chủ
    • Chọn vị trí gần origin để tập trung cache, khi đó edge server sẽ truy vấn Origin Shield trước
  • Với tùy chọn “Stale Cache: While Origin Offline / While Updating”
    • Có thể tiếp tục phục vụ nội dung đã cache ngay cả khi origin gặp sự cố
    • Trong lúc cập nhật cũng tạm thời phục vụ bản cache cũ
  • Thêm Edge Rule để chuyển hướng tên miền pull zone được tạo tự động về tên miền thực tế
    • Tên quy tắc: “Default domain redirect”
    • Hành động: Redirect, mã trạng thái 301
    • Điều kiện: khi có request *://<slug>.b-cdn.net/* thì chuyển đến https://jola.dev{{path}}

Kết luận và đánh giá

  • Cấu hình này mới chỉ đề cập đến các tính năng cơ bản của bunny.net, còn Edge Rules, cấu hình cache nâng cao, Security Shield, video streaming, Edge Scripting, Edge Containers vẫn chưa được đề cập
  • Thống kê, log và metric trên dashboard rất chi tiết, có thể theo dõi trạng thái cache và sự cố ở cấp độ từng request
  • Tác giả đang tiếp tục chuyển toàn bộ dịch vụ sang bunny.net và kỳ vọng vào dịch vụ lưu trữ tương thích S3 trong tương lai
  • Đây là một lựa chọn đủ sức cạnh tranh như giải pháp thay thế Cloudflare, ngay cả với người dùng cá nhân

1 bình luận

 
Ý kiến trên Hacker News
  • Với một bài viết blog mang tính tích cực như vậy, có lẽ nên nêu rõ vì mục đích minh bạch công khai rằng mọi liên kết trên trang đều trỏ tới Bunny Affiliate Program

    • Tôi nhận ra mình đã chèn quá nhiều liên kết nên đã gỡ bớt một phần. Tôi chỉ thêm vào vì thấy việc Bunny có chương trình tiếp thị liên kết khá thú vị thôi, chứ không cố tình che giấu
    • Tôi không phải chuyên gia pháp lý, nhưng nếu không công khai các giới thiệu có nhận thù lao thì có thể là vi phạm hướng dẫn của FTC. Có vẻ ở Anh cũng có quy định tương tự, không chỉ riêng Mỹ
  • Tôi đang dùng bunny.net cho CDN và DNS
    Tôi luôn thấy bất an rằng dịch vụ miễn phí một ngày nào đó có thể chuyển sang trả phí, nên tôi nghĩ tốt hơn là trả một khoản nhỏ ngay từ đầu. Tăng từ $2 lên $3 thì ổn, nhưng từ miễn phí lên $20 thì khá rủi ro
    Hơn nữa, tôi thích những công ty nhỏ và độc lập biết quan tâm tới nhà phát triển. Vì vậy tôi dùng bunny.net, transistor.fm và Plausible Analytics

    • Khi điều đó xảy ra thì cứ chuyển sang nhà cung cấp khác thôi. CDN và DNS gần như không có khóa chặt nhà cung cấp, chỉ cần xuất cấu hình rồi nhập sang nơi khác
    • Xét về mặt logic, khả năng cao Cloudflare chỉ điều chỉnh theo hướng giảm bớt mức sử dụng miễn phí. Trong thực tế họ cũng muốn tránh các chính sách giá mang tính tự hủy lẫn nhau. Dùng công ty nhỏ vẫn là một lựa chọn tốt
    • Dịch vụ miễn phí cuối cùng thường giúp nhà cung cấp nhiều hơn, nên người dùng dễ trở thành “sản phẩm”. Khi trả tiền thì sự trao đổi giá trị trở nên rõ ràng hơn
    • Nhưng dịch vụ trả phí cũng vẫn có thể tăng giá đột ngột hoặc thay đổi điều khoản
    • Tôi cũng dùng bunny.net vì lý do tương tự. Một phần cũng là để duy trì sự đa dạng của hệ sinh thái Internet
  • Tôi đang vận hành một SaaS bằng Cloudflare Workers + Pages. Khả năng triển khai hàm serverless và trang tĩnh từ cùng một kho mã mang lại trải nghiệm phát triển rất tốt
    Nhưng gần đây tôi gặp vấn đề CDN edge cache vẫn phục vụ HTML cũ rất lâu sau khi triển khai. Việc debug khá khó, và phải đoán xem tầng cache nào đang có vấn đề
    Dù vậy, để bắt đầu với tier miễn phí thì đây vẫn là lựa chọn tốt nhất. Với Workers, Pages, KV và R2, có thể vận hành một ứng dụng production gần như miễn phí

    • Điểm mạnh lớn nhất của Cloudflare là wrangler CLI. Dùng cùng Claude Code thì có thể tự động hóa hoàn toàn việc cấu hình và debug
    • Bunny cũng có tính năng tương tự. Họ còn cung cấp API tương thích SQLite và cả edge function. Tôi đã tạo một công cụ miễn phí tên là dnsisbeautiful.com/global-http-availability vì các vấn đề debug theo từng khu vực
    • Tôi cũng gặp cùng vấn đề cache đó, và thậm chí có người từng chia sẻ script để giải quyết nó
    • Bunny không có tier miễn phí, nhưng dùng mô hình trả trước nên không có rủi ro bị tính phí bất ngờ. Tôi thích ở chỗ sẽ không có chuyện bỗng dưng bị tính tới hàng trăm nghìn đô vì lưu lượng tăng vọt
    • Chúng tôi đã cấu hình CI để tự động xóa cache sau khi triển khai. Tuy vậy, do độ trễ lan truyền cache nên nội dung stale vẫn có thể bị cache lại
  • Cloudflare giờ không còn chỉ là CDN đơn thuần mà là một nền tảng edge. Nếu có thể dễ dàng chuyển sang Bunny, thì có lẽ bạn chưa thực sự dùng tới những tính năng cốt lõi của Cloudflare
    Thật tiếc là họ không hỗ trợ đúng mức các tiêu chuẩn như WinterTC. Việc dùng hàm serve chuyên biệt như BunnySDK thậm chí còn là dạng phụ thuộc độc quyền nặng hơn

    • Nhân tiện thì nền tảng edge của Cloudflare cũng khá khép kín
    • WinterTC không quy định cách khởi động máy chủ HTTP. Ít nhất nó chỉ yêu cầu giao diện Request/Response của Fetch API
  • Chúng tôi dùng Bunny cho nhiều mục đích khác nhau và rất hài lòng. Đặc biệt chất lượng hỗ trợ rất xuất sắc. Cloudflare cũng tốt, nhưng nếu không có hỗ trợ enterprise trả phí thì sẽ có giới hạn. UpCloud cũng có hỗ trợ rất tốt

  • Người ta thường nói “Cloudflare là một điểm lỗi duy nhất của Internet”, nhưng thực tế phức tạp hơn
    Nếu các dịch vụ nhỏ được dùng đa dạng hơn thì phân bố sự cố có thể khác đi. Đổi lại, có thể sẽ xuất hiện các sự cố nhỏ thường xuyên hơn
    Ngoài ra, hạ tầng của Cloudflare cũng không hoàn toàn tập trung. Một số dịch vụ vận hành độc lập theo từng khu vực

    • Nhưng dùng một nhà cung cấp duy nhất thì vẫn là điểm lỗi duy nhất. Nếu thực sự muốn có khả năng phục hồi, bạn phải dùng song song nhiều nhà cung cấp. Tức là nên tự vận hành origin server và chỉ dùng CDN ở mức tối thiểu
  • Tôi đã chuyển sang Bunny từ một năm trước và rất hài lòng. Việc có thể hỗ trợ CDN đặt tại EU cũng rất hay, và nhờ Magic Containers mà có thể chạy một API mở rộng toàn cầu với chi phí khoảng $1/tháng

    • Magic Containers đặc biệt phù hợp với các dự án nhỏ. Nó cung cấp tính năng tương tự Cloudflare Durable Objects nhưng rẻ hơn rất nhiều
  • Bài viết này có thể trông như quảng cáo, nhưng thực ra chỉ là chia sẻ trải nghiệm đơn thuần. Liên kết tiếp thị liên kết đã được nêu rõ, không có ý định che giấu

    • Chỉ trích kiểu “chuyển từ một điểm lỗi duy nhất sang một điểm lỗi duy nhất khác” là hiểu sai. Tác giả lo ngại về sự tập trung hóa của toàn bộ Internet, chứ không phải riêng website của mình. Bunny là một lựa chọn thay thế cho cấu trúc lấy Mỹ làm trung tâm
    • Một số người đã báo cáo chuỗi thảo luận này là spam
  • Có một điều cần lưu ý là nhiều nơi như các cơ sở giáo dục thường chặn tên miền *.b-cdn.net

    • Chúng tôi cũng từng dùng Cloudflare R2 làm CDN rồi gặp vấn đề tài nguyên bị chặn ở một số cơ quan chính phủ tại châu Âu. Chuyển sang Bunny thì mọi thứ đều được giải quyết
  • Điểm đáng tiếc là không có hosting miễn phí. Dù lưu lượng thấp thì vẫn phải trả 1 euro mỗi tháng (chưa gồm VAT)
    Ngoài ra, không có nhiều nhà cung cấp DNS hỗ trợ CNAME flattening. Việc vô hiệu hóa cache cũng phải làm hai lần mới phản ánh đúng

    • Có người chế giễu mức giá, nhưng điều cốt lõi không phải số tiền mà là rào cản gia nhập. Vấn đề là phải nhập thẻ tín dụng
    • Cũng có phản ứng mỉa mai kiểu “1 euro mà cũng bảo là đắt quá”
    • Thực ra việc không có tier miễn phí không phải lỗi mà là tính năng. Đó là lựa chọn để có cấu trúc chi phí dễ dự đoán
    • So với những dịch vụ miễn phí nhưng hay sập như GitHub Pages, thì 1 euro là mức hoàn toàn đáng trả
    • Cuối cùng thì cũng chỉ là 1,20 euro mỗi tháng thôi