เชื่อมระบบภายใน ง่ายๆ ด้วย Node-RED และ Cloudflare Tunnel

สวัสดีครับ

โปรแกรมเมอร์อย่างพวกเรานะครับ หลายๆทีเราก็มีระบบที่ทำไว้รันในเครื่อง หรือในเครือข่ายภายในของเรา เช่น พวก Node-RED ที่เราเอาไว้ทำ Automation เล็กๆ หรือระบบหลังบ้านอื่นๆนะครับ

แต่บางทีก็มีเหตุผลที่เราอยากให้ระบบพวกนี้ สามารถเข้าถึงได้จากภายนอกใช่ไหมครับ? ไม่ว่าจะจากลูกค้า จากทีมงานที่ทำงานนอกสถานที่ หรือแค่เพื่อนๆที่อยากลองเล่นดู

ปัญหาคือ การจะเปิด Port ใน Firewall หรือตั้งค่า VPN มันก็วุ่นวายใช่ไหมครับ? ผมมีทางออกง่ายๆ มาแนะนำครับ นั่นคือ Cloudflare Tunnel นะครับ

Cloudflare Tunnel จะช่วยให้เราเชื่อมต่อระบบภายในของเราออกไปข้างนอกได้อย่างปลอดภัย โดยที่เราไม่ต้องเปิด Port อะไรเลย เป็นการเชื่อมออกไปครับ ทำให้พวก Hacker เข้ามาได้ยากขึ้นเยอะเลย

มาดูกันเลยครับว่าทำยังไงบ้าง

ขั้นแรก ติดตั้ง Cloudflare Tunnel (cloudflared)

เราต้องติดตั้งโปรแกรม cloudflared ก่อนนะครับ ลองดูตามระบบปฏิบัติการของเพื่อนๆได้เลย

# สำหรับ Linux (Debian/Ubuntu) นะครับ
curl -L https://github.com/cloudflare/cloudflared/releases/latest/download/cloudflared-linux-amd64 -o cloudflared
chmod +x cloudflared
sudo mv cloudflared /usr/local/bin/

# สำหรับ Windows (PowerShell) ก็ประมาณนี้นะครับ
# Invoke-WebRequest -Uri https://github.com/cloudflare/cloudflared/releases/latest/download/cloudflared-windows-amd64.exe -OutFile cloudflared.exe

# จากนั้น Login เข้า Cloudflare นะครับ
cloudflared tunnel login

# แล้วก็สร้าง Tunnel ใหม่ ให้ชื่อว่า 'my-node-red-tunnel' นะครับ
cloudflared tunnel create my-node-red-tunnel

เมื่อสร้าง Tunnel เสร็จแล้ว เราจะได้ไฟล์ JSON ที่มี UUID ของ Tunnel เราเก็บไว้ในโฟลเดอร์ .cloudflared นะครับ

ขั้นที่สอง ตั้งค่า Tunnel ให้ Node-RED ของเรา

เราจะสร้างไฟล์ config.yml เพื่อบอก Cloudflare Tunnel ว่าให้เชื่อมโดเมนอะไร ไปที่ Node-RED ของเราที่รันอยู่พอร์ตไหนนะครับ

# config.yml
tunnel: my-node-red-tunnel
credentials-file: /root/.cloudflared/UUID.json # เปลี่ยน UUID ให้ตรงกับของเพื่อนๆนะครับ

ingress:
  - hostname: node-red.cii3.net # สมมุติว่าเราใช้โดเมนย่อยนี้ใน Cloudflare นะครับ
    service: http://localhost:1880 # Node-RED ปกติจะรันที่พอร์ต 1880 นะครับ
  - service: http_status:404 # กฎสุดท้าย ถ้าไม่มีอะไรตรง ให้ตอบ 404 นะครับ

จากนั้น เราก็แค่เพิ่ม DNS Record ใน Cloudflare Dashboard ของโดเมน cii3.net นะครับ ให้ชี้ไปที่ Tunnel ของเรา โดยใช้ประเภท CNAME และค่าเป็น UUID.cfargotunnel.com นะครับ

ขั้นที่สาม รัน Tunnel และเข้าถึง Node-RED ของเรา

ตอนนี้ก็ถึงเวลาเปิด Tunnel แล้วครับ

# รัน Tunnel ของเรานะครับ
cloudflared tunnel run my-node-red-tunnel

# ส่วน Node-RED ก็รันตามปกติเลยครับ
# node-red

เท่านี้ เพื่อนๆก็สามารถเข้าถึง Node-RED ของเราได้จาก https://node-red.cii3.net แล้วนะครับ โดยไม่ต้องเปิด Port อะไรเลย

