PC
TNL
WEB
Cloudflare Tunnel
no port forward

Cách dùng Cloudflare Tunnel khi không mở được port

Cách dùng Cloudflare Tunnel để đưa một PC cũ hoặc mini server ra Internet khi không mở được port router, bị CGNAT hoặc đang ở mạng chung cư.

10 phút đọc15/06/2026

Bài toán rất thực tế: có máy nhưng không public được

Nhiều người có một chiếc PC cũ, mini PC hoặc laptop dư nằm ở nhà và muốn biến nó thành mini server để chạy:

  • Dashboard cá nhân
  • n8n, Gitea, Vaultwarden
  • Web app tự viết
  • Trang quản trị cho homelab
  • Home Assistant hoặc tool nội bộ

Vấn đề là bạn có máy, có Docker, có app chạy ngon trong mạng LAN, nhưng lại không đưa nó ra Internet được vì:

  • Nhà mạng chặn port inbound
  • Bạn đang ở sau CGNAT
  • Router của chung cư không cho port forwarding
  • Bạn dùng mạng chung, không kiểm soát được NAT

Đây là lúc Cloudflare Tunnel trở nên rất đáng tiền, vì nó không cần mở port từ ngoài vào nhà bạn.

Cloudflare Tunnel cho PC cũ ở nhà: cloudflared tạo kết nối outbound đến Cloudflare và public app nội bộ ra Internet mà không cần mở port router

Cloudflare Tunnel giải quyết chuyện này như thế nào

Ý tưởng cốt lõi rất đơn giản:

  1. Bạn cài cloudflared trên chiếc PC ở nhà
  2. cloudflared chủ động tạo kết nối outbound tới Cloudflare
  3. Cloudflare nhận request từ Internet
  4. Cloudflare chuyển request qua tunnel về app đang chạy trong máy của bạn

Khác biệt lớn nhất so với port forwarding là:

  • Không cần mở port 80, 443, 8080 trên router
  • Không cần IP public riêng
  • Không phụ thuộc chuyện ISP có cho NAT inbound hay không

Nói ngắn gọn, thay vì Internet gõ cửa trực tiếp vào nhà bạn, máy ở nhà sẽ chủ động đi ra ngoài trước rồi giữ một đường hầm ổn định.

Vì sao nó hợp với PC cũ hoặc mini server tại nhà

Đây là case dùng cực hợp:

  • Một máy Dell OptiPlex cũ cắm trong góc
  • Một mini PC chạy Ubuntu
  • Một máy Windows cũ vẫn còn ổn để chạy vài service
  • Một laptop dư làm server tạm

Chỉ cần máy đó có Internet outbound là đủ. Dù router không mở port được, bạn vẫn public được web app ra domain riêng.

Đây là điểm rất mạnh nếu bạn ở:

  • Chung cư dùng mạng nội bộ tập trung
  • Ký túc xá hoặc văn phòng nhỏ
  • Khu vực ISP chặn nhiều port
  • Nhà có router do nhà mạng khoá config

Những gì Cloudflare Tunnel làm tốt nhất

Cloudflare Tunnel đặc biệt hợp với:

  • HTTP/HTTPS app
  • Dashboard nội bộ
  • Reverse proxy cho nhiều service web
  • Site hoặc panel quản trị nhỏ

Ví dụ:

  • n8n.example.com -> n8n chạy ở localhost:5678
  • git.example.com -> Gitea ở localhost:3000
  • home.example.com -> Home Assistant ở localhost:8123

Nếu bạn chỉ cần public web service thì Tunnel là một trong những cách gọn nhất hiện nay.

Lưu ý quan trọng: giới hạn upload của Cloudflare

Nếu app của bạn có upload file, hãy nhớ Cloudflare có giới hạn request body ở tầng edge. Theo tài liệu Cloudflare hiện tại:

  • Free: tối đa 100 MB
  • Pro: tối đa 100 MB
  • Business: tối đa 200 MB
  • Enterprise: 500+ MB

Nếu bạn biến PC cũ thành mini server public để nhận file lớn, rất dễ gặp lỗi 413 Payload Too Large. Tunnel rất hợp cho dashboard, app web và upload nhỏ-vừa; còn video lớn hoặc file backup nhiều GB thì không phải use case đẹp nếu vẫn đi qua proxy Cloudflare mặc định.

Khi nào bài này hợp nhất

Cloudflare Tunnel hợp nhất khi bạn muốn public:

  • dashboard hoặc web app
  • panel quản trị nhỏ
  • self-hosted service chạy ở localhost:PORT

Nếu mục tiêu là expose nguyên file share SMB hoặc cả mạng LAN, đây không phải cách phù hợp nhất.

Cách cấu hình trên trang Cloudflare cho dễ làm theo

