Currently the script will download and setup the Relay and Signal Servers (hbbr and hbbs), generate configs and host them on a password protected web page for simple deployment to clients.
You need to have Linux installed, script is tested working with CentOS Linux 7/8, Ubuntu 18/20 and Debian. A server with 1 CPU, 1 GB and 10 GB disk is plenty to run RustDesk.
Please setup your firewall on your server prior to running the script.
Make sure you have got access via SSH or otherwise setup prior setting up the firewall. The example commands for UFW (Debian based) are:
ufw allow proto tcp from YOURIP to any port 22
If you have UFW installed use the following commands to configure the firewall (port 8000 only needed if you want to use the auto generated install files):
ufw allow 21115:21119/tcp ufw allow 8000/tcp ufw allow 21116/udp sudo ufw enable
Run the following commands:
wget https://raw.githubusercontent.com/techahold/rustdeskinstall/master/install.sh chmod +x install.sh ./install.sh
There is also an update script on Techahold’s repository.
Please Download deb files yourself and install with
apt-get -f install <filename>.deb or
dpkg -i <filename>.deb.
Platform versions provided:
The tutorial below is based on Linux build.
There are two executables and a folder:
hbbs- RustDesk ID/Rendezvous server
hbbr- RustDesk Relay server
They are built on CentOS Linux 7, tested on CentOS Linux 7/8 and Ubuntu 18/20.
The hardware requirements are very low; the minimum configuration of a basic cloud server is enough, and the CPU and memory requirements are minimal. You can also use a Raspberry Pi or something similar. Regarding the network size, if the TCP hole punching direct connection fails, the relay traffic will be consumed. The traffic of a relay connection is between 30 K/s and 3 M/s (1920x1080 screen) depending on the resolution settings and screen update. If it is only for office work demand, the traffic is around 100 K/s.
We suggest you use PM2 for managing your service.
Run hbbs/hbbr without PM2.
./hbbs -r <relay-server-ip[:port]> ./hbbr
Run hbbs/hbbr with PM2.
pm2 start hbbs -- -r <relay-server-ip[:port]> pm2 start hbbr
PM2 requires Node.js v16+, if you fail to run PM2 (e.g. you can not see
pm2 list), please download and install the Node.js LTS version from https://nodejs.org. If you want to make
hbbr auto-run after reboot, please check out
pm2 save and
pm2 startup. More about PM2. Another good tool for your logs is pm2-logrotate.
-r parameter of
hbbs is not mandatory, it is just convenient for you not to specify a relay server on the controlled client side. You do not need to specify port if you are using default 21117 port. The relay server specified by the client has a higher priority than this.
hbbs listens on 21115 (TCP), 21116 (TCP/UDP) and 21118 (TCP),
hbbr listens on 21117 (TCP) and 21119 (TCP). Be sure to open these ports in the firewall. Please note that 21116 should be enabled both for TCP and UDP. 21115 is used for the NAT type test, 21116/UDP is used for the ID registration and heartbeat service, 21116/TCP is used for TCP hole punching and connection service, 21117 is used for the Relay services, and 21118 and 21119 are used to support web clients. If you do not need web client (21118, 21119) support, the corresponding ports can be disabled.
Please run with the
-h option to see help if you want to choose your own port.
Click on the Menu button [ ⋮ ] on the right side of ID as shown below, and choose “ID/Relay Server”.
hbbs host or IP Address in the ID Server input box (local side + remote side). The other two addresses can be left blank, RustDesk will automatically deduce (if not specially set), and the Relay Server refers to
hbbr (port 21117).
rustdesk.exe to rustdesk-
host=<host-ip-or-name>,key=<public-key-string>.exe, e.g. rustdesk-
host=192.168.1.137,key=xfdsfsd32=32.exe. You can see the config result in the About Window below.
You need to set both
key, missing either one will not work.
Optionally add a
, (comma) character after the key, before the
.exe part as a delimiter, to avoid the key being mangled if Windows or the browser renames the file when downloading duplicated names.
If there are invalid characters in the key which can not be used in a Windows file name, please remove the
id_ed25519 file from your server and restart
hbbr. This will cause the
id_ed25519.pub file to regenerate. You may need to
repeat this process until you get valid characters.
Different from the old version, the key in this version is mandatory, but you don’t need to set it yourself. When
hbbs runs for the first time, it will automatically generate a pair of encrypted private and public keys (respectively located in the
id_ed25519.pub files in the running directory), whose main purpose is for communication encryption.
If you did not fill in the
Key: (the content in the public key file
id_ed25519.pub) in the previous step, it does not affect the connection, but the connection cannot be encrypted.
If you want to prohibit users without the key from establishing non-encrypted connections, please add the
-k _ parameter when running
hbbr, for example:
./hbbs -r <relay-server-ip[:port]> -k _ ./hbbr -k _
If you want to change the key, remove the
id_ed25519.pub files and restart
hbbs will generate a new key pair.
If you are using docker-compose and keys don’t exist, the start of containers will create different keys in hbbs and hbbr folders.
You could create keys manually in hbbs and copy them to hbbr before starting the containers.
Or you could stop the hbbr container and copy the keys from hbbs to the hbbr folder, and then restart the container.