Cloudflare tunnel
Cloudflare Tunnel (cloudflared) สร้างการเชื่อมต่อออกรูปแบบ persistent outbound TLS จากเครื่องต้นทาง (origin) ไปยังเครือข่าย edge ของ Cloudflare ทำให้ Cloudflare สามารถรับทราฟฟิกและส่งต่อไปยัง service ภายในเครื่องของคุณ ได้โดยตรงโดยไม่ต้องเปิดพอร์ตบนไฟร์วอลล์
องค์ประกอบหลัก
Section titled “องค์ประกอบหลัก”- cloudflared (client) — ตัวโปรแกรมที่รันบนเครื่องของคุณ สร้างการเชื่อมต่อออกไปยัง Cloudflare และอ่าน config.yml / credentials เพื่อกำหนด ingress rules
- Cloudflare Edge — จุดรับทราฟฟิกจากอินเทอร์เน็ต (HTTPS) และส่งต่อผ่าน tunnel ไปยัง client
- Tunnel Credentials — ไฟล์ JSON ที่ได้จาก cloudflared tunnel create หรือ cloudflared login เก็บไว้บนเครื่อง (~/.cloudflared หรือโฟลเดอร์ที่กำหนด)
- Ingress rules / DNS route — นิยามว่า hostname ไหนจะถูกแมปไปที่ service ไหน (เช่น myapp.example.com → http://localhost:3000) และสามารถ map DNS ด้วย cloudflared tunnel route dns ได้
Install
Section titled “Install”https://developers.cloudflare.com/cloudflare-one/networks/connectors/cloudflare-tunnel/downloads
Commands
Section titled “Commands”Authentication
Section titled “Authentication”# เข้าสู่ระบบcloudflared logintunnel
Section titled “tunnel”# สร้าง url tunnel แบบชั่วคราวcloudflared tunnel --url <local-url>
# สร้าง tunnelcloudflared tunnel create <name>
# ดูรายการ tunnel ที่มีcloudflared tunnel list
# ดูรายละเอียดของ tunnelcloudflared tunnel info <name-or-UUID>
# รัน tunnel ที่สร้างไว้ (ใช้ชื่อหรือ UUID)cloudflared tunnel run <name-or-UUID>
# หยุดการรัน (ถ้ารัน foreground ให้ Ctrl+C)# ลบ tunnel (จะลบ credentials/registration ใน Cloudflare)cloudflared tunnel delete <name-or-UUID>
# map tunnel กับ dnscloudflared tunnel route dns <name-or-UUID> <hostname>วิธีใช้งานเบื้อต้น
Section titled “วิธีใช้งานเบื้อต้น”สร้าง tunnel
cloudflared tunnel create <name>ทำการสร้าง config เพื่อ setting การ map router โดยสร้างไฟล์ config.yml ที่ path ~/.cloudflared/config.yml
config.yml
tunnel: {UUID}credentials-file: ~/.cloudflared/{UUID}.json
ingress: # frontend - hostname: app.example.com service: http://localhost:3000
# api service - hostname: api.example.com service: http://localhost:8080
- service: http_status:404สร้าง dns record เพื่อเชื่อมเข้ากับ tunnel ด้วยคำสั่ง
cloudflared tunnel route dns <name-or-UUID> <hostname>รัน tunnel
cloudflared tunnel run <name-or-UUID>ลองเข้าเว็บด้วย app.example.com จะพบว่า cloudflare มัน route มาที่ http://localhost:3000 ถือว่าเสร็จสิ้นขั้นตอนการใช้งาน
Set cloudflare as service
Section titled “Set cloudflare as service”ถ้าอยากให้เปิดเครื่องมาแล้ว start tunnel เลย set ตามนี้เลย https://developers.cloudflare.com/cloudflare-one/networks/connectors/cloudflare-tunnel/do-more-with-tunnels/local-management/as-a-service/