This video introduces RustDesk as an open-source, self-hostable, cross-platform remote desktop alternative to TeamViewer, guiding viewers through setting up a self-hosted instance using Docker. The presenter details RustDesk's business model, which supports development through a "Pro" version offering advanced features like a web console. A significant portion of the discussion is dedicated to security, noting the use of standard end-to-end encryption but also the lack of a published third-party code review or penetration test. The core functionality is explained, including how the Docker server brokers connections, assigns IDs, and facilitates direct peer-to-peer connections (UDP hole punching) with a fallback to encrypted relay mode. Practical steps for Docker deployment and client configuration on various operating systems are demonstrated, highlighting essential elements like the public key for secure connections and features such as privacy modes and TCP tunneling.
Exploring RustDesk: A Self-Hosted Remote Desktop Solution
0:00 RustDesk Introduction: RustDesk is presented as an open-source, self-hostable, and cross-platform remote desktop application, serving as an alternative to TeamViewer. The video will cover Docker setup and security considerations.
1:17 Business Model: RustDesk offers an open-source client and server for self-hosting. A "Pro" version is available for businesses, providing additional features like a web console, centralized settings, and distributed relay servers, which helps support the project.
2:12 Security Considerations: While RustDesk is open-source and uses standard encryption (not custom-rolled), the presenter notes a lack of publicly published third-party code reviews or application penetration testing, which is common for smaller open-source projects due to high costs. Connections are end-to-end encrypted.
2:58 How RustDesk Works: The self-hosted Docker instance acts as a simple beacon/broker, assigning IDs to clients and facilitating connections. There is no web interface for the free version; all management is done via the client software.
4:30 Connectivity Methods: RustDesk prioritizes direct connections between clients using methods like UDP hole punching for speed. If a direct connection cannot be established due to restrictive firewalls, it falls back to a relay mode, where traffic passes encrypted through the RustDesk server.
7:15 Docker Installation & Ports: The video demonstrates setting up RustDesk using Docker Compose. Essential ports are 21115 (TCP), 21116 (TCP), and 21117 (UDP) for the ID (HBS) and relay servers. Ports 21114, 21118, and 21119 (for web client support) are not needed for a basic self-hosted setup.
8:40 Public Key Requirement: A critical step is copying the public key (id_ed25519.pub) generated by the Docker server. This key must be pasted into each client's configuration to enable connections and prevent key mismatch errors, crucial for security and bidirectional control.
9:10 Client Configuration: The client application, available for various OS (Windows, Ubuntu, Mac, Android), requires the IP address of the self-hosted ID and relay server, along with the copied public key, to connect to the server.
10:40 Permanent Password & Features: Users can set a permanent password for easier access to remote systems. Key client features include scaling/image quality modes, privacy modes (blanking the remote screen), clipboard sharing, file transfer, TCP tunneling (port forwarding), remote restart, and the ability to switch control sides (requiring the public key on both ends).
13:22 Service Installation: RustDesk installs as a system service on Windows, ensuring it's available on boot and at the login screen, eliminating the need for a user to log in first.
13:40 Linux & Raspberry Pi Experience: The presenter notes some buggy behavior when connecting to virtual Linux systems and issues with Wayland on Raspberry Pi (mouse/keyboard control worked, but screen display did not), acknowledging that the project is still under active development.