ตั้งเซิร์ฟเวอร์บ้านๆ ออกเน็ตง่ายๆ ด้วย Cloudflare Tunnel

Cloudflare Tunnel เนี่ยนะ คือตัวช่วยชีวิตเลยสำหรับคนอยากเปิดบริการอะไรในบ้านออกเน็ต

ปกติเราต้องไปเซ็ต Port Forwarding บนเราเตอร์ใช่มะ? แล้วไหนจะเรื่อง Dynamic DNS อีก ถ้า IP ไม่นิ่ง ผมเคยปวดหัวกับไอ้พวกนี้ประจำ โดยเฉพาะตอนจะทำเดโมให้เพื่อนดู หรือรัน Home Assistant ให้แม่บ้านใช้จากข้างนอก

แต่ Cloudflare Tunnel มันโคตรง่ายอ่ะ! ไม่ต้องยุ่งกับเราเตอร์เลยซักนิดเดียว มันสร้าง Tunnel วิ่งทะลุไฟร์วอลล์ออกไปหา Cloudflare โดยตรงเลย แล้ว Cloudflare ก็จัดการเรื่อง DNS, SSL ให้หมด โคตรคูล!

มันทำงานยังไงนะ?

หลักการมัน simple มาก คือเราจะติดตั้ง cloudflared agent บนเซิร์ฟเวอร์ในบ้านเรา

ไอ้ตัว agent เนี่ย มันจะไปเชื่อมต่อกับ Cloudflare network ผ่าน outbound connection (HTTPS ปกติ) แล้วเมื่อมีคนเข้าเว็บเราผ่าน Cloudflare (ที่ผูกกับ DNS ของเรา) ทราฟฟิกนั้นจะถูกส่งผ่าน Tunnel ที่สร้างขึ้นมานี่แหละ กลับมาที่เซิร์ฟเวอร์ในบ้านเราเลย

มาลองทำกันเลยดีกว่า

สมมติผมมี Ubuntu Server อยู่ที่บ้านนะ

1. ติดตั้ง cloudflared

โค้ดนี้สำหรับ Ubuntu/Debian นะฮะ:

curl -L https://github.com/cloudflare/cloudflared/releases/latest/download/cloudflared-linux-amd64 -o /usr/local/bin/cloudflared
chmod +x /usr/local/bin/cloudflared

# ถ้าอยากให้มันเป็น service systemd
sudo cloudflared service install

บางทีถ้าลืม sudo ตอน service install มันจะบ่นๆหน่อยนะ ว่าไม่มีสิทธิ์ ต้องรันใหม่นะฮะ

2. เข้าสู่ระบบ (Authenticate)

เปิด Terminal พิมพ์:

cloudflared tunnel login

มันจะเปิดหน้า Browser ให้เราไป Log In กับ Cloudflare Account ของเรา พอ Login เสร็จ มันจะสร้าง certificate file ไว้ที่ ~/.cloudflared/

3. สร้าง Tunnel ใหม่

ตั้งชื่อ Tunnel ของเรา:

cloudflared tunnel create my-home-server-tunnel

เสร็จแล้วมันจะสร้าง Tunnel ID มาให้เราด้วยนะ หน้าตาประมาณ a1b2c3d4-e5f6-7890-abcd-ef0123456789 จดไว้หน่อยก็ดี หรือมันจะอยู่ใน output อยู่แล้ว

4. ตั้งค่า Config File

เราต้องบอก cloudflared ว่าจะให้ Tunnel นี้เชื่อมต่อไปที่ไหน สร้างไฟล์ config.yml ขึ้นมา เช่น:

# ~/.cloudflared/config.yml หรือจะเก็บไว้ที่อื่นก็ได้นะ แค่ตอนรันต้องบอกพาธถูก
tunnel: a1b2c3d4-e5f6-7890-abcd-ef0123456789 # เปลี่ยนเป็น Tunnel ID ของคุณ
credentials-file: /root/.cloudflared/a1b2c3d4-e5f6-7890-abcd-ef0123456789.json # อันนี้ก็เปลี่ยนตามพาธและชื่อไฟล์ของคุณ

ingress:
  - hostname: myapp.yourdomain.com # เปลี่ยนเป็น Domain ของคุณ
    service: http://localhost:8000 # ชี้ไปที่บริการในบ้านเรา เช่นเว็บที่รันบน port 8000
  - service: http_status:404 # ถ้าไม่ตรงกับ hostname ด้านบน ให้ตอบ 404

Important: พาธของ credentials-file ต้องถูกนะฮะ บางทีลืมเปลี่ยนนี่คือรันไม่ขึ้นเลย

5. สร้าง DNS Record

ไปที่หน้า Cloudflare Dashboard ของ Domain ที่เราจะใช้ (เช่น yourdomain.com) เพิ่ม DNS Record แบบ CNAME: * Type: CNAME * Name: myapp (หรืออะไรก็ได้ที่เรากำหนดใน hostname ด้านบน) * Target: a1b2c3d4-e5f6-7890-abcd-ef0123456789.cfargotunnel.com (เอา Tunnel ID ของเรามาใส่ แล้วต่อด้วย .cfargotunnel.com) * Proxy status: Proxied (เปิดเมฆส้ม)

6. รัน Tunnel!

สุดท้ายก็สั่งให้มันทำงาน:

cloudflared tunnel run my-home-server-tunnel --config ~/.cloudflared/config.yml

ถ้าทุกอย่างถูกต้อง มันจะขึ้นว่า "Tunnel is running" อะไรประมาณนั้น ถ้าจะรันเป็น service ก็ใช้ systemctl start cloudflared ได้เลย

ข้อควรระวังและคิดเห็นส่วนตัว

  • เรื่องความปลอดภัย: เออ มันดีนะ เพราะมันไม่ได้เปิด Port อะไรเลย แต่ก็ต้องมั่นใจว่าปลายทางในบ้านเราปลอดภัยพอ
  • ประสิทธิภาพ: สำหรับใช้งานส่วนตัว หรือพวก PoC นี่คือเหลือๆ แต่ถ้าเป็น Production ที่ทราฟฟิกมหาศาล อาจจะต้องดูเคส by เคสไป
  • ฟรีแค่ไหน?: ถ้าใช้แค่ Tunnel ปกติคือฟรี แต่ถ้ามีฟีเจอร์ Enterprise อันนั้นก็เสียเงินตามปกติ

ผมโคตรชอบ Cloudflare Tunnel เลยนะ บอกเลยว่าชีวิตดีขึ้นเยอะ ไม่ต้องมานั่งงมกับ Router ตั้ง Port Forwarding ให้เสียเวลา เหมาะกับพวกชอบลองของ หรือรันอะไรนิดๆ หน่อยๆ ที่บ้านสุดๆ

ลองใช้ดูนะ ไม่ผิดหวังหรอก!

Read more

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

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

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

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

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

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

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

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

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

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

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

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

By ทีมงาน devdog