Rustdesk is an opensource alternative for Anydesk and Teamviewer (cannot 100% replace Teamviewer but is good enough for the price).
Rustdesk is composed of couple components:
A server (api and registration)
A relay server
A client
An installer
I have added a “secure” (password protected) http server to serve the customized installer scripts for both windows and linux desktops.
The Rustdesk services( hbbs, hbbr) are listening on ports:
21115
21116
21116/udp
21117
21118
21119
and it cannot be changed for now.
The web server is listening by default on port: 8080 but it’s configurable using environment variables.
I will publish a video on how it looks and works later on.
One of the purposes of this container is to give SMB/Enterprises the ability to host an internal RDP and remote support service.
The only option now to publish this service publicly is using a domain name or to customize the installer for an internal one and an external one.
By default the bundled Windows AIO Powershell and Linux client installer script that downloads and installs the service enable direct IP connections and also via a relay.
This is an example on how to spin up this container in cli:
I have installed it but, not all working fine.
I have use Client connect local to local PC in local network, or outside to outside.
Connection Local to Outside PC or Outside to Local PC
Error Fail to connect Relay Sever .. ?
Hi
I have the same problem. I switched from a 4G connection where I had no problem with my remote clients being able to connect to my server at home.
Since my remote site switched to fiber with a Mikrotik Hap ac3 router, my clients can no longer reach my server.
If you have an idea I’m a taker for help.
Thanks
I will try to test it on a regular container and server first.
If it’s the same for both a container and a server then it’s something with the rustdesk software and should be discussed in their github issues.
OK, SO I have verified this issue.
The way to handle this issue is to define two things:
is to always use the relay server in the environment variables.
both clients should use the same host domain name, for the local/internal the domain should point to the internal IP
For the external the domain should point to a cname of the MT device or a specific ip address.
With these it works fine both behind nat and also if there is some part of the network that is shared between sites or as simple as connecting an internal PC to a remote one and vise versa.
First of all, thank you for this contribution, @elico. This is the only version that has worked for me with Mikrotik, which is why I’d like to know if you plan to continue updating it to the latest version, and if there’s any way I can contribute.
Best regards, and thank you again.
Hi, @elico I have a log when starting a container (RouterOS 7.21.3)
2026-02-26 11:35:06,372 INFO Set uid to user 0 succeeded
2026-02-26 11:35:06,700 INFO RPC interface 'supervisor' initialized
2026-02-26 11:35:06,700 CRIT Server 'unix_http_server' running without any HTTP authentication checking
2026-02-26 11:35:06,701 INFO supervisord started with pid 17
2026-02-26 11:35:07,713 INFO spawned: 'gothttp' with pid 18
2026-02-26 11:35:07,721 INFO spawned: 'hbbr' with pid 19
2026-02-26 11:35:07,727 INFO spawned: 'hbbs' with pid 20
2026-02-26 11:35:07,740 WARN exited: gothttp (exit status 2; not expected)
2026-02-26 11:35:07,741 WARN exited: hbbs (exit status 2; not expected)
2026-02-26 11:35:07,741 WARN exited: hbbr (exit status 2; not expected)
2026-02-26 11:35:08,751 INFO spawned: 'gothttp' with pid 21
2026-02-26 11:35:08,760 INFO spawned: 'hbbr' with pid 22
2026-02-26 11:35:08,768 INFO spawned: 'hbbs' with pid 23
2026-02-26 11:35:08,776 WARN exited: gothttp (exit status 2; not expected)
2026-02-26 11:35:08,782 WARN exited: hbbs (exit status 2; not expected)
2026-02-26 11:35:08,783 WARN exited: hbbr (exit status 2; not expected)
2026-02-26 11:35:10,792 INFO spawned: 'gothttp' with pid 24
2026-02-26 11:35:10,801 INFO spawned: 'hbbr' with pid 25
2026-02-26 11:35:10,808 INFO spawned: 'hbbs' with pid 26
2026-02-26 11:35:10,822 WARN exited: gothttp (exit status 2; not expected)
2026-02-26 11:35:10,823 WARN exited: hbbr (exit status 2; not expected)
2026-02-26 11:35:10,823 WARN exited: hbbs (exit status 2; not expected)
2026-02-26 11:35:13,833 INFO spawned: 'gothttp' with pid 27
2026-02-26 11:35:13,843 INFO spawned: 'hbbr' with pid 28
2026-02-26 11:35:13,851 INFO spawned: 'hbbs' with pid 29
2026-02-26 11:35:13,862 WARN exited: gothttp (exit status 2; not expected)
2026-02-26 11:35:13,863 INFO gave up: gothttp entered FATAL state, too many start retries too quickly
2026-02-26 11:35:13,868 WARN exited: hbbr (exit status 2; not expected)
2026-02-26 11:35:13,868 INFO gave up: hbbr entered FATAL state, too many start retries too quickly
2026-02-26 11:35:13,870 WARN exited: hbbs (exit status 2; not expected)
2026-02-26 11:35:13,870 INFO gave up: hbbs entered FATAL state, too many start retries too quickly