Nếu mới dùng lần đầu, cứ làm theo flow web của Cloudflare là dễ nhất:

  1. Vào Cloudflare Dashboard -> Zero Trust -> Networks -> Tunnels
  2. Chọn Create a tunnel
  3. Đặt tên, ví dụ old-pc
  4. Setup environment, nếu máy đang chạy Ubuntu hoặc Debian thì thường chọn Debian + 64-bit
  5. Copy lệnh Cloudflare đưa sẵn, rồi chạy trên PC cũ

Flow tạo Cloudflare Tunnel trên dashboard: create tunnel, setup environment, cài cloudflared bằng token, rồi add public hostname trỏ vào localhost

Với Debian 64-bit, lệnh thường có dạng:

sudo mkdir -p --mode=0755 /usr/share/keyrings
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 any main' \
  | sudo tee /etc/apt/sources.list.d/cloudflared.list
sudo apt-get update && sudo apt-get install cloudflared
sudo cloudflared service install <TOKEN_DO_CLOUDFLARE_CAP_TREN_WEB>

Token này được Cloudflare cấp ngay trên web. Chạy xong, dashboard sẽ hiện Connected, lúc đó nhấn Continue.

Tiếp theo, vào phần Add a public hostname hoặc Add route -> Public application, rồi khai báo domain và port local cần forward:

Subdomain: lab
Domain: example.com
Type: HTTP
URL: localhost:3000

Cloudflare sẽ tự cấp SSL ở edge, nhưng record phải để Proxied. Nếu để DNS only thì flow tunnel web app sẽ không chạy như mong đợi.

Bạn chỉ cần nhớ công thức:

  • lab.example.com -> localhost:3000
  • panel.example.com -> localhost:8080
  • n8n.example.com -> localhost:5678

Tóm tắt flow ngắn nhất

  1. Cho app chạy local trên PC cũ, ví dụ localhost:8080
  2. Vào Cloudflare tạo tunnel
  3. Chọn Debian + 64-bit
  4. Chạy lệnh cloudflared service install <token>
  5. Add route / Public application trỏ về đúng port local
  6. Đảm bảo hostname đang ở trạng thái Proxied

Làm xong 6 bước này là bạn đã có thể biến PC cũ thành mini server public mà không cần port forwarding truyền thống.

Nếu chỉ muốn thử nhanh: Quick Tunnel

Có, nhưng chỉ nên xem như cách thử nhanh.

Cloudflare có Quick Tunnels để bạn public tạm một app mà không cần cấu hình đầy đủ trên dashboard. Tuy nhiên:

  • URL thường là tạm thời
  • Không phù hợp để dùng lâu dài
  • Không phải cách tốt nhất cho mini server chạy ổn định

Với bài toán homelab hoặc public app trên PC cũ, nên dùng named tunnel với domain riêng ngay từ đầu.

Vì sao cách này đáng dùng

  • Không phụ thuộc router hay port forwarding
  • Tận dụng lại PC cũ rất hiệu quả
  • Dễ ghép với Docker, Nginx hoặc app chạy local
  • Có thể thêm Cloudflare Access nếu không muốn public hoàn toàn

Những chỗ dễ làm sai

1. Tưởng Tunnel thay thế luôn bảo mật ứng dụng

Tunnel giúp public app mà không cần mở port, nhưng nó không tự sửa lỗi auth yếu, admin/admin hoặc panel không có bảo vệ.

2. Quên mất giới hạn upload 100 MB của Cloudflare

Nhiều người public xong một app rồi mới phát hiện upload file lớn bị lỗi 413. Nếu use case của bạn là nhận file rất lớn, Tunnel không phải lúc nào cũng là đường đi phù hợp nhất.

3. Public thẳng quá nhiều service cùng lúc

Cái gì thực sự cần public thì mới public. Các admin panel nội bộ nên cân nhắc thêm Access hoặc ít nhất là auth mạnh.

4. Nhầm Tunnel với việc expose cả mạng nhà

Tunnel hợp để public app. Nếu bạn cần truy cập nguyên subnet nội bộ, đó là một bài toán khác.

5. Không để tunnel chạy như service

Nếu chỉ chạy bằng terminal rồi đóng cửa sổ, tunnel sẽ biến mất. Với máy server, nên chạy kiểu service để survive reboot.

Kết luận

Nếu bạn đang có một chiếc PC cũ ở nhà nhưng không thể public app vì router không mở được port, ISP chặn inbound, hoặc bạn đang ở mạng chung của chung cư, Cloudflare Tunnel là một giải pháp rất thực dụng.

Nó cho phép bạn biến những chiếc máy cũ thành mini server public mà không cần port forwarding truyền thống. Với các app web, dashboard và service nhỏ, đây là một trong những cách dễ nhất để đưa homelab ra Internet mà vẫn giữ cấu hình mạng ở nhà tương đối đơn giản.