บทความทั้งหมด
comparisonCloudflare Tunnellocalhost tunnelingopen source

PortPreview กับ Cloudflare Tunnel: เครื่องมือคนละแบบ

นี่ไม่ใช่การประลองจริง ๆ Cloudflare Tunnel (cloudflared) และ PortPreview อยู่คนละห้อง Cloudflare Tunnel ไว้รักษาบริการให้ออนไลน์ถาวรหลัง edge ของ Cloudflare — Zero Trust, named tunnel, โดเมนกำหนดเอง PortPreview ไว้สำหรับยี่สิบนาทีถัดไปของเซสชัน dev — ทดสอบ webhook, QA มือถือ, แชร์ branch กับดีไซเนอร์ การเลือกระหว่างทั้งสองส่วนใหญ่ขึ้นกับว่าคุณมีปัญหาอะไรจริง ๆ

Cloudflare Tunnel เก่งอะไร

cloudflared ถูกสร้างเพื่อสิ่งเดียว: นำบริการขึ้นอินเทอร์เน็ตโดยไม่เปิดพอร์ตขาเข้าแม้แต่พอร์ตเดียวและไม่เปิดเผย IP origin รันบนเซิร์ฟเวอร์ ผูก named tunnel กับ hostname บนโดเมน Cloudflare ของคุณ traffic จะไหลผ่าน edge ของ Cloudflare ไปยัง origin ผ่านการเชื่อมต่อขาออกที่เครื่องคุณเริ่ม

สิ่งที่มันทำได้ดี:

  • การ routing production ฟีเจอร์ named tunnel ทนทาน รัน cloudflared เป็นบริการได้และ hostname ทำงานต่อข้ามการรีสตาร์ต
  • นโยบายเข้าถึง Zero Trust ป้องกัน tunnel หลัง SSO, MFA หรือ allowlist IP สำหรับเปิดเครื่องมือภายใน
  • โดเมนกำหนดเอง นำโดเมนของคุณมาบน Cloudflare tunnel สิ้นสุดที่ your-domain.com ไม่ใช่ subdomain ของผู้ขาย
  • การ routing WARP เข้าถึงบริการส่วนตัวจากอุปกรณ์ใด ๆ บนเครือข่าย Cloudflare โดยไม่ตั้งค่า VPN

ไม่มีสิ่งใดเกี่ยวกับการดีบัก webhook

ที่ Cloudflare Tunnel เก้ ๆ กัง ๆ สำหรับ dev

โหมด quick tunnel (cloudflared tunnel --url localhost:3000) ใกล้เคียงที่สุดที่ cloudflared เป็นเครื่องมือ dev และมันทำงาน คุณได้ URL *.trycloudflare.com ชี้ไปยังพอร์ตในเครื่อง แต่:

  • URL หมุนทุกเซสชันเหมือน tunnel dev ส่วนใหญ่
  • ไม่มีตัวตรวจคำขอในตัว คุณเห็นเฉพาะที่เซิร์ฟเวอร์ dev log และไม่มากกว่านั้น การจับ payload webhook เพื่อเล่นซ้ำภายหลังต้องติด proxy หรือ logger แยก
  • การตั้งค่า named tunnel (เวอร์ชัน URL เสถียร) เกี่ยวกับบัญชี Cloudflare, record DNS และไฟล์ config คุ้มสำหรับบริการอายุยืน; เกินจำเป็นสำหรับเซสชันวนซ้ำ webhook

ที่ PortPreview เข้ากันได้

PortPreview เป็น CLI tunnel localhost สำหรับลูป dev คำสั่งเดียว URL HTTPS สาธารณะ จับและเล่นซ้ำคำขอในตัว

npx portpreview 3000

สิ่งที่เราปรับให้ดีคือช่วงเวลาระหว่าง "ฉันเปลี่ยน handler webhook Stripe" กับ "ฉันรู้ว่ามันทำงานไหม" ช่วงนั้นควรเป็นวินาที จับ payload แก้ handler เล่นซ้ำจนเขียว ทั้งหมดโดยไม่ทริกเกอร์เหตุการณ์ต้นน้ำใหม่

