CloudFlare Tunnel - giải pháp thay thế mở NAT - Bảo mật truy cập cho server cá nhân - Share VN

Post Top Ad

Ads by google

Sunday, April 13, 2025

CloudFlare Tunnel - giải pháp thay thế mở NAT - Bảo mật truy cập cho server cá nhân


🔰 Đối tượng phù hợp: Hướng dẫn này phù hợp với người dùng cần triển khai các ứng dụng server cá nhân (Node.js, API nội bộ, dashboard riêng...) nhưng không thể mở port trên modem hoặc muốn bảo mật hơn khi truy cập qua HTTPS domain.
💡 Lợi ích của Cloudflare Tunnel:
  • Không cần mở port hoặc cấu hình NAT trong modem.
  • Miễn phí chứng chỉ SSL với HTTPS hoàn toàn.
  • Bảo vệ server tránh bị scan IP, tấn công trực tiếp.
  • Có thể gắn domain phụ (subdomain) cho từng app/port khác nhau.

Bước 1: Cài đặt Cloudflare Tunnel

  npm install -g cloudflared  
# Hoặc tải từ 
https://github.com/cloudflare/cloudflared/releases


Bước 2: Đăng nhập Cloudflare để tạo tunnel

cloudflared tunnel login

Sau khi mở trình duyệt và đăng nhập thành công, Cloudflare sẽ tạo file .pem tại thư mục C:\Users\[user]\.cloudflared\. Không xóa file này.



Bước 3: Tạo tunnel mới

cloudflared tunnel create proxy-server

Sau khi tạo xong, bạn sẽ thấy trên console một dòng như:

Created tunnel proxy-server with id 8b7f9277-a054-492e-a6be-036440c3b68d

Cloudflare cũng sẽ tạo file credentials JSON tại: C:\Users\[user]\.cloudflared\8b7f9277-a054-492e-a6be-036440c3b68d.json



Bước 4: Tạo file config.yml

File này nằm trong thư mục .cloudflared/config.yml. Nội dung ví dụ:

  tunnel: [tunnel-id]
credentials-file: C:/Users/[user]/.cloudflared/[tunnel-id].json

ingress:
  - hostname: bill.yourdomain.com
    service: http://localhost:123
    
  - hostname: memory.yourdomain.com
    service: http://localhost:456
    
  - service: http_status:404
  


Bước 5: Tạo bản ghi DNS trên Cloudflare

Cách 1: Trên website Cloudflare → DNS → Add Record:

  • Loại: CNAME
  • Tên: proxy
  • Trỏ tới: 8b7f9277-a054-492e-a6be-036440c3b68d.cfargotunnel.com
  • Bật Proxy (đám mây màu cam)

Cách 2 (tạo tự động bằng lệnh):

cloudflared tunnel route dns proxy-server proxy.bapstudio.xyz


Bước 6: Chạy tunnel

cloudflared tunnel run proxy-server

Nếu cấu hình đúng, bạn có thể truy cập app qua https://proxy.yourdomain.com



Bước 7 (khuyên dùng): Thêm cloudflared vào PATH môi trường

  1. Tìm thư mục chứa file cloudflared.exe.
  2. Mở Control Panel → System → Advanced → Environment Variables.
  3. Chọn biến Path phía User → Edit → Add → Dán đường dẫn thư mục ở bước 1.

Sau đó mở lại terminal, gõ cloudflared sẽ nhận lệnh ở mọi nơi.



Bước 8 (tùy chọn): Khởi động cùng Windows

  1. Mở Task Scheduler trên Windows.
  2. Tạo task mới → tab General: đặt tên tuỳ ý.
  3. Tab Triggers: Add trigger "At log on" hoặc "At startup".
  4. Tab Actions: Add → Program: đường dẫn cloudflared.exe, Arguments: tunnel run proxy-server
  5. Lưu lại. Khởi động sẽ chạy tự động.


Bước 9 (mở rộng): Tạo thêm subdomain cho các port khác

Muốn trỏ nhiều app tới các port khác nhau trên cùng server, chỉ cần sửa file config.yml như sau:

ingress:
    - hostname: proxy.yourdomain.com
      service: http://localhost:233
    - hostname: studio.yourdomain.com
      service: http://localhost:124
    - service: http_status:404

Sau đó tạo thêm bản ghi DNS cho subdomain mới:

cloudflared tunnel route dns proxy-server studio.yourdomain.com


Bước 10 (nâng cao): Chuyển tunnel sang máy khác

Nếu bạn thay máy hoặc cần di chuyển tunnel:

  • Copy file credentials JSON từ máy cũ → thư mục .cloudflared trên máy mới.
  • Copy file config.yml y nguyên sang máy mới.
  • Đảm bảo máy mới cũng có file .pem được tạo bằng lệnh cloudflared tunnel login.
  • Chạy lại tunnel bình thường: cloudflared tunnel run proxy-server


Mẹo nâng cao

  • Muốn tạo thêm subdomain khác? Thêm vào config.yml → phần ingress.
  • Muốn khởi động cùng Windows? Tạo shortcut hoặc dùng nssm để chạy tunnel như service.
  • Không cần mở port, vẫn truy cập được từ xa qua domain.
🔒 Sau khi triển khai thành công, hãy đảm bảo bảo vệ các API nội bộ bằng token hoặc xác thực.
Nếu các bạn thấy hữu ích, đừng ngại ngần chia sẻ bài này tới bạn bè của các bạn! Nếu bạn có câu hỏi gì hãy đặt câu hỏi ngay tại đây, mình sẽ trả lời sớm nhất có thể! Nếu có thiếu sót gì, các bạn hãy đóng góp ý kiến để những bài hướng dẫn sau của mình hoàn thiện hơn nhé !!!
NOTE: Nội dung trên blog thuộc bản quyền của Share VN. Vui lòng để lại nguồn khi bạn muốn sao chép! Xin cảm ơn :)

No comments:

Post a Comment

Post Top Ad