Skip to content
Back to BlogGuide

Self-Hosted Remote Desktop: The Full 2026 Guide (RustDesk + GoDesk Relay)

GoDesk Editorial Team12 phút đọc
Self-Hosted Remote Desktop: The Full 2026 Guide (RustDesk + GoDesk Relay)

Muốn remote desktop mà lưu lượng của bạn không bao giờ chạm tới máy chủ của nhà cung cấp? Hướng dẫn này đi qua việc tự-host relay end-to-end trên VPS $5/tháng — cài gì, cách gia cố, và cách xử lý các chế độ lỗi mà tài liệu thường bỏ qua.

Đối với hầu hết người dùng, relay do nhà cung cấp lưu trữ (TeamViewer, AnyDesk, GoDesk) là đủ. Mã hóa đầu-cuối nghĩa là relay chỉ nhìn thấy bản mã — nó không thể đọc khung màn hình, phím bấm, hay tệp của bạn. Nhưng "đủ" không phải "lý tưởng" nếu bạn có một trong các ràng buộc sau đây:

  • Tuân thủ: ngành bị quản lý mà dữ liệu không được phép đi qua bất kỳ hạ tầng bên thứ ba nào (pháp lý, quốc phòng, một số dịch vụ y tế).
  • Chủ quyền: bạn không muốn siêu dữ liệu truy cập từ xa của mình (ai kết nối đến gì, khi nào, trong bao lâu) bị bất kỳ ai thu thập.
  • Chi phí ở quy mô lớn: nếu bạn chạy hơn 100 thiết bị qua một relay, phí nhà cung cấp cộng dồn — relay tự-host trên VPS $5/tháng xử lý hàng nghìn phiên.
  • Mạng cách ly hoặc hạn chế: relay của nhà cung cấp không thể truy cập từ môi trường của bạn.

Nếu bất kỳ điều nào ở trên mô tả bạn, hướng dẫn này giải thích cách tự-host end-to-end trên một VPS cơ bản. Stack tham chiếu là hbbs + hbbr của RustDesk, mà cả GoDesk và client RustDesk đều có thể kết nối. Tổng thời gian thiết lập: khoảng 30 phút bao gồm TLS.

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

Hai dịch vụ:

  • hbbs (rendezvous server): xử lý trao tay ban đầu. Cả hai client kết nối tạm thời để tìm nhau, trao đổi khóa 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): nếu P2P trực tiếp thất bại (NAT, tường lửa), lưu lượng đi qua relay. Lắng nghe trên TCP 21117 (và UDP cho một số kịch bản).

Relay chỉ được dùng khi P2P không hoạt động — điều này xảy ra ở hầu hết trường hợp người tiêu dùng do NAT, nhưng hiếm trên cùng mạng LAN. Vì vậy ngay cả khi tự-host relay, bạn chỉ phải trả băng thông VPS cho các phiên thực sự cần nó.

Bước 1: Chọn VPS

Băng thông là tài nguyên chính. CPU và RAM là tối thiểu (relay chỉ chuyển tiếp byte). Các lựa chọn hợp lý năm 2026:

  • Hetzner CX22 (€4/tháng, 2 vCPU, 4 GB RAM, 20 TB băng thông, trung tâm dữ liệu EU) — tỷ lệ giá/băng thông tốt nhất.
  • DigitalOcean Basic Droplet ($6/tháng, 1 vCPU, 1 GB, 1 TB băng thông) — UX tốt, vùng US/EU.
  • OVH VPS Starter (€3.50/tháng, 2 vCPU, 2 GB, băng thông không giới hạn) — tốt nhất cho kịch bản băng thông cao.
  • Hetzner Storage Box — KHÔNG phải VPS, nêu ra vì một số người hỏi. Sẽ không dùng được cho việc này; bạn cần một máy chủ thật sự.

Chọn vùng gần nơi các client kết nối — điều này ảnh hưởng tới độ trễ vì lưu lượng relay cần đi khứ hồi.

Bước 2: Thiết lập máy chủ

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 của RustDesk chỉ mở các cổng cần thiết, nhưng phần còn lại nên bị khóa.

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

Tạo /opt/godesk-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 tế. Khởi chạy:

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

Bạn sẽ thấy hbbs in ra một khóa công khai khi khởi chạy lần đầu — lưu nó từ logs (id_ed25519.pub trong volume data) vì client dùng nó để xác minh họ đang kết nối tới relay của bạn và không phải man-in-the-middle.

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

Tạo một bản ghi A cho relay.yourdomain.com trỏ tới IP của VPS. RustDesk cũng chấp nhận IP thẳng, nhưng hostname linh hoạt hơn nếu bạn di chuyển sau này.

Bước 5: Trỏ client tới relay tự-host

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

  • Máy chủ ID = relay.yourdomain.com:21116
  • Máy chủ relay = relay.yourdomain.com:21117
  • Khóa công khai = nội dung của data/id_ed25519.pub từ VPS của bạn

Trên Windows / macOS / Linux:

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

