RustDesk self-host trên VPS: remote desktop cho team dev VN

Chia sẻ bài viết

Mục lục
TL;DR
  • RustDesk open source, viết bằng Rust + Flutter, là alternative thực sự của TeamViewer/AnyDesk cho team VN.
  • Server gồm 2 service: hbbs (rendezvous) + hbbr (relay). VPS 2GB là đủ cho team 10-20 người.
  • Tự host xoá triệt để vấn đề bị TeamViewer phát hiện dùng cho business -> chuyển sang trial -> ngắt kết nối.
  • Setup 20 phút qua Docker Compose, cấu hình client trỏ về relay riêng.
  • Latency intra-VN qua VPS HCM/HN ~30-60ms, mượt mà cho remote support thậm chí remote work full-time.

Năm 2026, các tool remote desktop "miễn phí cho cá nhân" như TeamViewer, AnyDesk vẫn là cơn ác mộng của team dev VN. Đang remote support khách, đột nhiên popup "Commercial use detected" và session bị ngắt 5 phút. Mua bản trả phí thì 50$/tháng/user - quá đắt cho team 10-20 người. Giải pháp: RustDesk self-host trên VPS.

RustDesk là project open source viết bằng Rust + Flutter, MIT license, hỗ trợ Windows/macOS/Linux/iOS/Android/Web. Khi self-host server relay riêng, bạn có full control: không bị banned, không quota, không "commercial detection", latency thấp với route Asia.

Bài này hướng dẫn full setup RustDesk server trên VPS Ubuntu, cấu hình client desktop và mobile, mẹo bảo mật. Tổng setup ~20 phút. Tổng chi phí ~250k/tháng VPS Cloud TND 2GB.

1. Tại sao tự host RustDesk?

Tiêu chíTeamViewer freeAnyDesk freeRustDesk self-host
Phát hiện commercialCó, khắt kheKhông bao giờ
Latency VN-VN80-150ms (relay EU)60-100ms30-60ms (VPS VN)
Số session đồng thời1-3 free1 freeKhông giới hạn
Bảo mật source codeClosedClosedOpen MIT
Chi phí tháng team 10500$+ paid200$+ paid250k VPS
Tự kiểm soát dataCloud TeamViewerCloud AnyDeskVPS của bạn

Tiết kiệm 80-90% chi phí, latency thấp hơn 2-3 lần, không lo bị quấy nhiễu pop-up. Trade-off duy nhất: bạn phải tự maintain VPS, update server khi có version mới.

2. Kiến trúc server RustDesk

RustDesk server gồm 2 binary chính:

  • hbbs (rendezvous server, port 21115-21116 TCP, 21116 UDP): giúp 2 client tìm nhau qua ID, thử NAT traversal.
  • hbbr (relay server, port 21117 TCP): nếu NAT traversal fail, relay traffic. Tốn bandwidth, nên optimize MTU + region.

Cả 2 service chạy nhẹ, idle <100MB RAM. Peak khi 10 session relay đồng thời ~500MB. VPS 2GB dư sức.

3. Yêu cầu VPS

  • VPS: 2GB RAM, 2 vCPU, 40GB SSD. Cloud VPS TND gói Basic là đủ.
  • Bandwidth: mỗi session relay ~2-5 Mbps. Team 5 session đồng thời ~25 Mbps. VPS TND 200Mbps trong nước, dư sức.
  • OS: Ubuntu 24.04 LTS (Docker repo update nhanh nhất).
  • Firewall: mở port 21115/tcp, 21116/tcp+udp, 21117/tcp, 21118/tcp (web client), 21119/tcp (web admin).
  • Domain: rustdesk.your-domain.com trỏ A record về IP VPS.

4. Cài Docker và compose stack

# SSH vào VPS
ssh [email protected]

# Cài Docker
curl -fsSL https://get.docker.com | sh
systemctl enable --now docker

# Tạo thư mục
mkdir -p /opt/rustdesk/{hbbs,hbbr}
cd /opt/rustdesk
# /opt/rustdesk/docker-compose.yml
services:
  hbbs:
    image: rustdesk/rustdesk-server:latest
    container_name: hbbs
    command: hbbs -r rustdesk.your-domain.com:21117
    ports:
      - "21115:21115"
      - "21116:21116"
      - "21116:21116/udp"
      - "21118:21118"
    volumes:
      - ./hbbs:/root
    restart: unless-stopped
    depends_on:
      - hbbr

  hbbr:
    image: rustdesk/rustdesk-server:latest
    container_name: hbbr
    command: hbbr
    ports:
      - "21117:21117"
      - "21119:21119"
    volumes:
      - ./hbbr:/root
    restart: unless-stopped
