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:
- Một
máy chủ (server) đã cài
đặt Docker.
- Portainer đã
được cài đặt và có thể truy cập qua trình duyệt web.
- Đị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.
- Đả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










