
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.
- 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:3000Mọ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 resetFunnel: 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 dauGử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 Funnel | Cloudflare Tunnel | ngrok free | |
|---|---|---|---|
| Tên miền riêng | Không (ts.net) | Có | 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ứ ba | Có | Có (kèm CDN/cache) | Có |
| Setup | 1 lệnh nếu đã có tailnet | Cài cloudflared + có tên miền | 1 lệnh |
| Hợp nhất cho | Demo trong hệ Tailscale sẵn có | Site chạy dài, tên miền đẹp | Phiê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.
Bài viết liên quan
- Cloudflare Tunnel: đưa web trên VPS ra internet không mở port
- Tailscale là gì? Mạng riêng nối mọi thiết bị của bạn
- Truy cập NAS, Jellyfin, Home Assistant từ xa không mở port
- Bun runtime trên VPS: chạy Next.js nhanh hơn Node.js 2x?
- Cảnh báo bảo mật khẩn: 2 lỗ hổng nghiêm trọng CVE-2026-31431 (Linux Kernel) và CVE-2026-41940 (cPanel) - Hướng dẫn xử lý
- VPS free dùng thử 2026: 5 cách get VPS miễn phí + caveat thật
- OpenClaw + Discord: build bot AI có ngữ cảnh nhớ cho community
- Tailscale trên Android: APK, Android TV và exit node
- Tailscale SSH: quản trị server không cần mở port 22