เคียงข้างกัน

ความต้องการCloudflare TunnelPortPreview
เซสชันเร็วดีบัก webhookได้ (quick tunnel)สร้างมาเพื่อสิ่งนี้
จับและเล่นซ้ำคำขอไม่ใช่
hostname named เสถียรใช่ (มีการตั้งค่า)ไม่ใช่จุดเน้นเริ่มต้น
โดเมนกำหนดเองใช่subdomain ของ tunnel
นโยบายเข้าถึง Zero Trustใช่ไม่
ความซับซ้อนการตั้งค่าต่ำสำหรับ quick กลางสำหรับ namedคำสั่งเดียว
รันตลอดเป็นบริการใช่ออกแบบสำหรับเซสชัน
ไคลเอนต์โอเพนซอร์สใช่ (cloudflared)ใช่

เมื่อใดใช้ตัวไหน

ใช้ Cloudflare Tunnel เมื่อ

  • ต้องการบริการออนไลน์ 24/7 โดยไม่เปิดพอร์ตไฟร์วอลล์
  • ต้องการเข้าถึงแบบ SSO ไปยังแดชบอร์ดภายในหรือเครื่องมือ admin
  • ต้องการ URL โดเมนกำหนดเองที่เสถียรหนุนด้วย cert CA จริงและ DNS Cloudflare ที่มีอยู่
  • อยู่บน Cloudflare แล้วและต้นทุนการตั้งค่าส่วนเพิ่มน้อย

ใช้ PortPreview เมื่อ

  • วนซ้ำ handler webhook และต้องการเล่นซ้ำคลิกเดียว
  • ต้องการแชร์ branch กับดีไซเนอร์สิบนาที
  • ทดสอบ callback OAuth หรือ flow มือถือโดยไม่ตั้งค่า DNS
  • ไม่อยากจัดการบัญชี Cloudflare แค่เพื่อทดสอบเหตุการณ์ Stripe

อยู่ร่วมกันได้ดี

หลายทีมที่เราคุยด้วยใช้ทั้งสอง Cloudflare Tunnel สำหรับเครื่องมือภายในแบบ always-on ที่ต้องการ URL คงที่และ SSO PortPreview สำหรับการดีบัก webhook รายวันที่ต้องการเล่นซ้ำและคำสั่งเดียว ไม่ขัดกัน — เพียงแต่รับใช้ส่วนต่างกันของเส้นทาง dev-ถึง-prod

หากกำลังชั่ง ngrok หรือ localtunnel ด้วย การเปรียบเทียบเหล่านั้นอาจเกี่ยวข้องโดยตรงกว่า เข้าร่วมรายชื่อรอของ PortPreview สำหรับฝั่งลูป dev

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

Cloudflare Tunnel ใช้แทน PortPreview ได้ไหม?
ไม่เชิง Cloudflare Tunnel ปรับให้เหมาะกับการรักษาบริการออนไลน์ถาวรด้วย edge ของ Cloudflare — named tunnel โดเมนกำหนดเอง Zero Trust PortPreview ปรับให้เหมาะกับลูป dev — เซสชันคำสั่งเดียวพร้อมจับและเล่นซ้ำคำขอ แก้ปัญหาคนละแบบและอยู่ร่วมกันได้ดี
Cloudflare Tunnel รองรับการตรวจคำขอ webhook ไหม?
ไม่โดยกำเนิด cloudflared ส่งต่อ traffic โดยไม่มีตัวตรวจคำขอในตัว เพื่อตรวจหรือเล่นซ้ำ webhook ต้องติด proxy หรือชั้น logging แยก PortPreview รวมการจับและเล่นซ้ำใน CLI
ใช้ Cloudflare Tunnel สำหรับเซสชัน dev เร็ว ๆ ได้ไหม?
ได้ ผ่านโหมด quick tunnel (cloudflared tunnel --url localhost:3000) ใช้ได้สำหรับการเปิดเผยพื้นฐาน แต่ไม่รวมการตรวจคำขอ การเล่นซ้ำ หรือ URL เสถียรโดยไม่ตั้งค่า named tunnel เพิ่ม