Cài đặt RustDesk Server trên Docker: Giải pháp điều khiển máy tính từ xa riêng tư tối thượng cho HomeLab

HomeLab tutorial - IT technology blog
HomeLab tutorial - IT technology blog

Tại sao các công cụ độc quyền không còn đáp ứng đủ nhu cầu?

Việc quản lý các server headless, máy ảo (VM) và máy trạm là một phần không thể thiếu trong cuộc sống HomeLab. Trong nhiều năm, chúng ta đã dựa vào TeamViewer hoặc AnyDesk. Chúng hoạt động tốt—cho đến khi chúng đổi ý. Hầu hết chúng ta đều đã từng gặp thông báo “Phát hiện mục đích thương mại” (Commercial use detected) ngay khi cần sửa lỗi gì đó quan trọng. Đó là một rào cản gây ức chế, thường kết thúc bằng yêu cầu đăng ký 20 USD mỗi tháng cho những tính năng vốn từng miễn phí.

Chi phí không phải là vấn đề duy nhất. Quyền riêng tư cũng rất quan trọng. Khi bạn sử dụng các công cụ công cộng, mọi chuyển động chuột và phím nhấn đều đi qua server của công ty. Nếu relay của họ ở quốc gia khác bị quá tải, bạn sẽ gặp tình trạng giật lag khiến việc xử lý sự cố trở nên bất khả thi. Đối với một người đam mê self-hosted, việc dựa vào đám mây để quản lý một server chỉ cách mình vài bước chân là một kiến trúc tồi.

Tại sao các Relay công cộng thường thất bại?

Để khắc phục điều này, chúng ta cần xem xét cơ chế hoạt động. Hầu hết các công cụ điều khiển từ xa sử dụng một ID Server và một Relay Server. ID Server hoạt động như một danh bạ điện thoại, giúp laptop tìm thấy server của bạn. Nếu kết nối ngang hàng (P2P) trực tiếp thất bại do tường lửa chặn, lưu lượng truy cập của bạn sẽ được truyền qua một Relay Server.

Các relay công cộng thường rất đông đúc. Khi con trỏ chuột mất hai giây để phản hồi, đó thường là do dữ liệu của bạn đang thực hiện một “chuyến du lịch” xuyên lục địa. Việc tự chạy server riêng sẽ đưa “danh bạ” và “đường hầm” đó vào bên trong mạng nội bộ của bạn. Bạn có quyền tự chủ hoàn toàn. Quan trọng hơn, bạn không còn phải phụ thuộc vào các điều khoản dịch vụ luôn thay đổi của một công ty nào đó.

Đối thủ cạnh tranh: Tại sao RustDesk chiến thắng?

MeshCentral và Apache Guacamole là những lựa chọn tốt, nhưng chúng có thể khá nặng nề. MeshCentral mạnh mẽ nhưng mang lại cảm giác như một buồng lái với quá nhiều nút bấm. Guacamole rất tuyệt vời trên trình duyệt nhưng thiếu đi sự “mượt màng” của một ứng dụng native dành riêng cho việc chuyển file. RustDesk đã tìm được điểm cân bằng hoàn hảo. Nó được viết bằng Rust, cực kỳ nhẹ—thường sử dụng ít hơn 50MB RAM. Bạn có các ứng dụng native cho Windows, Linux, macOS và di động, mang lại trải nghiệm chuyên nghiệp hoàn toàn miễn phí.

Cài đặt Server trong 5 phút

Docker là cách nhanh nhất để vận hành hệ thống này. Nó giữ cho việc cài đặt được cô lập và giúp việc cập nhật chỉ bằng một dòng lệnh. Tôi đã sử dụng thiết lập này để quản lý nhiều server ở các thành phố khác nhau và nó vẫn hoạt động ổn định ngay cả trên kết nối 4G di động chập chờn.

Yêu cầu hệ thống

  • Một server đã cài đặt Docker và Docker Compose.
  • Kỹ năng terminal cơ bản.
  • Các cổng 21115-21119 (TCP) và 21116 (UDP) được mở trên tường lửa.

Bước 1: Tạo thư mục dự án

Hãy giữ mọi thứ ngăn nắp bằng cách tạo một thư mục riêng.

mkdir -p ~/rustdesk-server && cd ~/rustdesk-server

Bước 2: Định nghĩa cấu hình Docker Compose

Chúng ta cần hai container: hbbs (ID server) và hbbr (Relay server). Tạo một file docker-compose.yml:

version: '3'

services:
  hbbs:
    container_name: hbbs
    image: rustdesk/rustdesk-server:latest
    command: hbbs -r your_server_ip_or_domain
    volumes:
      - ./data:/root
    network_mode: host
    depends_on:
      - hbbr
    restart: unless-stopped

  hbbr:
    container_name: hbbr
    image: rustdesk/rustdesk-server:latest
    command: hbbr
    volumes:
      - ./data:/root
    network_mode: host
    restart: unless-stopped

Mẹo nhỏ: Thay thế your_server_ip_or_domain bằng IP công cộng hoặc DDNS của bạn. Sử dụng network_mode: host là cách dễ nhất để xử lý dải cổng rộng mà RustDesk yêu cầu mà không gặp rắc rối với NAT.

Bước 3: Khởi chạy dịch vụ

Chạy các container ở chế độ nền:

docker compose up -d

Server của bạn sẽ tự động tạo một khóa bảo mật để ngăn người lạ chiếm dụng relay của bạn. Lấy khóa bằng lệnh sau:

cat ./data/id_ed25519.pub

Cấu hình Client

Bây giờ, hãy cấu hình ứng dụng RustDesk client để ngừng sử dụng mạng công cộng và bắt đầu sử dụng server riêng của bạn.

  1. Mở ứng dụng RustDesk.
  2. Nhấp vào dấu ba chấm menu và chọn Settings > Network (Cài đặt > Mạng).
  3. Nhấp vào Unlock network settings (Mở khóa cài đặt mạng).
  4. Trong trường ID Server, nhập địa chỉ IP server của bạn.
  5. Dán khóa bạn vừa lấy được vào trường Key.

Khi bạn thấy chữ “Ready” ở phía dưới, nghĩa là bạn đã chính thức tự host thành công.

Kiểm chứng thực tế về hiệu năng và bảo mật

Sự cải thiện về hiệu năng là rất lớn. Tôi đã thấy độ trễ giảm từ 150ms trên relay công cộng xuống còn dưới 10ms trên server nội bộ. Điều này giúp phiên điều khiển từ xa mang lại cảm giác như thể bạn đang ngồi ngay trước máy tính đó.

Bảo mật cũng được thắt chặt hơn. Khóa công khai bắt buộc đảm bảo chỉ bạn mới có thể sử dụng băng thông của mình. Để bảo mật tối đa, bạn có thể không cần mở cổng ra internet mà thay vào đó sử dụng VPN như Tailscale hoặc WireGuard. Điều này giúp ẩn toàn bộ hạ tầng điều khiển từ xa của bạn khỏi web công cộng trong khi bạn vẫn có thể truy cập từ bất kỳ đâu trên thế giới.

Thiết lập này hiện là xương sống trong việc quản lý HomeLab của tôi. Nó nhẹ nhàng, tôn trọng dữ liệu của tôi và không đòi tiền mỗi khi tôi cần sửa server vào lúc 2 giờ sáng.

Share: