The simple install creates a relay server (the hbbr
process) implicitly on the same machine, you do not need to specify relay server explicitly.
If you wanna create additional relay server explicitly on another machine, please run hbbr
by following OSS installation. You can find hbbr
in rustdesk-server-linux-amd64.tar.gz
, rustdesk-server-hbbr_<version>-<arch>.deb
, rustdesk-server-windows-x86_64.tar.gz
or in docker
(sudo docker run ... rustdesk/rustdesk-server-pro hbbr
).
hbbr
does not require a license and is the same as the open source version.
You can have several relay servers running across the globe and leverage GeoLocation automatically to use the closest relay server, giving you a faster experience when connecting to remote computers. hbbs
automatically checks if these relay servers are online every several seconds, it only choose online relay servers.
You will need the private key pair
id_ed25519
andid_ed25519.pub
.
1 - If docker is already installed, connect to your server via SSH and create a volume for hbbr.
# docker volume create hbbr
The volume hbbr should be located in /var/lib/docker/volumes/hbbr/_data
.
2 - Copy the private key pair to the volume location, in this case we will use SCP to copy the files.
The command syntax is scp <path/filename> username@server:</destination/path>
.
# scp id_ed25519 root@100.100.100.100:/var/lib/docker/volumes/hbbr/_data
# scp id_ed25519.pub root@100.100.100.100:/var/lib/docker/volumes/hbbr/_data
3 - Deploy the hbbr container using the volume previously created. This volume has the private key pair needed to run your private relay server.
# sudo docker run --name hbbr -v hbbr:/root -td --net=host rustdesk/rustdesk-server hbbr -k _
4 - Check the running logs to verify that hbbr is running using your key pair.
# docker logs hbbr
INFO [src/common.rs:121] **Private key comes from id_ed25519**
NFO [src/relay_server.rs:581] Key: XXXXXXXXXXXXXXXXXXXXX
INFO [src/relay_server.rs:60] #blacklist(blacklist.txt): 0
INFO [src/relay_server.rs:75] #blocklist(blocklist.txt): 0
INFO [src/relay_server.rs:81] Listening on tcp :21117
Depending on your OS, you might want to block/allow IPs using a firewall.
In our case, running Ubuntu we want to allow any TCP connections, to ports 21117 and 21119.
# sudo ufw allow proto tcp from any to any port 21117,21119
Enable the firewall
# sudo ufw enable
Check the status
# ufw status
Status: active
To Action From
-- ------ ----
21117,21119/tcp ALLOW Anywhere
21117,21119/tcp (v6) ALLOW Anywhere (v6)
To use geo location, hbbs needs access to the MaxMind GeoLite2 City database. The database is free and you can register to download the file and get an API key.
Start by creating an account (if you don’t have one) by going to the website.
Go to Download Databases
and download GeoLite2 City, choose the gzip file and you should have the mmdb
file when decompressing it.
If you installed RustDesk Pro using the installation script on a Linux machine, the mmdb
file needs to be moved to /var/lib/rustdesk-server/
.
For Docker installations the file should be in the volume you mapped when deploying the container mapped to /root
.
You need to update this file regularly and we can use a cronjob to do that. You will need an API key to access the download link which is free.
Go to Manage License Keys
and generate a new license key.
You can automate the download process in a few ways, but you add the following command to your crontab replacing {Your Access Key} with the API key you got from the previous step.
/usr/bin/curl -L --silent 'https://download.maxmind.com/app/geoip_download?edition_id=GeoLite2-City&license_key={Your Access Key}&suffix=tar.gz' | /bin/tar -C '/var/lib/rustdesk-server/' -xvz --keep-newer-files --strip-components=1 --wildcards '*GeoLite2-City.mmdb'
Add your relay server IP addresses or DNS names (DNS is supported as of version 1.1.11) to the Relay Servers
. Port is not required, 21117
port is used explicitly.
Add a Geo Override but adding the server IP address and the coordinates where the server is located.
Click Reload Geo
and your list should look similar to this.
To confirm the results, check your hbbs logs when clicking Reload Geo
, you should see a message showing the relay server IP addresses and their coordinates.
If you are running RustDesk Pro on a Linux machine use the command
RUST_LOG=debug ./hbbs
to view the logs. If you are running on a Docker container userdocker logs hbbs
.
RUST_LOG=debug ./hbbs
INFO [src/common.rs:130] GEOIP_FILE: ./GeoLite2-City.mmdb
INFO [src/common.rs:159] override 1xx.xxx.xxx.x7: -1.xx 5x.xxx
[src/common.rs:159] override 1xx.xxx.xxx.xx8: -3.xxx 5x.xxxx
[src/common.rs:159] override 7xx.xxx.xxxx.xx1: 6.xxx 5x.xxxx
GEOIP_FILE loaded, #overrides 3
INFO [src/common.rs:119] relay-servers=["1xx.xxx.xxx.x7", "1xx.xxx.xxx.xx8", "7xx.xxx.xxx.xx1"]
NFO [src/rendezvous_server.rs:1467] parsed relay servers: [("1xx.xxxx.xxx.xx7", Some((-1x, xxx))), ("1xx.xxx.xxx.xx8", Some((-3x, xxx))), ("7xx.xxx.xxx.xx1", Some((6x, xxx)))]
You can also confirm the relay requests directly on your hbbr instances, simply by checking the container logs.
# docker logs hbbr
INFO [src/relay_server.rs:436] Relayrequest 0593e64e-4fe8-4a59-a94f-b3420ab043eb from [::ffff:100.100.123.233]:52038 got paired
INFO [src/relay_server.rs:442] Both are raw