Giải Pháp Remote Desktop Miễn Phí: Rustdesk, Docker và Portainer

Bạn đang tìm kiếm một giải pháp điều khiển máy tính từ xa (Remote Desktop) mạnh mẽ, an toàn và hoàn toàn nằm trong tầm kiểm soát của mình? Rustdesk chính là câu trả lời! Thay vì sử dụng các dịch vụ bên thứ ba, bạn có thể tự host Rustdesk Server của riêng mình, và việc này trở nên cực kỳ đơn giản khi kết hợp với Docker và công cụ quản lý Portainer. Bài viết này sẽ hướng dẫn bạn từng bước cách cài đặt Rustdesk Server trên Portainer, giúp bạn có một giải pháp remote desktop cá nhân, linh hoạt và bảo mật.


Tại sao chọn Rustdesk trên Docker với Portainer?

  • Kiểm soát hoàn toàn: Bạn sở hữu dữ liệu và kết nối của mình, không phụ thuộc vào máy chủ của bên thứ ba. Điều này đặc biệt quan trọng với những ai quan tâm đến bảo mật và quyền riêng tư.
  • Mã nguồn mở & Miễn phí: Rustdesk là dự án mã nguồn mở, cho phép cộng đồng cùng phát triển và kiểm tra tính bảo mật. Chi tiết các bạn có thể xem thêm tại đây.
  • Hiệu suất: Rustdesk được viết bằng Rust, một ngôn ngữ lập trình nổi tiếng về hiệu suất và an toàn bộ nhớ.

Chuẩn bị trước khi cài đặt:

Để bắt đầu, bạn cần có:
  1. Một máy chủ (server) đã cài đặt Docker.
  2. Portainer đã được cài đặt và có thể truy cập qua trình duyệt web.
  3. Địa chỉ IP công cộng (public IP) của máy chủ hoặc một tên miền (domain) trỏ về máy chủ của bạn.
  4. Đảm bảo các cổng sau được mở trên Firewall/Router của máy chủ và được cấu hình Port Forwarding:
    • 21114 (TCP): Cổng này được sử dụng cho HTTP API của RustDesk Pro. Nếu anh đang dùng phiên bản miễn phí hoặc không có nhu cầu sử dụng các tính năng Pro liên quan đến API này, anh có thể không cần mở. Tuy nhiên, nếu anh muốn tích hợp hoặc sử dụng các tính năng nâng cao sau này, nó sẽ cần thiết.
    • 21115 (TCP): Cổng chính cho đăng ký ID và truyền tín hiệu (ID/Signal) giữa các máy khách và máy chủ hbbs. Đây là cổng quan trọng nhất để các máy khách có thể tìm thấy và bắt đầu quá trình kết nối với nhau thông qua máy chủ hbbs.
    • 21116 (TCP): Cổng dự phòng hoặc bổ sung cho truyền tín hiệu. Có thể được dùng cho các kênh tín hiệu khác hoặc để đảm bảo tính sẵn sàng.
    • 21116 (UDP): Cổng này thường được sử dụng cho NAT traversal (xuyên NAT). Khi hai máy khách cố gắng kết nối trực tiếp (P2P), hbbs sẽ hỗ trợ bằng cách gửi các gói UDP để "đục" lỗ trên tường lửa/NAT, giúp các máy khách có thể thấy nhau. Nếu không có cổng UDP này, khả năng thiết lập kết nối P2P sẽ bị hạn chế.
    • 21117 (TCP): Cổng chính cho chức năng chuyển tiếp (relay). Khi một kết nối P2P giữa hai máy khách không thể thiết lập được, dữ liệu (video, chuột, bàn phím, file) sẽ được gửi qua máy chủ hbbr thông qua cổng này. Đây là cổng quan trọng để đảm bảo kết nối hoạt động trong môi trường mạng phức tạp.
    • 21118 (TCP): Cổng dành cho Web Socket. RustDesk có giao diện web để quản lý hoặc có thể sử dụng Web Socket để giao tiếp tín hiệu. Mặc dù tài liệu không nêu rõ đây là bắt buộc cho mọi trường hợp, nhưng nó thường được dùng để cải thiện khả năng kết nối hoặc tương tác qua trình duyệt.
    • 21119 (TCP): Cổng dành cho Web Socket cho máy chủ relay. Tương tự như 21118 trên hbbs, cổng này có thể hỗ trợ các tính năng web hoặc giao tiếp bổ sung cho máy chủ chuyển tiếp.

