Cài Cloudflare Tunnel Trên VPS TrumVPS - Ẩn IP Thật, SSL Miễn Phí, Không Cần Mở Port
Bạn có biết rằng mỗi khi mở port 80/443 trên VPS, IP thật của bạn bị lộ hoàn toàn? Chỉ cần một cuộc tấn công DDoS là website của bạn có thể sập ngay lập tức. Cloudflare Tunnel (trước đây là Argo Tunnel) giải quyết triệt để vấn đề này — nó tạo một đường hầm bảo mật từ VPS lên Cloudflare, giúp bạn không cần mở bất kỳ port nào mà website vẫn truy cập được từ internet, kèm theo SSL miễn phí và chống DDoS tích hợp.
Cloudflare Tunnel Hoạt Động Như Thế Nào?
Cloudflare Tunnel tạo một kết nối outbound từ VPS của bạn đến mạng lưới edge của Cloudflare thông qua daemon cloudflared. Khi người dùng truy cập domain của bạn:
- Request đến Cloudflare edge → được lọc DDoS, cache, WAF
- Cloudflare chuyển request qua tunnel đã thiết lập đến VPS
- Website của bạn phản hồi qua tunnel → Cloudflare trả về người dùng
Toàn bộ quá trình không cần mở port 80 hay 443 trên VPS. Firewall của bạn có thể đóng hoàn toàn các port inbound.
Yêu Cầu
- VPS TrumVPS chạy Ubuntu 22.04/24.04 (gói 40K là đủ)
- Domain đã trỏ DNS về Cloudflare (bắt buộc — add domain vào Cloudflare trước)
- Đã cài đặt web server (Nginx/Apache) hoặc ứng dụng web trên VPS
Bước 1: Cài Đặt cloudflared
Cloudflare cung cấp package chính thức cho hầu hết các distro. Với Ubuntu, cài như sau:
curl -fsSL https://pkg.cloudflare.com/cloudflare-main.gpg | sudo tee /usr/share/keyrings/cloudflare-main.gpg >/dev/null
echo 'deb [signed-by=/usr/share/keyrings/cloudflare-main.gpg] https://pkg.cloudflare.com/cloudflared jammy main' | sudo tee /etc/apt/sources.list.d/cloudflared.list
apt update && apt install cloudflared
Kiểm tra cài đặt:
cloudflared --version
Bước 2: Xác Thực Với Cloudflare
Chạy lệnh xác thực — nó sẽ mở trình duyệt để bạn đăng nhập Cloudflare:
cloudflared tunnel login
Sau khi đăng nhập, chọn domain bạn muốn sử dụng. File chứng chỉ sẽ được lưu tại ~/.cloudflared/cert.pem.
Bước 3: Tạo Tunnel
Tạo tunnel mới với tên gợi nhớ:
cloudflared tunnel create my-tunnel
Lệnh này tạo tunnel trên Cloudflare dashboard và lưu credentials JSON tại ~/.cloudflared/<tunnel-id>.json.
Liệt kê các tunnel đã tạo:
cloudflared tunnel list
Bước 4: Cấu Hình DNS & Tunnel
Tạo file cấu hình ~/.cloudflared/config.yml:
tunnel: YOUR-TUNNEL-ID
credentials-file: /root/.cloudflared/YOUR-TUNNEL-ID.json
ingress:
- hostname: yourdomain.com
service: http://localhost:80
- hostname: www.yourdomain.com
service: http://localhost:80
- service: http_status:404
Giải thích:
ingress: định tuyến request từ domain đến service nội bộservice: http://localhost:80: trỏ đến Nginx/Apache trên VPSservice: http_status:404: rule catch-all — bất kỳ hostname nào không khớp sẽ trả về 404
Tạo DNS record tự động:
cloudflared tunnel route dns my-tunnel yourdomain.com
cloudflared tunnel route dns my-tunnel www.yourdomain.com
Cloudflare sẽ tự động tạo CNAME record trỏ đến tunnel. Bạn có thể kiểm tra trên Cloudflare dashboard → DNS.
Bước 5: Chạy Tunnel Như Service
Cài đặt tunnel chạy như systemd service để tự khởi động cùng VPS:
cloudflared service install
systemctl start cloudflared
systemctl enable cloudflared
Kiểm tra trạng thái:
systemctl status cloudflared
Xem logs nếu có lỗi:
journalctl -u cloudflared -f
Bước 6: Kiểm Tra & Bảo Mật
Sau khi tunnel chạy, truy cập domain của bạn qua HTTPS. Cloudflare tự động cấp SSL, bạn không cần làm gì thêm.
Đóng tất cả port inbound (đây là điểm mạnh nhất của tunnel):
ufw default deny incoming
ufw allow 22/tcp ← chỉ mở SSH
ufw enable
Nâng Cao: Chạy Nhiều Service Qua Một Tunnel
Bạn có thể expose nhiều service qua cùng một tunnel bằng cách thêm ingress rules:
ingress:
- hostname: web.yourdomain.com
service: http://localhost:80
- hostname: portainer.yourdomain.com
service: http://localhost:9443
- hostname: api.yourdomain.com
service: http://localhost:3000
- service: http_status:404
Mỗi subdomain trỏ đến một port nội bộ khác nhau — tất cả đều được bảo vệ bởi Cloudflare.
Ưu Điểm Cloudflare Tunnel So Với Cách Truyền Thống
| Tiêu chí | Mở Port Truyền Thống | Cloudflare Tunnel |
|---|---|---|
| Bảo mật IP | ❌ Lộ IP thật | ✅ Ẩn hoàn toàn |
| Chống DDoS | ❌ Phải tự xử lý | ✅ Cloudflare chặn sẵn |
| SSL | ⚠️ Phải cài riêng | ✅ Tự động |
| Port mở | ❌ 80, 443 mở | ✅ Không cần mở port |
| Chi phí | Miễn phí | ✅ Miễn phí |
Các Lỗi Thường Gặp & Cách Fix
Lỗi "Unable to reach the origin service"
Nguyên nhân: cloudflared không kết nối được đến service local. Kiểm tra Nginx/Apache có đang chạy trên port đúng không: curl localhost:80. Nếu không có response → restart web server.
Lỗi "ERR_SSL_VERSION_OR_CIPHER_MISMATCH"
Vào Cloudflare dashboard → SSL/TLS → chọn chế độ "Full" hoặc "Full (strict)". Không chọn "Flexible" nếu origin server của bạn có SSL.
Tunnel chạy nhưng không nhận request
Kiểm tra DNS: dig yourdomain.com — phải thấy CNAME record trỏ đến <tunnel-id>.cfargotunnel.com. Nếu không → chạy lại cloudflared tunnel route dns.
Cần VPS để cài Cloudflare Tunnel?
TrumVPS - CPU Platinum, NVMe SSD - Tốc độ cao, ổn định cho tunnel 24/7!
Mã giảm giá: 42089QPI03TI (-9%)
THUÊ VPS NGAY