docker compose up -d
docker compose logs -f hbbs

# Lấy public key server
cat /opt/rustdesk/hbbs/id_ed25519.pub

Public key dạng base64 (vd: OeVuKk5nlHiXp/ASvq2TGnExRrJjkqWMHzgNhYZ8KAo=). Copy lưu lại, cần khi config client.

5. Mở firewall đúng port

# Ubuntu ufw
sudo ufw allow 21115/tcp
sudo ufw allow 21116/tcp
sudo ufw allow 21116/udp
sudo ufw allow 21117/tcp
sudo ufw allow 21118/tcp
sudo ufw allow 21119/tcp
sudo ufw reload

# AlmaLinux firewalld
sudo firewall-cmd --add-port=21115-21119/tcp --permanent
sudo firewall-cmd --add-port=21116/udp --permanent
sudo firewall-cmd --reload

Lưu ý: port 21116 phải mở cả TCP và UDP. UDP cho NAT traversal, thiếu nó client phải relay 100% qua hbbr -> tốn bandwidth.

6. Cấu hình client RustDesk

Tải RustDesk client từ rustdesk.com (Windows/macOS/Linux). Sau khi mở app:

  • Settings -> Network -> ID Server: rustdesk.your-domain.com
  • Relay Server: rustdesk.your-domain.com:21117
  • API Server: (để trống nếu không dùng web admin)
  • Key: paste public key ed25519 từ bước 4
  • Save và restart client

Khi client đăng ký thành công với server, ID 9 chữ số mới sẽ generate. Chia sẻ ID + password 6 chữ cho người cần connect tới.

7. Push config tự động cho team

Mỗi máy mới mà phải vào Settings paste thủ công là cực hình. Mẹo: tạo installer custom với config sẵn.

# Windows: tạo file RustDesk2.toml trong %APPDATA%RustDeskconfig
[options]
custom-rendezvous-server = "rustdesk.your-domain.com"
relay-server = "rustdesk.your-domain.com:21117"
key = "OeVuKk5nlHiXp/ASvq2TGnExRrJjkqWMHzgNhYZ8KAo="

# macOS: ~/Library/Preferences/com.carriez.RustDesk/RustDesk2.toml
# Linux: ~/.config/rustdesk/RustDesk2.toml

Cách 2 (nâng cao): rename file installer .exe thành rustdesk-host=rustdesk.your-domain.com,key=YOUR_KEY.exe rồi distribute. Khi user chạy, config tự apply. Tham khảo doc RustDesk "Custom client".

8. Web client trên trình duyệt

RustDesk có web client (Flutter compiled to WebAssembly) chạy trong Chrome/Edge/Safari. Hữu ích khi remote support khách không cài app:

  • Truy cập https://rustdesk.your-domain.com:21118 (cần Caddy reverse proxy + SSL).
  • Nhập ID máy đích, password.
  • Hạn chế: chỉ view/control, không file transfer, không clipboard sync. Phù hợp emergency support.

9. Web admin panel (RustDesk Server Pro)

RustDesk Server Open Source chỉ có 2 service hbbs/hbbr cơ bản. Phiên bản Pro (free cho 10 user, paid cho hơn) thêm:

  • Web admin UI quản lý user/device/permission.
  • 2FA login.
  • Audit log mọi session.
  • SSO/LDAP cho enterprise.
  • API REST quản lý từ ngoài.

Team <10 người dùng bản OSS đủ. Trên 10 user thì cân nhắc Pro (~10-20$/user/tháng vẫn rẻ hơn TeamViewer paid).

10. Bảo mật: chống truy cập trái phép

  • Bắt buộc Key Server: không để key trống. Server không key = ai biết ID đều connect được.
  • Password mạnh: Settings -> Security -> Permanent password (6-12 ký tự).
  • Whitelist IP: Settings -> Security -> Allow only following IPs. Chỉ accept connection từ IP team.
  • Permission control: tắt File Transfer/Clipboard/Audio nếu không cần. Giảm attack surface.
  • 2FA OTP: client RustDesk v1.3+ có 2FA TOTP. Bật cho mọi máy admin.
  • Server firewall: chỉ mở port 211xx, đóng SSH cho IP team qua wireguard.

11. Monitoring và logs

