วิธี Config Domain ใหม่บน Cloudflare Tunnel + Django Server (ฉบับทำจริง)
แชร์ Facebook Facebook Group LINE
Behind the Scenes

วิธี Config Domain ใหม่บน Cloudflare Tunnel + Django Server (ฉบับทำจริง)

DP
dphoompat
AIBiz Thailand
20 views 2 นาที 29 พ.ค. 2026

ระบบทำงานแบบนี้

ก่อนเริ่ม ขอให้เข้าใจภาพรวมก่อน:

Browser (ทั่วโลก)
     ↓
Cloudflare Network
     ↓
Cloudflare Tunnel (cloudflared daemon)
     ↓
Ubuntu Server 192.168.1.2 (LAN)
     ↓
Gunicorn port 8000 → Django App

ข้อดีของระบบนี้: ไม่ต้องมี Public IP จาก ISP, ไม่ต้องเปิด port บน router, Cloudflare รับ HTTPS แล้วส่งต่อผ่าน tunnel เข้า LAN

สถาปัตยกรรมระบบ Cloudflare Tunnel

ขั้นตอนที่ 1 — ตรวจสอบปัญหาก่อนแก้ (สำคัญมาก)

ก่อนจะไปแตะอะไร ให้ตรวจ 3 จุดก่อนเสมอ

เช็ค cloudflared logs

sudo journalctl -u cloudflared -f

เช็ค DNS records ใน Cloudflare Dashboard

เข้า dash.cloudflare.com → เลือก domain → DNS → Records ถ้า domain ใช้ Cloudflare Tunnel ถูกต้อง DNS record จะเป็น CNAME ชี้ไปที่ <tunnel-id>.cfargotunnel.com

ขั้นตอนที่ 2 — Update cloudflared ให้เป็น version ล่าสุด

sudo apt-get update && sudo apt-get install cloudflared -y
cloudflared --version
sudo systemctl restart cloudflared
sudo systemctl status cloudflared

ต้องเห็น Active: active (running) ถึงจะเดินต่อได้

ขั้นตอนที่ 3 — แก้ ALLOWED_HOSTS ใน .env

Django จะตอบ request จาก host ที่อยู่ใน list นี้เท่านั้น ถ้า domain ใหม่ไม่อยู่ใน list → Django ตอบกลับ 400 Bad Request ทันที

ALLOWED_HOSTS=192.168.1.2,localhost,noodee-bootbiz.com,www.noodee-bootbiz.com

ใช้ sed แก้แบบ non-interactive:

sed -i 's|ALLOWED_HOSTS=...(เดิม)...|ALLOWED_HOSTS=...(ใหม่)...|' .env

ขั้นตอนที่ 4 — เพิ่ม CSRF_TRUSTED_ORIGINS ใน settings.py

Django ตั้งแต่ version 4.0 ต้องระบุ trusted origins ด้วย ถ้าไม่ใส่ → form ทุกอันจะขึ้น 403 CSRF verification failed

CSRF_TRUSTED_ORIGINS = [
    'https://noodee-bootbiz.com',
    'https://www.noodee-bootbiz.com',
]

หมายเหตุ: ต้องใส่ https:// นำหน้าเสมอ

ขั้นตอนที่ 5 — Restart Django service

sudo systemctl restart peyo-agent
sudo systemctl status peyo-agent

ขั้นตอนที่ 6 — เพิ่ม Route ใน Cloudflare Zero Trust Dashboard

ไปที่ one.dash.cloudflare.com → Networks → Tunnels → คลิก tunnel

⚠️ สำคัญมาก: ต้องใช้ tab "Published application routes" เท่านั้น ไม่ใช่ "Hostname routes (Beta)"

Tabใช้งานได้จริง
Hostname routes (Beta)❌ ไม่แนะนำ — ยังไม่ stable
Published application routes✅ ใช้อันนี้
  • Subdomain: (เว้นว่าง)
  • Domain: noodee-bootbiz.com
  • Path: (เว้นว่าง — รับทุก path)
  • Type: HTTP | URL: localhost:8000

วิธีเพิ่ม Route ใน Cloudflare Dashboard

ขั้นตอนที่ 7 — ตรวจสอบว่าทุกอย่างทำงาน

sudo journalctl -u cloudflared -f

ถ้า config update สำเร็จ จะเห็น: Updated to new configuration ที่มี domain ใหม่

คำถามที่พบบ่อย (FAQ)

ตาราง Error 522

Error 522 คืออะไร

522 Connection Timed Out หมายความว่า Cloudflare เชื่อมต่อมาถึง server แต่ server ไม่ตอบ สาเหตุที่พบบ่อย: Gunicorn ไม่รัน, cloudflared หยุดทำงาน, Route ชี้ไป port ผิด, ALLOWED_HOSTS ไม่มี domain

หลาย domain ชี้มา port เดียวกันได้ไหม

ได้ครับ ไม่มี conflict Cloudflare Tunnel รองรับ multiple hostnames ต่อ tunnel ได้ Django แยก domain ผ่าน request.get_host() ไม่ใช่ port

ทำไม IP จริงของ server ไม่กระทบ

เพราะ cloudflared ทำงานแบบ outbound connection ISP เปลี่ยน IP ไม่กระทบเลย ย้าย server ไปอยู่ที่อื่น แค่ run cloudflared ที่ใหม่ก็ใช้งานได้ทันที

สรุป Checklist ครบ 10 ขั้น

Checklist 10 ขั้นตอน

สนใจให้ AI ทำงานในธุรกิจคุณ?

ปรึกษาฟรี ตอบกลับภายใน 24 ชั่วโมง

ปรึกษาฟรี
ปรึกษาฟรี