เรื่องความปลอดภัย (Best Practice)

สำหรับเรื่องความปลอดภัยนะครับ เพื่อนๆสามารถเพิ่ม Cloudflare Access เข้าไปได้เลย คือกำหนดว่าใครจะเข้าถึงได้บ้าง อันนี้จำเป็นมากนะครับ ถ้าเป็นระบบจริงจัง

ไปที่ Cloudflare Dashboard > Access > Applications นะครับ แล้วก็สร้าง Policy สำหรับโดเมนที่เราใช้

เลือกได้ว่าจะให้ใครเข้าได้บ้าง เช่น ต้องเป็นอีเมลล์จากโดเมนที่เราอนุญาต หรือ ใช้ Identity Provider อื่นๆได้เลยครับ

แบบนี้ไม่ต้องห่วงเรื่อง Security Log ด้วยครับ เพราะ Cloudflare จัดการให้หมดเลย ผมว่าอันนี้ดีมากๆเลยครับ

อยากให้ Node-RED คุยกับระบบอื่น?

ถ้าเพื่อนๆ อยากให้ Node-RED คุยกับระบบอื่น หรือรับข้อมูลจากอุปกรณ์ IoT นะครับ ลองดูพวก Message Broker อย่าง MQTT หรือ Kafka นะครับ จะช่วยให้ระบบเรายืดหยุ่นขึ้นเยอะเลยครับ เป็น Best Practice ในการเชื่อมต่อระบบให้คุยกันได้ง่ายๆเลยนะ

หวังว่าบทความนี้จะเป็นประโยชน์กับเพื่อนๆนะครับ ลองเอาไปปรับใช้กับระบบของตัวเองดูได้เลยครับ

อ้างอิง: - Cloudflare Tunnel Documentation - Node-RED Official Website - MQTT Protocol

Read more

ไอลีน กู: ตำนานนักสกีฟรีสไตล์ผู้พลิกโฉมวงการและความหมายของชัยชนะ

ไอลีน กู: ตำนานนักสกีฟรีสไตล์ผู้พลิกโฉมวงการและความหมายของชัยชนะ

เจาะลึกเรื่องราวของ Eileen Gu นักสกีฟรีสไตล์ผู้สร้างประวัติศาสตร์ในโอลิมปิก 2026 สถิติที่ไม่เคยมีมาก่อน ประเด็นถกเถียง และความแข็งแกร่งส่วนตัวที่ทำให้เธอก้าวสู่ระดับโลก

By ทีมงาน devdog
วันพระ: คู่มือฉบับสมบูรณ์สำหรับพุทธศาสนิกชนและผู้สนใจยุคใหม่

วันพระ: คู่มือฉบับสมบูรณ์สำหรับพุทธศาสนิกชนและผู้สนใจยุคใหม่

เจาะลึกวันพระและความสำคัญของวันมาฆบูชา 2569 ทั้งวันหยุดราชการ ธนาคาร กิจกรรมเวียนเทียนต้นไม้ และผลกระทบต่อบริการขนส่ง เตรียมตัววางแผนทำบุญและพักผ่อน

By ทีมงาน devdog
ถอดรหัสรักแท้: "บังมัดคลองตันต้นข้าว" เรื่องราวที่สะท้อนการให้อภัยและการเริ่มต้นใหม่

ถอดรหัสรักแท้: "บังมัดคลองตันต้นข้าว" เรื่องราวที่สะท้อนการให้อภัยและการเริ่มต้นใหม่

เจาะลึกงานวิวาห์ "บังมัดคลองตัน" กับ "ต้นข้าว มิสแกรนด์" พร้อมเหตุผลจากใจเจ้าสาวที่เลือกความรักเหนือกาลเวลาและคำวิจารณ์ สู่การเริ่มต้นชีวิตคู่ที่สะท้อนการให้อภัย

By ทีมงาน devdog
ไฮไลท์บอลไทยลีก 2: มหาสารคาม เอสบีที เอฟซี กับฟอร์มร้อนแรงสู่เส้นทางเพลย์ออฟ

ไฮไลท์บอลไทยลีก 2: มหาสารคาม เอสบีที เอฟซี กับฟอร์มร้อนแรงสู่เส้นทางเพลย์ออฟ

เจาะลึกไฮไลท์บอลไทยลีก 2 ของมหาสารคาม เอสบีที เอฟซี กับฟอร์มร้อนแรง ชัยชนะสำคัญจาก ชิตชนก และบทบาทโค้ชดุสิต สู่เส้นทางเพลย์ออฟที่น่าจับตา!

By ทีมงาน devdog