หลังจาก Cloudflare ประกาศให้ใช้งาน Argo Tunnel แบบฟรี! ตอนแรกอ่านข่าวจาก blognone ก็ไม่รู้หรอกว่ามันคืออะไร แต่พอได้อ่านรายละเอียดแบบคร่าวๆ ทำให้เข้าใจได้ว่า มันคือบริการที่จะทำให้ Server ของเราออกสู่อินเทอร์เน็ตได้โดยไม่ต้องมี Public IP
ต้องเล่าย้อนกลับไปก่อนว่า host teeratech นั่นทำงานอยู่บน raspberry pi 4 ซึ่งวางอยู่ที่บ้าน โดยใช้งานผ่าน true internet จากนั้นใช้วิธี forward port router ออกไปเพื่อจะใช้งานกับ cloudflare ซึ่งทำการผูก domain ไว้เรียบร้อยแล้ว
teetech version เก่า
แต่เมื่อมี Argo Tunnel ให้ใช้งานแบบฟรีๆ ก็ไม่รอช้าที่จะเปลี่ยนไปใช้ทันที ซึ่งตอนนี้ตัวเว็บ teetatech ก็ทำงานผ่านทาง Argo Tunnel ซึ่งยังคง run อยู่บน raspberry pi 4 เหมือนเดิม
สิ่งจำเป็นต้องมีก่อนการใช้งาน Argo Tunnel
- Domain ซึ่งเป็นโดเมนที่เปลี่ยน nameservers ไปใช้งาน cloudflare เรียบร้อยแล้ว ( รายละเอียด )
- Client หรือ Server สำหรับ Install cloudflared ซึ่งผมจะใช้เป็น raspberry pi 4 ( รายละเอียด )
เริ่มขั้นตอนใช้งาน Argo Tunnel
เริ่มด้วยการ download cloudflared สำหรับ ARM จากนั้น untar แล้วลองเรียกใช้งาน
wget https://bin.equinox.io/c/VdrWdbjqyF/cloudflared-stable-linux-arm.tgz mkdir argo-tunnel tar -xvzf cloudflared-stable-linux-arm.tgz -C ./argo-tunnel cd argo-tunnel ./cloudflared –version
หลังจากเรียกใช้งาน *./cloudflared –version *จะได้ข้อความกลับมาcloudflared version 2021.4.0 ถือว่า cloudflared พร้อมใช้งานแล้ว
คำสั่ง ./cloudflared –version
ทำการ login เพื่อสร้างไฟล์ cert.pem ( รายละเอียด )
./cloudflared tunnel login
เมื่อทำการ authenticate cloudflared เรียบร้อยแล้ว จะมีข้อความประมาณนี้
You have successfully logged in. If you wish to copy your credentials to a server, they have been saved to: /home/pi/.cloudflared/cert.pem
เราต้องทำการสร้าง tunnel name และ UUID ที่เราต้องการ ( รายละเอียด )
./cloudflared tunnel create test
หลังจากสร้าง tunnel name แล้ว เราสามารถลองเรียกดู tunnel list
./cloudflared tunnel list
คำสั่ง ./cloudflared tunnel list
7. ต่อไป เราต้องสร้างไฟล์ config.yml เพื่อจะกำหนด traffic ให้กับ tunnel (
รายละเอียด
)
tunnel: 6ff42ae2-765d-4adf-8112-31c55c1551ef
credentials-file: /home/pi/.cloudflared/6ff42ae2-765d-4adf-8112-31c55c1551ef.json
ingress:
- hostname: test.example.com
service: http://localhost:80
- service: http_status:404
ตัวอย่าง config.yml
8. จากนั้น ไปที่ Cloudflare DNS เพื่อทำการสร้าง CNAME record โดนตรงส่วนของ Target ให้กำหนด UUID tunnel และตามด้วย .cfargotunnel.com (
รายละเอียด
)
วิธีสร้าง CNAME
9. ใกล้ความเป็นจริงแล้ว เพราะนี้คือขั้นตอนสุดท้าย ทำการ run tunnel ตามด้วยชื่อที่เราสร้างไว้ข้างบน (
รายละเอียด
)
./cloudflared tunnel --config config.yml run test
จบแล้ว! พร้อมสำหรับการออนไลน์ :D