Skip to content
Tenvo AI · TRỰC TIẾP · v0.16.4 · TLS · Chứng chỉ cho từng thiết bị · AGPL-3.0 · MIỄN PHÍ · 30 THIẾT BỊ · HẠ TẦNG TỰ LƯU TRỮ · BYO API KEY · MCP CHO CLAUDE & CURSOR
Quay lại BlogHướng dẫn

Remote desktop tự lưu trữ: hướng dẫn trung thực 2026

Tenvo Editorial Team12 phút đọc
Remote desktop tự lưu trữ: hướng dẫn trung thực 2026

Bạn có thể tự lưu trữ relay — stack là mã nguồn mở và hướng dẫn này đi qua toàn bộ quá trình cài đặt. Những hướng dẫn ngắn thường bỏ qua chi phí vận hành liên tục và ai nên đảm nhận việc đó.

Tìm kiếm "self-hosted remote desktop" và bạn sẽ thấy hàng chục hướng dẫn kết thúc ở docker compose up -d. Việc cài đặt là phần dễ, thực sự mất khoảng 30 phút. Hướng dẫn này trình bày đầy đủ — rồi tiếp tục phần quyết định xem bạn có nên làm điều đó hay không: chi phí để giữ hệ thống hoạt động sau khi hướng dẫn kết thúc.

Câu trả lời ngắn

Tự lưu trữ khi một yêu cầu bắt buộc buộc bạn phải làm vậy. Dùng relay quản lý khi không có yêu cầu nào cả. Câu này nghe có vẻ đơn giản, nên đây là bài kiểm tra thực tế:

  • Tự lưu trữ nếu: một nghĩa vụ tuân thủ viết rõ rằng lưu lượng phiên không được đi qua hạ tầng bên thứ ba; bạn vận hành mạng air-gapped hoặc mạng bị giới hạn khiến relay bên ngoài không thể truy cập; hoặc quy định lưu trữ dữ liệu buộc bạn phải ở trong một khu vực pháp lý nhất định.
  • Dùng relay quản lý nếu: lý do của bạn là bất kỳ biến thể nào của "Tôi thích tự chạy nó hơn." Đó là một sở thích thực sự, và đồng thời là một công việc vận hành thường trực — xem phần hóa đơn bên dưới trước khi bạn đăng ký.

Quan trọng là rõ ràng bạn đang chọn giữa cái gì, vì đây không phải hai sản phẩm khác nhau. Tenvo là AGPL-3.0 và relay quản lý chạy cùng kiến trúc hbbs/hbbr mà hướng dẫn này cài. Lựa chọn là ai vận hành máy chủ, không phải phần mềm làm gì.

Đầu tiên: relay thực sự có thể nhìn thấy gì

Điều này quan trọng hơn bất cứ thứ gì khác, vì thường đó là lý do người ta chọn tự lưu trữ ngay từ đầu — và thường thì được mô tả sai.

Trên kết nối peer-to-peer trực tiếp, phiên chạy end-to-end giữa hai thiết bị. Khi không thể thiết lập kết nối trực tiếp — symmetric NAT, firewall doanh nghiệp nghiêm ngặt — phiên sẽ được relay, và TLS sẽ chấm dứt tại relay. Ai vận hành relay đó thì có khả năng thấy lưu lượng được relay. Chúng tôi sẽ không nói khác đi về relay của mình.

Đó là thuộc tính của giao thức, không phụ thuộc vào người trả tiền cho server. Chạy relay tự mình không làm mã hoá thêm bất cứ thứ gì mà relay của nhà cung cấp không làm được; nó chỉ thay đổi ai chiếm vị trí đó. Nếu câu trả lời cho "ai được phép chiếm vị trí đó" được ghi trong nghĩa vụ tuân thủ, tự lưu trữ là lựa chọn đúng và phần còn lại của hướng dẫn này dành cho bạn. Nếu không có gì được ghi chép, bạn đang nhận một công việc vận hành để giải quyết một vấn đề bạn không có.