# Xem log realtime
docker compose -f /opt/rustdesk/docker-compose.yml logs -f

# Đếm số connection hôm nay
docker compose logs --since 24h hbbs | grep "online" | wc -l

# Restart service nếu bị hang
docker compose restart hbbs hbbr

Mình kết hợp với Uptime Kuma monitor port 21115 TCP, alert Telegram nếu down quá 1 phút. Trong 8 tháng chạy production, RustDesk server downtime chưa tới 30 phút (lần duy nhất là khi mình update Docker engine, tự gây).

12. Use case thực tế dev team VN

  • Remote support khách hàng install/troubleshoot phần mềm trong giờ hành chính.
  • Dev remote vào máy office (Windows có IDE/license JetBrains) từ laptop ở nhà.
  • Sysadmin truy cập Linux server không có GUI qua noVNC/RDP relay.
  • Demo sản phẩm cho khách qua share screen 2 chiều realtime, không cần Zoom.
  • QA test cross-browser trên máy Mac của team từ máy Windows.
Cloud VPS cho vibe coder

VPS 2GB chạy RustDesk relay cho team 20 người

Cloud VPS TND SSD CEPH, network 200Mbps trong nước, datacenter HCM/HN giảm latency RustDesk relay xuống 30-60ms. Snapshot 1-click giữ safe config, backup hằng ngày, đủ bandwidth cho 10 session đồng thời.

Xem 8 cấu hình Cloud VPS →

FAQ

RustDesk có ngon bằng TeamViewer/AnyDesk không?

Tính năng cốt lõi (view, control, file transfer, chat) tương đương. RustDesk còn hơn ở: open source MIT, self-host, hỗ trợ Linux native (TV bản Linux yếu hơn). Yếu hơn ở: ít plugin enterprise (single sign-on, MDM tích hợp), UI Flutter không đẹp polish bằng. Đủ tốt cho 90% use case team dev VN.

Khách hàng không cài app, có cách remote qua web không?

Có. RustDesk web client (port 21118) chạy trong Chrome/Edge. Khách chỉ cần truy cập URL HTTPS, nhập ID + password, không cần cài gì. Tuy nhiên khách cần cài app phía họ để bạn vào (web client chỉ là controller). Trường hợp khách cũng không cài, gợi ý dùng OBS Studio share via OBS.ninja hoặc Jitsi screen share.

Bandwidth bao nhiêu là đủ cho RustDesk relay?

Mỗi session HD 1080p ~3-5 Mbps. Session 4K hoặc gaming ~10-20 Mbps. Team 5-10 session đồng thời ~50 Mbps. VPS Cloud TND 200 Mbps trong nước thoải mái. Nếu nhiều session 4K, cân nhắc gói VPS Business 500 Mbps. Lưu ý: NAT traversal thành công 70-80% case sẽ P2P direct, không cần qua relay -> tiết kiệm bandwidth server.

Có thể chạy RustDesk server trên cùng VPS với n8n/WordPress không?

Được, nếu VPS đủ RAM (4GB+) và port không xung đột. Mình hay gộp RustDesk + Uptime Kuma + small Postgres trong cùng VPS 4GB. Tránh chung với WordPress nặng vì peak traffic blog làm chậm relay. Tốt nhất tách VPS riêng cho RustDesk nếu team >20 người.

RustDesk có hỗ trợ mobile (Android/iOS) không?

Có. App trên Google Play và App Store, free. Android có cả 2 chế độ: controller (điều khiển máy khác) và controlled (cho phép remote vào điện thoại - root recommended). iOS chỉ controller. Latency mobile qua 4G/5G VN tới VPS HCM ~50-80ms, mượt cho remote support cơ bản.

Cách backup config server khi cần migrate VPS?

Folder /opt/rustdesk/hbbs chứa id_ed25519/id_ed25519.pub (key server) + DB SQLite nhỏ. Tar gz cả folder, scp sang VPS mới, mount vào container. Key cũ giữ nguyên -> mọi client không cần config lại. Bonus: dùng snapshot 1-click VPS TND để safety thêm lớp.

2009
15+ năm vận hành liên tục
10+
tập đoàn lớn tin dùng
100+
doanh nghiệp SMB Việt
30 ngày
đổi key lỗi miễn phí
Phần mềm bản quyền chính hãng chúng tôi cung cấp
Bản quyền chính hãng Hóa đơn VAT đầy đủ Đổi key lỗi 30 ngày Vận hành từ 2009 MST 0200994870 Hotline 0225.999.6666