Tailscale Funnel & Serve: đưa web ra internet không mở port

Chia sẻ bài viết

Mục lục
Tailscale Funnel & Serve: đưa web ra internet không mở port

Trả lời nhanh: tailscale serve phơi một dịch vụ web cho các thiết bị trong tailnet; tailscale funnel đẩy nó ra internet công khai qua địa chỉ HTTPS dạng ten-may.ten-tailnet.ts.net: không mở port, không cấu hình reverse proxy, chứng chỉ TLS tự động. Hợp nhất cho demo, webhook, chia sẻ nhanh; sản phẩm chạy lâu dài với tên miền riêng thì vẫn cần VPS.

Bạn code xong một web app trên VPS hay laptop và muốn gửi link cho khách xem ngay, không muốn trỏ tên miền, cài Nginx, xin chứng chỉ. Đó chính xác là bài toán của cặp lệnh Serve và Funnel có sẵn trong Tailscale. Lượt tìm tailscale funnel ở VN tăng 13 lần trong 4 năm. Bài này thao tác cả hai, so sánh thẳng với Cloudflare Tunnel và ngrok, và vạch rõ giới hạn để bạn biết lúc nào cần đường bền hơn.

Tóm tắt nhanh
  • Serve = chia sẻ trong tailnet (chỉ thiết bị của bạn thấy); Funnel = công khai cho cả internet
  • Địa chỉ dạng ten-may.ten-tailnet.ts.net, HTTPS tự động, không mở port nào
  • Funnel chỉ nhận cổng 443, 8443, 10000 và bắt buộc qua relay của Tailscale
  • So với Cloudflare Tunnel: Funnel nhanh-gọn hơn, Tunnel mạnh hơn về tên miền riêng và cache
  • Chạy dịch vụ nghiêm túc: VPS + reverse proxy + tên miền riêng vẫn là đường chính

Serve và Funnel khác nhau thế nào

Cùng cú pháp, khác đối tượng nhìn thấy. Serve dựng một HTTPS endpoint chỉ hữu hình bên trong tailnet, dùng khi muốn đồng nghiệp trong mạng xem dashboard nội bộ, hay tự mình mở dịch vụ ở máy khác. Funnel nâng endpoint đó lên công khai: bất kỳ ai trên internet mở được URL, không cần cài gì. Cả hai đều tự lo chứng chỉ TLS cho tên miền ts.net của máy, phần việc vốn phải cài Nginx + certbot nay còn một lệnh.

Chuẩn bị: bật HTTPS certificates và kiểm tra quyền Funnel

Trong admin console: mục DNS, bật HTTPS Certificates (tailnet mới thường được nhắc bật ngay). Funnel cần thêm quyền trong policy, lần đầu chạy lệnh, Tailscale in ra link dẫn thẳng đến chỗ bật, bấm theo là xong. Máy chạy dịch vụ đã ở trong tailnet theo bài cài đặt.

Serve: chia sẻ trong tailnet bằng một lệnh

Giả sử app Node đang chạy ở cổng 3000 trên VPS:

tailscale serve 3000
# -> https://vps-tnd.tail1234.ts.net/ tro ve localhost:3000

Mọi thiết bị trong tailnet mở URL đó là thấy app, HTTPS chuẩn không cảnh báo. Các biến thể hữu ích:

# phuc vu mot thu muc tinh
tailscale serve /var/www/bao-cao
# mount vao path rieng
tailscale serve --set-path=/api 8080
# xem cau hinh dang chay / go bo
tailscale serve status
tailscale serve reset

Funnel: công khai ra internet

Đổi đúng một chữ:

tailscale funnel 3000
# -> https://vps-tnd.tail1234.ts.net/ gio mo duoc tu bat ky dau

Gửi link cho khách hàng, họ mở bằng trình duyệt thường, không cần Tailscale. Dùng xong tắt bằng tailscale funnel reset (hoặc funnel off tùy bản). Chạy nền lâu dài thì thêm --bg. Lưu ý ba giới hạn cứng: chỉ các cổng công khai 443, 8443, 10000; bắt buộc tên miền ts.net (không gắn tên miền riêng); và traffic công khai đi qua relay của Tailscale, băng thông phù hợp demo/webhook, không phù hợp phát hành sản phẩm đông người dùng.

Funnel vs Cloudflare Tunnel vs ngrok: chọn gì

Tailscale FunnelCloudflare Tunnelngrok free
Tên miền riêngKhông (ts.net)Không (URL ngẫu nhiên)
Độ bền URLỔn định theo máyỔn địnhĐổi mỗi phiên
Qua relay bên thứ baCó (kèm CDN/cache)
Setup1 lệnh nếu đã có tailnetCài cloudflared + có tên miền1 lệnh
Hợp nhất choDemo trong hệ Tailscale sẵn cóSite chạy dài, tên miền đẹpPhiên demo 15 phút

Đang xài Tailscale sẵn → Funnel là đường ngắn nhất. Cần tên miền riêng, cache, chạy nhiều tháng → Cloudflare Tunnel. Cần bật tắt trong một buổi họp → ngrok.

Khi demo thành sản phẩm: chuyển lên đường bền

Funnel là cây cầu tạm xuất sắc. Nhưng khi khách bắt đầu dùng thật, bạn cần tên miền của mình, băng thông không qua relay, log và cache tự chủ, tức một VPS với reverse proxy chuẩn (Caddy 3 dòng cấu hình là có HTTPS tên miền riêng). App nặng I/O, database ghi nhiều, media, thì đặt thẳng trên VPS NVMe ngay từ đầu đỡ một lần dọn nhà. Điểm hay: VPS đó vẫn nằm trong tailnet của bạn, quản trị qua Tailscale SSH, database đóng port công cộng, chỉ web mở ra ngoài.

Câu hỏi thường gặp

Funnel có miễn phí không?

Có trong các gói hiện hành, kể cả Personal, chỉ cần bật quyền trong policy. Giới hạn nằm ở kỹ thuật (cổng, tên miền ts.net, băng thông qua relay) chứ không ở phí.

Gắn tên miền riêng cho Funnel được không?

Không, Funnel phục vụ trên tên máy .ts.net của bạn. Muốn tên miền riêng thì hai đường: Cloudflare Tunnel (miễn phí, cần tên miền) hoặc VPS + reverse proxy (chủ động hoàn toàn).

Funnel có chậm không?

Traffic công khai đi qua relay của Tailscale nên độ trễ và băng thông không bằng kết nối thẳng. Demo, webhook, trang nội bộ ít người: hoàn toàn ổn. Ứng dụng đông người dùng: nên ra VPS.

Webhook từ dịch vụ ngoài (Sepay, GitHub) nhận qua Funnel được không?

Được, đây là một trong những cảnh dùng hợp nhất: URL ts.net ổn định, HTTPS chuẩn, dịch vụ ngoài gọi vào máy dev của bạn sau CGNAT mà không cần mở port. Lên production thì chuyển endpoint về server thật.

Hạ tầng VPS tại Việt Nam của TND
Cloud VPS linh hoạt và VPS NVMe xung cao, IP công cộng riêng, đặt tại Việt Nam
Demo bằng Funnel, phát hành trên hạ tầng của chính bạn: VPS NVMe TND cho app nặng I/O với ổ Enterprise U.2 RAID 10, hoặc Cloud VPS phổ thông cho web nhẹ, cả hai đều IP riêng, tên miền riêng, và vẫn quản trị an toàn qua tailnet. Bàn giao trong 5 phút.
Dùng thử VPS NVMe, bàn giao trong 5 phútNhu cầu nhẹ hơn? Xem Cloud VPS

Bài viết liên quan