ใช้ cloudflare tunnel แทน ngrok

Posted on

เนื่องจากใช้ ngrok url ของเราจะเปลี่ยนไปเรื่อยๆ ไม่สามารถใช้ตัวเดิมได้ blog นี้จะมาลองติดตั้งใช้งาน cloudflare tunnel, cloudflared กัน url ที่ได้เราสามารถเลือกได้ โดยการกำหนด CNAME ของ domain ที่เราเป็นเจ้าของ

cloudflared ใช้งานได้ฟรี แต่จะต้องสมัครใช้บริการ/มี cloudflare account ก่อน ซึ่งนั้นก็หมายความว่าต้องเป็นเจ้าของ domain name ซักชื่อนึงก่อน

free domain name ให้ไปสร้างจาก freenom.com (ถ้าเขาเปิดรับสมัครอีกก็จัดมาได้เลย) หรือจะไปซื้อ domain ราคาถูก (1usd) กับ namecheap.com ก็ได้

วิธีติดตั้ง cloudflared cli ดูได้จาก ที่นี่

  1. Download และติดตั้ง download command line ที่ใช้สำหรับ OS ของเรามาก่อน ใน blog นี้จะใช้ Window OS
  2. เมื่อได้ cloudflared.exe มาแล้ว เพื่อให้สะดวกเรียกใช้งานให้ copy ไปไว้ใน folder c:\Windows
  3. Authen กับ cloudflare website

ใช้คำสั่ง

❯ cloudflared tunnel login

A browser window should have opened at the following URL:

https://dash.cloudflare.com/argotunnel?callback=https%3A%2F%2Flogin.cloudflareaccess.org%2FPDfB2KMNF7CYWz7WPZptB61-42HJVosYhPheXCmWN1E%3D

If the browser failed to open, please visit the URL above directly in your browser.
You have successfully logged in.
If you wish to copy your credentials to a server, they have been saved to:
C:\Users\sir\.cloudflared\cert.pem

มันจะเปิดหน้า cloudflare ให้เรา login และเลือก domain ที่เราต้องการทำ tunnel ไปหา เมื่อเลือกใน browser เรียบร้อยแล้ว เราจะได้ไฟล์ cert.pem

  1. สร้าง tunnel
❯ cloudflared.exe tunnel create ssga
Tunnel credentials written to C:\Users\sir\.cloudflared\10fd719b-c00c-4b40-9481-7f14416bca83.json. cloudflared chose this file based on where your origin certificate was found. Keep this file secret. To revoke these credentials, delete the tunnel.

Created tunnel ssga with id 10fd719b-c00c-4b40-9481-7f14416bca83
  1. สร้างไฟล์ config.yml
tunnel: 10fd719b-c00c-4b40-9481-7f14416bca83
credentials-file: C:\Users\sir\.cloudflared\10fd719b-c00c-4b40-9481-7f14416bca83.json

tunnel ใช้ค่า hash ที่ได้จาก create command (ตรง Created tunnel ssga with id)

  1. สร้าง route และ CNAME ชื่อ subdomain ที่จะใช้เรียกแล้ววิ่งมาที่เครื่องเรา/เครื่องที่เปิด cloudflared tunnel
❯ cloudflared.exe tunnel route dns ssga regid-bpi
2021-09-10T04:21:01Z INF Added CNAME regid-bpi.softsquare.ga which will route to this tunnel tunnelID=10fd719b-c14c-4b40-9481-7f14416bca83

คำสั่ง cloudflared.exe tunnel route dns ssga regid-bpi
regid-bpi คือชื่อ subdomain ที่จะใช้ เวลาเรียกใช้จะเป็น regid-bpi.softsquare.ga

  1. เริ่มใช้งาน tunnel

cloudflared.exe tunnel --config C:\Users\sir.cloudflared\ga-config.yml run --url http://localhost:80 ssga

--config ระบุไฟล์ config
--url ตัว url ของ app/service ที่อยู่ในเครื่องเรา

ตัวอย่าง

❯ cloudflared.exe tunnel --config C:\Users\sir\.cloudflared\ga-config.yml run --url http://localhost:80 ssga
INF Starting tunnel tunnelID=10fd719b-c00c-4b40-9481-7f14416bca83
INF Version 2021.8.7
...
INF cloudflared will not automatically update on Windows systems.
INF Generated Connector ID: efd29585-1a25-46d3-90cc-6a349fc3c7d6
INF Initial protocol http2
INF Starting metrics server on 127.0.0.1:50398/metrics
INF cloudflared does not support loading the system root certificate pool on Windows. Please use --origin-ca-pool <PATH> to specify the path to the certificate pool
...