Những gì bạn sẽ xây dựng

Hai dịch vụ:

  • hbbs (rendezvous server): xử lý bắt tay ban đầu. Cả hai client kết nối đến nó trong thời gian ngắn để phát hiện nhau, trao đổi khoá công khai, và xác định xem P2P trực tiếp có khả thi không. Lắng nghe trên TCP/UDP 21115-21117.
  • hbbr (relay server): mang phiên khi P2P trực tiếp thất bại. Lắng nghe trên TCP 21117 (và UDP cho một vài kịch bản).

Relay chỉ can thiệp khi P2P không hoạt động — thường gặp trên NAT của người dùng tiêu dùng, hiếm trên thiết lập cùng LAN. Vì vậy ngay cả khi tự lưu trữ, bạn chỉ trả băng thông VPS cho những phiên thực sự cần relay.

Bước 1: Chọn VPS

Băng thông là tài nguyên quan trọng. CPU và RAM là tối thiểu, vì relay chỉ chuyển tiếp byte chứ không xử lý chúng nhiều.

  • Hetzner CX22 (€4/mo, 2 vCPU, 4 GB RAM, 20 TB bandwidth, EU data centres) — tỷ lệ giá/băng thông tốt nhất.
  • DigitalOcean Basic Droplet ($6/mo, 1 vCPU, 1 GB, 1 TB bandwidth) — UX tốt, vùng US/EU.
  • OVH VPS Starter (€3.50/mo, 2 vCPU, 2 GB, unmetered bandwidth) — tốt nhất cho kịch bản cần băng thông cao.

Chọn vùng gần các client sẽ kết nối. Lưu lượng relay bị ràng buộc bởi round-trip, nên đây là đòn bẩy lớn nhất bạn có trên độ trễ cảm nhận — và, như đề cập bên dưới, cũng là điểm mà một VPS đơn lẻ kém nhất.

Bước 2: Thiết lập server

Khởi tạo một VPS Ubuntu 22.04 hoặc Debian 12 mới. SSH vào bằng root.

# Update + harden basics
apt update && apt upgrade -y
apt install -y ufw fail2ban docker.io docker-compose-plugin
ufw allow 22/tcp     # SSH
ufw allow 21115:21119/tcp
ufw allow 21115:21119/udp
ufw enable
systemctl enable --now docker

Đừng bỏ qua firewall. Cấu hình mặc định chỉ mở các cổng cần thiết; mọi thứ khác nên bị khoá.

Bước 3: Chạy hbbs + hbbr qua Docker

Tạo /opt/tenvo-relay/docker-compose.yml:

services:
  hbbs:
    image: rustdesk/rustdesk-server:latest
    container_name: hbbs
    restart: unless-stopped
    ports:
      - "21115:21115/tcp"
      - "21116:21116/tcp"
      - "21116:21116/udp"
      - "21118:21118/tcp"
    command: hbbs -r your-server.example.com:21117
    volumes:
      - ./data:/root
  hbbr:
    image: rustdesk/rustdesk-server:latest
    container_name: hbbr
    restart: unless-stopped
    ports:
      - "21117:21117/tcp"
      - "21119:21119/tcp"
    command: hbbr
    volumes:
      - ./data:/root

Thay your-server.example.com bằng hostname thực, rồi khởi động:

cd /opt/tenvo-relay
mkdir -p data
docker compose up -d
docker compose logs --tail 20

hbbs in ra một khoá công khai khi lần đầu khởi động. Lưu nó từ logs (id_ed25519.pub trong volume data) — client dùng nó để xác thực rằng họ đang kết nối tới relay của bạn chứ không phải một kẻ mạo danh.

Bước 4: Cấu hình DNS

Trỏ một A record cho relay.yourdomain.com tới IP VPS. Một IP trần cũng được, nhưng hostname dễ quản lý hơn nếu bạn cần di chuyển sau này.

Bước 5: Trỏ client tới relay của bạn