Biểu tượng trạng thái nên chuyển sang màu xanh trong vài giây, báo đã đăng ký với relay của bạn. Nếu vẫn đỏ, kiểm tra quy tắc firewall và đảm bảo khóa công khai khớp chính xác.

Bước 6: Thêm TLS (tùy chọn nhưng khuyến nghị)

Giao thức mặc định của RustDesk đã được mã hóa ở lớp ứng dụng (khóa công khai bạn sao chép là một phần của điều đó). Thêm TLS ở trên cung cấp một lớp thứ hai và chống một số tấn công mạng thụ động. Thiết lập bao gồm một reverse proxy (nginx hoặc Caddy) trước các cổng relay.

Phiên bản Caddy (đơn giản hơn):

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

Caddy tự động cấp chứng chỉ Let's Encrypt. Cập nhật client để dùng port 443 với TLS bật.

Bước 7: Sao lưu khóa

Thư mục data/ chứa cặp khóa của máy chủ rendezvous. Nếu bạn mất nó, mọi client phải được cấu hình lại với khóa công khai mới. Sao lưu nó:

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

Lưu bản sao lưu ở chỗ offline. Nếu VPS bị xâm phạm, bạn muốn có thể dựng VPS mới với cùng khóa để các client hiện tại tiếp tục hoạt động mà không cần cấu hình lại.

Các chế độ lỗi mà tài liệu không đề cập

Lỗi 1: Client không thể truy cập relay. Trong 90% trường hợp, nguyên nhân là firewall. Kiểm tra ufw status, kiểm tra rằng nhóm bảo mật của nhà cung cấp đám mây cũng cho phép các cổng tương tự, và chạy nc -vz relay.yourdomain.com 21116 từ một client để xác minh khả năng truy cập.

Lỗi 2: P2P luôn phải fallback về relay. NAT đối xứng hoặc tường lửa doanh nghiệp nghiêm ngặt buộc mọi thứ đi qua relay. Đây là bình thường — hiệu năng tốt nhưng sẽ bị tính phí băng thông. Dùng relay.yourdomain.com với gói VPS băng thông cao.

Lỗi 3: Quá trình relay chết và không khởi động lại. Docker với restart: unless-stopped xử lý hầu hết trường hợp. Thêm docker compose ps vào cron job để cảnh báo khi container mất tích.

Lỗi 4: Chứng chỉ SSL hết hạn. Nếu bạn dùng Caddy, việc này tự động — nó gia hạn 30 ngày trước khi hết hạn. Nếu bạn dùng nginx + certbot, thiết lập cron job để gia hạn. certbot.eff.org có hướng dẫn chính thức.

Tính toán băng thông

Chất lượng quan trọng ở đây. Ước lượng thô:

  • Chất lượng thấp (công việc 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ờ
  • Cao (video, thiết kế): ~1 MB/s = 3.6 GB/giờ

Một Hetzner CX22 với 20 TB/tháng băng thông xử lý khoảng 5.500 giờ phiên chất lượng cao mỗi tháng — nhiều hơn xa so với cá nhân hoặc nhóm nhỏ. Hạn mức 20 TB có ý nghĩa hơn với tổ chức có hàng trăm thiết bị.

Lựa chọn dựng sẵn: relay tự-host của GoDesk

Tất cả ở trên là cách thủ công dùng stack mã nguồn mở của RustDesk. GoDesk phát hành một gói tự-host của cùng stack hbbs/hbbr với các mặc định hợp lý đã cấu hình sẵn. Nếu bạn không muốn quản lý file Docker compose, xem hướng dẫn tự-host của chúng tôi — cùng kiến trúc, với script cài đặt một lệnh bọc các bước ở trên.

Khi không nên tự-host

Tự-host thêm chi phí vận hành: giám sát, sao lưu khóa, cập nhật OS, gia hạn chứng chỉ. Nếu trường hợp sử dụng của bạn là "Tôi muốn truy cập từ xa vào PC ở nhà", relay do nhà cung cấp lưu trữ (mức miễn phí của GoDesk xử lý 5 GB/tháng) sẽ ít công việc hơn nhiều so với chạy VPS riêng mãi mãi.

Tự-host nếu bạn có lý do thực sự — tuân thủ, chủ quyền, quy mô. Bỏ qua nếu "thấy hay" là động lực duy nhất; chi phí vận hành sẽ đuổi kịp bạn sớm muộn.

Tóm tắt

  1. $5/tháng VPS ở vùng bạn chọn.
  2. Docker + UFW + container hbbs/hbbr của RustDesk.
  3. Bản ghi A DNS trỏ tới VPS.
  4. Ba giá trị cấu hình trên mỗi client (ID server, relay server, khóa công khai).
  5. Sao lưu các khóa.
  6. Tùy chọn: TLS qua Caddy/nginx.

Thời gian thiết lập end-to-end: 30 phút. Bảo trì liên tục: tối thiểu. Kết quả: remote desktop nơi lưu lượng của bạn không bao giờ đi qua hạ tầng của ai khác.

Để biết thêm về phía GoDesk — tài liệu tự-host, bức tranh mã nguồn mở, hoặc chính client.