Bài toán: Nếu bạn là một dev, đôi khi muốn show cho khách hàng một cách nhanh chóng và thuận tiện nhất hoặc test một số webhook từ bên thứ 3 thì đây là một giải pháp thay thế.
Cài đặt Cloudflare tunnel
Xem hướng dẫn tại phần đầu bài viết này:
Hãy chú ý cài đặt cloudflared dạng service để tự khởi động & bạn đang có domain trỏ qua cloudflare nhé.
cloudflared service install sudo systemctl start cloudflared
Tạo Tunnel
Mở terminal, thực hiện các bước sau
# Login
loudflared tunnel login
# Tạo tunnel
cloudflared tunnel create my-local-server
Sau bước này chúng ta sẽ có <TunnelId> và <CredentialsFilePath>. Hãy lưu lại đường dẫn của chúng.
Cấu hình
Tạo file config.yml trong thư mục cùng cấp với <CredentialsFilePath> vừa nhận được từ bước trên.
Ở đây mình muốn demo một website, mình sẽ chạy port 3000 và 3001 trên local rồi map ra internet cho khách hàng xem.
Nội dung mẫu:
tunnel: <TUNNEL_ID>
credentials-file: <CredentialsFile>
ingress:
# Service 1: API Backend
- hostname: demo-api.abc.com
service: http://localhost:3001
# Service 2: Front end
-hostname: demo.abc.com
service: http://localhost:3000
# Rule cuối cùng bắt buộc: Trả về 404 nếu không khớp domain nào
- service: http_status:404
Gắn DNS cho subdomain
cloudflared tunnel route dns my-local-server demo-api.abc.com
cloudflared tunnel route dns my-local-server demo.abc.com
Việc này sẽ tự tạo CNAME trên DNS Record của domain, bạn không cần làm thủ công
Khởi chạy tunnel
cloudflared tunnel run my-local-server # my-local-server là tên tunnel bạn muốn chạy
Cuối cùng, hãy khởi động các service (ví dụ Web service) vào các port mong muốn, truy cập URL để kiểm tra.
Chúc các bạn thành công!