Cloudflare

Xin chào mình là Glutis một sinh viên ngành Toán tại HUST. Do cũng có thời gian bươn trải trong thời sinh viên nên việc biết cái gì free là mình phải bào cho bằng hết :)). Cloudflare cũng là một trong những cái như vậy.

Các dịch vụ free mà cloudflare cung cấp

Theo dõi traffic web

Cloudflare Tunnel trong công việc

Cloudflare Tunnel là cách mình hay dùng để public nhanh service local ra Internet mà không cần mở port router hoặc thuê VPS làm reverse proxy. Cách này đặc biệt tiện khi cần demo, kiểm thử webhook, hoặc chia sẻ môi trường nội bộ cho team.

1) Cài đặt cloudflared trên Debian/Ubuntu

Bước 1: Tạo thư mục chứa keyring

Thư mục /usr/share/keyrings dùng để lưu public key của repository.
Mình tạo thư mục này trước để tránh lỗi khi thêm key.

1
sudo mkdir -p --mode=0755 /usr/share/keyrings

Bước 2: Tải GPG key của Cloudflare

Lệnh dưới đây tải key chính thức từ Cloudflare và lưu vào keyring local.

1
2
curl -fsSL https://pkg.cloudflare.com/cloudflare-main.gpg \
| sudo tee /usr/share/keyrings/cloudflare-main.gpg >/dev/null

Bước 3: Thêm apt repository cho cloudflared

Khai báo repository để apt biết nơi lấy package cloudflared.

1
2
echo "deb [signed-by=/usr/share/keyrings/cloudflare-main.gpg] https://pkg.cloudflare.com/cloudflared bookworm main" \
| sudo tee /etc/apt/sources.list.d/cloudflared.list

Bước 4: Cập nhật package list và cài

1
2
sudo apt update
sudo apt install cloudflared

Sau khi cài xong, có thể kiểm tra nhanh:

1
cloudflared --version

2) Public nhanh một service local (không cần tạo tunnel cố định)

Đây là kiểu chạy nhanh, phù hợp để test tức thời.
Mỗi lần chạy lệnh sẽ sinh một URL tạm thời.

Ví dụ trỏ service đang chạy ở cổng 3001:

1
cloudflared tunnel --url http://localhost:3001

Một số ví dụ cổng khác:

1
2
3
cloudflared tunnel --url http://localhost:8000
cloudflared tunnel --url http://localhost:9000
cloudflared tunnel --url http://localhost:7860

3) Chạy tunnel cố định theo tên

Với môi trường dùng lâu dài, mình thường tạo tunnel đặt tên sẵn (ví dụ gateway-tunnel) và chạy bằng:

1
cloudflared tunnel run gateway-tunnel

Cách này giúp giữ định danh tunnel ổn định, dễ map domain/subdomain và quản lý quyền truy cập hơn so với URL tạm.

4) Trỏ tên miền ra ngoài cho tunnel

Sau khi có tunnel cố định, mình cấu hình DNS trong Cloudflare để trỏ subdomain vào tunnel (qua CNAME).
Thực tế có thể làm trên Dashboard hoặc CLI, miễn nguyên tắc là:

  • Mỗi service nên tách theo subdomain riêng, ví dụ:
    • api.example.com -> service cổng 8000
    • admin.example.com -> service cổng 3001
  • Không dùng chung một host cho nhiều service nếu không có reverse proxy phân luồng rõ ràng.
  • Ưu tiên bật proxy (đám mây màu cam) để tận dụng lớp bảo vệ của Cloudflare.

5) Kiểm soát truy cập tên miền

Với service nội bộ, phần bảo mật nên làm ngay từ đầu:

  • Dùng Cloudflare Access (Zero Trust) để giới hạn theo email, nhóm user, hoặc IP.
  • Tách policy theo từng subdomain thay vì dùng một policy chung.
  • Bật thêm rule chống scan/rate limit nếu endpoint dễ bị spam.

6) Theo dõi traffic và độ ổn định

Để biết tunnel có chạy ổn định không, mình theo dõi theo 2 lớp:

  • Cloudflare Analytics/Logpush: xem request count, băng thông, top path, tỉ lệ lỗi theo thời gian.
  • Log ứng dụng local: đối chiếu mã lỗi 4xx/5xx để xác định lỗi do app hay do cấu hình route/tunnel.

Nếu traffic tăng nhanh, nên bổ sung:

  • rate limiting theo path nhạy cảm,
  • cache hợp lý cho tài nguyên tĩnh,
  • alert theo ngưỡng lỗi để phát hiện sự cố sớm.

Reference

https://chatgpt.com/share/693cd262-8ab4-800b-b28c-9d6ce5055e0a