Như các bạn biết là muốn deploy một cái web application thì 90% đều cần có IP tĩnh. Tuy nhiên vụ này cũng đôi khi làm mình rắc rối vì khách hàng - người trả tiền cho chúng ta chưa đồng ý với cái UI hiện tại, họ muốn xem và feedback trước khi go live. Mà muốn làm thế thì cần tốn tiền thuê server, hoặc dịch vụ hosting nào đấy và mấy cái đó tốn tiền.

Có một cách khá nay do một anh đồng nghiệp giới thiệu đó chính là dùng Cloudflare tunnel để publish cái web app mình ra bên ngoài. Cơ chế làm việc của cái này được mô tả trong hình này nà.

Cloudflare tunnel

Việc cần làm là chúng ta cần setup một cái service cloudflared trên con laptop của chúng ta và Cloudflare sẽ lo phần còn lại. Phần còn lại chính là Cloudflare sẽ tự tạo DNS record (tất nhiên, domain đó phải được quản lý bởi Cloudflare). Traffic khi đến network Cloudflare thì nó sẽ được forward tới cái tunnel được tạo ra bởi cái service mà chúng ta cài đặt và network của nó.

Theo mình với cách làm này thì chúng ta có một số lợi ích nhu sau:

  • Không cần IP tĩnh mà vẫn publish được web app.
  • Bảo mật, an toàn vì bạn không phải publish port nào ra ngoài cả.

Tuy nhiên vẫn có một số vấn đề khi thực hiện theo cách này

  • Sẽ tốn phí nếu muốn làm Load balancing.
  • Chỉ thích hợp cho làm Test/Dev environment mà thôi.
  • Phải tin tưởng Cloudflare.
  • Setup không dễ, phải setup kiểu service trên systemd hay window service

Các bước tiến hành để làm như sau:

  1. Chuyển domain về Cloudflare quản lý.
  2. Cài đặt cloudflared command.
  3. Config tunnel theo mẫu code bên dưới.
> cloudflared tunnel login

> cloudflared tunnel --hostname abc.google.com --url http:/localhost:8080
cloudflared tunnel