⚡
OpenCode.io.vn
Quay lại Blog
14 tháng 10, 2026OpenCode Vietnam8 phút đọc

OpenCode từ xa: OpenTunnel, Tailscale hay cloudflared — chọn cách nào?

Chạy thử thật OpenTunnel mới của OpenCode 2 (pair --remote): link 1 lần sống 5 phút, bảo vệ 401, tắt bằng một lệnh. So sánh với Tailscale và cloudflared, khi nào nên tự host tunnel.

#opencode#cli#vps#self-host#huong-dan#ai-coding

OpenCode từ xa: OpenTunnel, Tailscale hay cloudflared — chọn cách nào?

OpenCode 2 gần đây có thêm opencode pair --remote — nối thiết bị từ xa qua OpenTunnel. Nghe thì giống mấy cách mình đang dùng hằng ngày (Tailscale, cloudflared), nhưng thực ra khác hẳn về mục đích.

Mình đã chạy thử thật trên máy, đo từng bước, và kết luận gọn: ba cách này không thay thế nhau. Bài viết để bạn khỏi tốn buổi chiều thử sai — OpenTunnel là gì, đo được gì khi chạy thật, khác gì Tailscale/cloudflared, và có nên tự host tunnel không.

⚡

VPS cho coder & vibe coding

Deploy app, chạy agent dài hoặc giữ môi trường thử nghiệm tách khỏi máy chính

Link affiliate Tino Group: OpenCode Vietnam có thể nhận hoa hồng, giá bạn trả không đổi.


Tóm tắt nhanh

  • OpenTunnel = link mời tạm — dùng 1 lần, sống 5 phút, để pair một thiết bị mới. Không phải "đường chạy hằng ngày".
  • Tailscale — hợp nhất cho thiết bị của chính bạn/team: kín, không lộ internet, ổn định 24/7.
  • cloudflared + reverse proxy — hợp khi muốn web UI cố định 1 domain, bookmark như app.
  • Tự host OpenTunnel — chưa đáng, trừ khi cần tunnel 24/7 độc lập máy hoặc tự chủ hạ tầng.

OpenTunnel là gì?

Ngắn gọn: nó giống ngrok, nhưng do chính team làm OpenCode xây — dự án riêng anomalyco/opentunnel, viết bằng Rust, license MIT. Mỗi máy nhận một hostname dạng *.opentunnel.xyz. Thiết kế gọi là "blind TLS": máy bạn giữ private key và tự terminate TLS, nên server trung gian không đọc được nội dung traffic.

Trong OpenCode, bạn dùng qua một lệnh:

opencode pair --remote

Lần đầu chạy, nó hỏi rõ trước khi mở:

▲  This will expose your OpenCode server to the internet.
│  Traffic is end-to-end encrypted, and access requires your server password.

Đồng ý xong (~1 phút để dựng tunnel + cert) là bạn có link + QR để nối thiết bị mới.


Chạy thử thật: 6 điều mình đo được

Bối cảnh: macOS, OpenCode v2.0.28, đo ngày 14/10/2026. Số liệu dưới đây là đo thật, không chép docs.

Đo gìKết quả
Bật lần đầu~1 phút, không phải cấu hình gì
Link pairDùng 1 lần, hết hạn sau 5 phút, in kèm QR
Vào từ điện thoạiMở link là vào — không phải gõ mật khẩu, vì cái link chính là chìa
Bảo vệGọi API không auth → 401; mật khẩu server vẫn là lớp chặn chính
Link sau khi dùng/hết hạnCả 2 link cũ thử lại đều 401 — lộ link cũ vô hại
Tắtopencode service set remote false → tunnel đóng ngay, không còn gì trên internet
ℹ️

Một điểm dễ hiểu nhầm: tắt máy hoặc dừng service là tunnel đóng theo — server vẫn là máy của bạn. Muốn "vào được 24/7" thật thì server phải nằm ở nơi luôn bật.


Hai thứ tên na ná nhau nhưng ngược mục đích:

  • Pair link (opencode pair --remote): mời thiết bị vào server. Pair xong, thiết bị thấy toàn bộ session như đang ngồi trước máy. Link 1 lần + 5 phút là hạn của cái link mời, không phải hạn dùng.
  • Share link (/share): chia sẻ một session cho người khác xem. Người nhận chỉ đọc, không điều khiển được gì; muốn gỡ thì /unshare.

So sánh 4 cách

CáchƯuNhược
TailscaleKín hoàn toàn, không lộ internet; đã đóng gói chuẩn cho team (ACL + watchdog); free cá nhânNgười ngoài tailnet không vào được; phải cài app trên từng thiết bị; máy server phải bật
cloudflared + reverse proxyDomain cố định, bookmark như app; máy khác chỉ cần link + mật khẩuTự dựng, tự bảo trì; web UI phơi ra internet thường trực; máy server phải bật
OpenTunnel (hosted)1 lệnh, không dựng gì; link 1 lần + 5 phút; máy được mời chỉ cần trình duyệtPhụ thuộc hạ tầng bên thứ ba; chưa thấy bảng giá công khai; máy phải bật; trong 5 phút link còn hạn, ai mở trước thì vào
OpenTunnel tự hostTự chủ 100%; MIT, sửa/fork thoải mái; dùng cho mọi app; chạy trên VPS thì tunnel luôn sẵn sàngPhải tự nuôi: server + MySQL + domain + cert; chưa tài liệu hoá nối bản tự host vào pair --remote

Muốn xem hướng dẫn Tailscale bản đóng gói cho team (serve tự chạy + watchdog + ACL), mình để ở repo diginno-net/opencode-remote-setup.


Vậy chọn gì?

  • Dùng hằng ngày, thiết bị của mình/team → Tailscale. Kín nhất, ổn định nhất.
  • Mời máy ngoài tailnet (khách, máy chưa cài gì) → opencode pair --remote, dùng xong tắt.
  • Web UI cố định 1 domain → cloudflared — nhưng tự hiểu là đang phơi cửa thường trực, đặt mật khẩu tử tế.
  • Cần 24/7 dù máy cá nhân tắt → lúc đó mới cần server ở nơi luôn bật, ví dụ một VPS riêng — dựng cả opencode serve lẫn tunnel ở đó.

Kết luận

  • OpenTunnel lấp đúng một chỗ trống: mời thiết bị nhanh, an toàn, tạm thời — 1 lệnh, link tự chết sau 5 phút, không để lại cửa mở.
  • Nó không thay Tailscale/cloudflared — ba cách phục vụ ba mục đích khác nhau, dùng đúng tình huống thì thay vì "chọn cái nào" bạn sẽ "dùng cả ba".
  • Tự host OpenTunnel: chưa đáng với nhu cầu thường — thêm một hệ thống để vận hành, trong khi lợi ích chính (tự chủ) chưa cấp thiết.

Nguồn tham khảo

Số liệu đo trên macOS, OpenCode v2.0.28, ngày 14/10/2026. Giá và tính năng của bên thứ ba có thể thay đổi theo thời điểm.

Bạn đang cho OpenCode ra ngoài bằng cách nào? Vào nhóm OpenCode Vietnam kể mình nghe.