Phần mà hầu hết hướng dẫn lướt qua. Mỗi client cần ba giá trị:

  • ID server = relay.yourdomain.com:21116
  • Relay server = relay.yourdomain.com:21117
  • Public key = nội dung của data/id_ed25519.pub từ VPS của bạn

Trên Windows, macOS và Linux:

  1. Mở client Tenvo hoặc RustDesk.
  2. Settings → Network → ID/Relay server.
  3. Nhập ba giá trị trên và lưu.
  4. Khởi động lại client.

Chỉ báo trạng thái nên chuyển xanh trong vài giây. Nếu vẫn đỏ, kiểm tra luật firewall và xem khoá công khai có khớp chính xác không — newline thừa thường là nguyên nhân.

Bước 6: Thêm TLS

Đặt reverse proxy trước các cổng relay. Caddy là đường ngắn nhất:

relay.yourdomain.com {
    reverse_proxy /ws/* localhost:21118
    reverse_proxy * localhost:21115
}

Caddy phát hành và gia hạn chứng chỉ Let's Encrypt cho bạn. Cập nhật client để dùng cổng 443 với TLS bật — điều này cũng giúp vượt qua các firewall outbound hạn chế chỉ cho phép 443.

Bước 7: Sao lưu khoá

Thư mục data/ chứa cặp khoá của rendezvous server. Mất nó thì mọi client phải được cấu hình lại với khoá công khai mới — thủ công, trên từng máy.

# Local backup
rsync -avz vps:/opt/tenvo-relay/data/ ~/tenvo-relay-backup-$(date +%Y%m%d)/
# OR copy the two key files
scp vps:/opt/tenvo-relay/data/id_ed25519* ~/tenvo-keys/

Lưu trữ ngoại tuyến. Nếu VPS bị xâm phạm, bạn muốn dựng lại trên một máy mới với cùng khoá, để client hiện có tiếp tục hoạt động mà không cần thay đổi.

Các chế độ lỗi mà hướng dẫn thường bỏ qua

Client không tới được relay. Gần như luôn là firewall. Kiểm tra ufw status, kiểm tra rằng security group của nhà cung cấp cloud cho phép cùng các cổng đó, và chạy nc -vz relay.yourdomain.com 21116 từ một client để xác nhận khả năng truy cập.

Mọi thứ đều fallback về relay. Symmetric NAT và firewall doanh nghiệp nghiêm ngặt buộc mọi phiên phải qua relay. Hiệu năng vẫn ổn, nhưng hoá đơn băng thông giờ là toàn bộ câu chuyện thay vì ngoại lệ.

Relay chết và không phục hồi. Docker's restart: unless-stopped che được các trường hợp phổ biến. Nó không che được đầy đĩa, bị OOM kill, hoặc kernel panic — cho những trường hợp đó bạn cần monitoring có khả năng gửi page cho ai đó, và người đó là bạn.

Chứng chỉ hết hạn. Tự động với Caddy. Với nginx + certbot thì đó là cron job bạn phải nhớ rằng mình sở hữu; certbot.eff.org có hướng dẫn chính thức.

Hóa đơn mà các hướng dẫn không cho bạn thấy

VPS €4 là dòng rẻ nhất trên hoá đơn, và trích nó làm chi phí của tự lưu trữ là chiêu giống như trích giá mua một chiếc ô tô làm chi phí lái xe. Phần còn lại:

  • Bạn phải trực ở chế độ on-call cho relay của mình. Khi nó chết lúc 2am, truy cập từ xa chính là thứ bạn không còn để sửa nó.
  • Patch OS, mãi mãi. Một máy lộ ra internet là máy bạn chịu trách nhiệm cập nhật.
  • Quản lý khoá. Mất data/ và bạn phải cấu hình lại từng client thủ công. Bản sao lưu đó giờ là thứ bạn phải thực sự kiểm tra khôi phục, không chỉ lên lịch.
  • Gia hạn chứng chỉ. Tự động cho tới một ngày không còn tự động nữa.
  • Một vùng, một máy. Một VPS duy nhất là một vị trí và không có failover. Client ở phía bên kia thế giới trả giá bằng độ trễ round-trip; nếu máy đó chết, mọi người đều chết.

Băng thông là chi phí duy nhất dễ ước lượng. Con số thô cho mỗi phiên được relay:

  • Chất lượng thấp, nhiều văn bản: ~50 KB/s = 180 MB/giờ
  • Trung bình, công việc văn phòng chung: ~200 KB/s = 720 MB/giờ
  • Chất lượng cao, video và thiết kế: ~1 MB/s = 3.6 GB/giờ

20 TB/tháng của Hetzner CX22 bao phủ khoảng 5.500 giờ phiên chất lượng cao được relay. Với cá nhân hoặc đội nhỏ, giới hạn đó thường không phải ràng buộc — chính xác là điểm này. Nếu băng thông là lý do bạn muốn tự lưu trữ, đó không phải lý do tốt. Các ràng buộc thật sự là bốn mục bullet ở trên.

Relay quản lý làm gì khác

Cùng kiến trúc, khác người vận hành. Hệ thống relay là đa vùng thay vì một VPS, nên client kết nối tới một điểm gần họ thay vì gần bạn. Nó được giám sát bởi những người có nhiệm vụ đó. Vật liệu khoá, patching và gia hạn chứng chỉ không còn là vấn đề của bạn. Khi có sự cố lúc 2am, người được page không phải bạn.

Đó là thứ đăng ký trả tiền mua: Free at $0, Lite at $2.99/mo, Pro at $7.99/mo — xem pricing để biết mỗi hạng có gì, hoặc the business plans nếu bạn triển khai cho đội. So với một VPS €4 cộng với ca trực on-call của bạn, phép toán không có cửa thắng cho hầu hết mọi người.

Khi nào tự lưu trữ thực sự là lựa chọn đúng

Nó đúng khi một nghĩa vụ ghi rõ: công việc có điều chỉnh mà lưu lượng không được qua hạ tầng bên thứ ba, mạng air-gapped hoặc bị giới hạn mà relay bên ngoài không thể truy cập, hoặc quy định cư trú dữ liệu buộc bạn ở trong một khu vực pháp lý. Trong những trường hợp đó chi phí vận hành không phải khoản phí phụ, nó là yêu cầu, và hướng dẫn này chính xác là thứ bạn cần.

Cũng quan trọng rằng tùy chọn đó tồn tại. Tenvo là AGPL-3.0 và stack server là mã nguồn mở, nên relay quản lý là một tiện lợi bạn trả tiền để có chứ không phải một ràng buộc bạn chấp nhận. Nếu chúng tôi ngừng đáng giá, lối thoát là hướng dẫn ở trên — đó là mục đích của việc công bố nó. Xem how the managed build compares to plain RustDesk, hoặc how the security model works.

Tóm tắt

  1. Một VPS ở vùng gần client nhất.
  2. Docker, UFW, và các container hbbs/hbbr.
  3. Một DNS A record trỏ về VPS.
  4. Ba giá trị cấu hình trên mọi client: ID server, relay server, public key.
  5. Bản sao lưu ngoại tuyến của data/ mà bạn đã thực sự khôi phục ít nhất một lần.
  6. TLS qua Caddy, và monitoring có khả năng gửi page cho bạn.

30 phút để dựng xong; vô hạn để sở hữu. Nếu một yêu cầu bắt bạn ngồi vào ghế đó, các bước ở trên là toàn bộ công việc. Nếu không có yêu cầu nào, bắt đầu với relay quản lý — download the client, và quay lại trang này vào ngày một mẫu tuân thủ làm nó trở nên liên quan.

Nhận Tenvo

Sẵn sàng tự trải nghiệm?

Miễn phí cho 30 thiết bị, không cần thẻ tín dụng. Kết nối và hoạt động trong hai phút.