Hiểu nôm na nhé 👇
Cloudflare Tunnel (cloudflared) và reverse SSH (SSH tunnel) đều là “mở cổng từ trong ra ngoài”, không cần mở port trên server nội bộ. Nhưng đẳng cấp & mục đích khác nhau khá xa.
Cloudflare Tunnel cho phép server local / VPS private của bạn chủ động kết nối ra Cloudflare, rồi Cloudflare làm cổng trung gian public.
Luồng đi kiểu này:
Browser → Cloudflare (HTTPS) → Tunnel → Server local (localhost:80 / 127.0.0.1)
✔ Không cần:
✔ Có sẵn:
Reverse SSH thường dùng kiểu:
ssh -R 8080:localhost:80 user@vps_public
Luồng:
Browser → VPS public :8080 → SSH tunnel → local server
✔ Dùng được
❌ Nhưng:
👉 Reverse SSH phù hợp dev/debug, không phù hợp production
| Tiêu chí | Cloudflare Tunnel | Reverse SSH |
|---|---|---|
| Public IP | ❌ Không cần | ✅ Cần VPS |
| Mở port | ❌ Không | ❌ Không |
| HTTPS | ✅ Auto | ❌ Tự xử |
| WAF / DDoS | ✅ Có | ❌ Không |
| Auth user | ✅ Có (SSO) | ❌ Không |
| Stable | ✅ Rất ổn | ❌ Hay rớt |
| Dùng cho PROD | ✅ Chuẩn bài | ❌ Không nên |
| Dev nhanh | ⚠ Hơi setup | ✅ Rất nhanh |
Rất hợp với mấy case của ông dev như bạn 👇
👉 Cloudflare Tunnel = ngrok bản enterprise, free
# Ubuntu / VPS curl -fsSL https://pkg.cloudflare.com/install.sh | sudo bash sudo apt install cloudflared
Windows:
.execloudflared tunnel login
→ Mở browser → chọn domain
cloudflared tunnel create my-tunnel
cloudflared tunnel route dns my-tunnel dev.domain.com
~/.cloudflared/config.yml
tunnel: my-tunnel
credentials-file: /root/.cloudflared/xxxx.json
ingress:
- hostname: dev.domain.com
service: http://localhost:80
- service: http_status:404
cloudflared tunnel run my-tunnel
🎉 Xong – https://dev.domain.com trỏ thẳng về localhost
🔥 Cái reverse SSH không bao giờ có:
Cloudflare Access → chỉ cho Gmail @company.comReverse SSH = tạm bợ, dev, cứu cháy
Cloudflare Tunnel = chuẩn production, lâu dài, an toàn