Muốn công khai dịch vụ riêng tư của bạn ra internet mà không để lộ IP thật? Hãy để Cloudflared Tunnel trở thành vũ khí bí mật của bạn.
Vận hành một homelab có thể rất thú vị, đặc biệt khi bạn muốn truy cập từ xa an toàn vào các dịch vụ tự lưu trữ mà không phải mở toàn bộ mạng của mình. Với Cloudflare Tunnel (trước đây gọi là Argo Tunnel), bạn có thể công khai các dịch vụ nội bộ lên internet thông qua một đường hầm bảo mật, riêng tư, ngay cả khi không có địa chỉ IP công cộng.
Quên Port Forwarding đi
Một trong những lợi ích lớn nhất khi sử dụng Cloudflared Tunnel là không còn cần phải mở port trên router. Bạn sẽ không còn phải đau đầu với NAT, quy tắc tường lửa, hay lo lắng về việc các port mở bị bot quét dò.
Hướng dẫn này sẽ chỉ cho bạn cách thiết lập một đường hầm Cloudflared trên homelab của mình.
Điều kiện cần chuẩn bị:
- Một tài khoản Cloudflare
- Một tên miền được quản lý bởi Cloudflare
- Một máy trong homelab của bạn (Linux hoặc Windows) có Docker hoặc quyền truy cập trực tiếp
- Kỹ năng cơ bản về dòng lệnh
Bước 1: Cài Đặt Cloudflared
Trên Linux (Debian/Ubuntu):
sudo apt update && sudo apt install cloudflared
Hoặc qua Docker:
docker pull cloudflare/cloudflared:latest
Bước 2: Xác thực với Cloudflare
Chạy lệnh sau và đăng nhập qua trình duyệt khi được yêu cầu:
cloudflared tunnel login
Lệnh này sẽ cấp quyền cho máy của bạn tạo/quản lý các tunnel dưới tài khoản Cloudflare của bạn.
Bước 3: Tạo Tunnel
cloudflared tunnel create <TUNNEL_NAME>
Lệnh này sẽ tạo thông tin xác thực và cấp một ID đường hầm duy nhất.
Bước 4: Cấu hình định tuyến Tunnel
Tạo một file cấu hình:
- Trên Linux:
~/.cloudflared/config.yml
- Trên Windows:
%USERPROFILE%\.cloudflared\config.yml
Ví dụ nội dung:
tunnel: <TUNNEL_ID>
credentials-file: /home/user/.cloudflared/<TUNNEL_ID>.json ingress: - hostname: service.example.com service: http://localhost:8080 - service: http_status:404
Hãy thay <TUNNEL_ID>
và đường dẫn cho phù hợp.
Bước 5: Tạo bản ghi DNS
Bạn có thể:
- Tạo thủ công trên dashboard Cloudflare
- Hoặc chạy lệnh:
cloudflared tunnel route dns <TUNNEL_NAME> service.example.com
Bước 6: Chạy Tunnel
Để chạy thử nghiệm:
cloudflared tunnel run <TUNNEL_NAME>
Để chạy dưới dạng dịch vụ:
sudo cloudflared service install
Hoặc dùng Docker Compose:
version: '3.8'
services: cloudflared: image: cloudflare/cloudflared:latest restart: unless-stopped command: tunnel run <TUNNEL_NAME> volumes: - ~/.cloudflared:/etc/cloudflared
Lưu ý cuối cùng:
- Đảm bảo dịch vụ nội bộ của bạn (ví dụ: Nginx, Home Assistant, v.v.) có thể truy cập được tại URL nội bộ đã cấu hình.
- Kiểm tra Cloudflare Zero Trust dashboard để xem lưu lượng và phân tích.
- Luôn bật xác thực 2 lớp (2FA) cho tài khoản Cloudflare của bạn.
Chúc bạn tunneling vui vẻ! Thiết lập này sẽ giúp bạn truy cập an toàn dịch vụ homelab của mình từ bất cứ đâu, mà không cần mở port hay lo lắng về IP công cộng.