Các bước cài đặt Rustdesk Server trên Portainer:

Chúng ta sẽ sử dụng Docker Compose để triển khai cả hai thành phần của Rustdesk Server là hbbs (rendezvous server) và hbbr (relay server).

Bước 1: Truy cập vào Portainer

Tại phần thanh bên trái bạn chọn mục Stacks. Sau đó, chọn tiếp "+ Add stack" như hình ảnh dưới đây:


Bước 2: Tạo Stack cho Rustdesk Server

  • Đặt tên cho Stack là rustdesk

  • Copy và Paste đoạn code dưới đây
version: '3'

networks:
  rustdesk-net:
    external: false

services:
  hbbs:
    container_name: hbbs
    ports:
      - 21115:21115
      - 21116:21116
      - 21116:21116/udp
      - 21118:21118
    image: rustdesk/rustdesk-server:latest
    command: hbbs -r your-domain:21117 #Replace your domain or your IP Public
    volumes:
      - docker_rdhbbs:/root
    networks:
      - rustdesk-net
    depends_on:
      - hbbr
    restart: always

  hbbr:
    container_name: hbbr
    ports:
      - 21117:21117
      - 21119:21119
    image: rustdesk/rustdesk-server:latest
    command: hbbr
    volumes:
      - docker_rdhbbr:/root
    networks:
      - rustdesk-net
    restart: always
volumes:
 docker_rdhbbs:
 docker_rdhbbr:

Lưu ý quan trọng:

  • Thay thế your-domain bằng địa chỉ IP Public hoặc tên miền (domain) thực tế của bạn.

Bước 3: Cài đặt Rustdesk Server

Cuối cùng là cài đặt Rustdesk Server như hình mô tả dưới đây:


Bước 4: Cấu hình cho Rustdesk Client

Sau khi Rustdesk Server đã chạy thành công, bạn cần cấu hình các Rustdesk Client để kết nối.


  • Tìm khóa mã hóa (Key):

Tại Portainer, đi tới Containers, tìm container hbbs và nhấn vào Logs.


  • Tải Rustdesk Client:

Truy cập trang web chính thức của Rustdesk để tải về client phù hợp với hệ điều hành của bạn (Windows, macOS, Linux, Android, iOS).

  • Cấu hình Rustdesk Client:



  • Kiểm tra hoạt động:
    • Kiểm tra trạng thái Container: Đảm bảo cả hbbs và hbbr đều đang ở trạng thái running.
    • Kiểm tra Logs: Xem logs của cả hai container để đảm bảo không có lỗi nghiêm trọng nào.
    • Kết nối thử: Thử kết với Rustdesk Client theo thông tin Rustdesk Server của bạn. Nếu mọi thứ hoạt động, bạn sẽ thấy ID của máy đó và có thể bắt đầu phiên điều khiển từ xa.

Kết luận

Bạn đã tự cài đặt thành công Rustdesk Server trên Docker và quản lý nó một cách tiện lợi với Portainer. Giờ đây, bạn có một giải pháp Remote Desktop mạnh mẽ, an toàn, mã nguồn mở và hoàn toàn nằm trong quyền kiểm soát của mình. Đây là một bước tiến tuyệt vời để đảm bảo an ninh và quyền riêng tư cho các phiên làm việc từ xa của bạn. Chúc các bạn thành công 😊Mọi thắc mắc hoặc vấn đề các bạn cứ thoải mái gửi bình luận bên dưới nhé!

Credit: Bài viết có tham khảo qua các nguồn tài liệu sau

Post a Comment

Previous Post Next Post