Table of Contents
- How does RustDesk work?
- Apple / Google Store
- How much does the community version of RustDesk server cost?
- Can I host my own RustDesk server?
- Where can I download RustDesk Server?
- The server is asking me for a license, where can I get one from?
- Config client for self-hosting
- What does the server do, why do I need it?
- I only use RustDesk for a few devices on my local network with no Internet connectivity... Can I still use RustDesk with direct ip access?
- Change id, addressbook/api/login and web console?
- Hardware requirement for RustDesk server.
- X11 error: connection refused (login as root)
- How to update RustDesk server?
- Some RustDesk Server installer
- About self-hosting setup
- How does it work?
- Access Logs?
- logs of hbbs and hbbr (RustDesk Server)
- Wayland
- Change default options
- No sound
- Sponsor open source RustDesk (Donate)
- Why does self-hosting server need to configure a public key?
- White screen on windows
- Nginx stream proxy
- Keyboard translation modes
- Force relay
- Headless Linux Support
- Run in docker
- Can not open issue on Mac/OSX
- Mac input/record permission
- Performance issue on win11
- Windows UAC
- Detailed UAC process
- Access devices on another self-hosted or public server.
- Use domain instead of ip for direct ip access.
- Why Pro?
- Workaound of X11 connection refused issue
- WOL (wake on lan)
- SOCKS5 proxy failure
- Connecting
- The connection is interrupted every 10-15 seconds
- deadline has elapsed
- Connection reset by the peer
- Failed to connect via rendezvous server: Please try later
- Failed to secure tcp:Handshake failed: invalid public key from rendezvous server: Please try later
- Deploy RustDesk server in intranet.
- CTRL-ALT-DEL does not work
- Unable to display image despite screen sharing being enabled on Android
- Modify Login Screen (gdm) session from Wayland to X11
- Prevent Android service from being killed by the system
- Command line
- --assign command line
- Command line output on Windows
- Run in iOS simulator
- Why do Custom Clients have to be built on a shared build server
- Failed to log in with custom client build or public release with wrong API settings.
- Connection Log or device name on devices page of web console is empty
- Unexpected character when log in
- Impossible to get Android input permission
- Install/Upgrade from command line on Windows.
- How to use TCP tunneling (port forwarding).
- DDNS
- How to separate the tabs (enable the separate window mode)?
- API of RustDesk server Pro
- Delete devices with API
- Android - Restart Screen Capture service on boot
- Android "Start on boot" and limitations
- Android 13 / 14 Input Controll is Restricted by Android due to "Security reasons"
- Unable to open macOS App
- Deploy on macOS (permission configuration)
- Unlock security settings not work on some Linux
- The main interface cannot be displayed when using multiple monitors
- Proxy for Pro server
- How often does Pro check license?
- Unable to Validate License (Failed to update license)
- Hide connection popup (cm) and hide tray
- Set up http proxy
- Mouse is blue circle sometimes when there is no physical mouse sometimes
- Feature request policy of Pro
- Feature request policy of OSS
- Where is Settings?
- How to change codec?
- Required ports for client
- Delete devices with API
- 2FA always fail
- The connection is not allowed. You have not logged in or your login session has expired
- You have no permission to access the remote device.
- The connection is not allowed, the remote device is disabled
- URI / UNI link
- The main interface cannot be displayed when using multiple monitors
- How to use RDP via tcp tunneling (port forward) ?
- What is the callback / client id / secret of Azure in Pro?
- OIDC, common login error "failed to request the auth url"
- What are managed devices / Login users / concurrent connections in Pro?
- Concerned about managed devices and quick support
- Custom2 license has limited connections, but custom license has unlimited
- Does the product have an agent that can only receive connection similar to TeamViewer host?
- What about casual support cases for Pro?
- License models
- Security Information
- Docker SSL/TLS problem
- Bind RootCAs (SSL/TLS) of host to Docker container
- Windows 10 opens the software with a white screen and no content (monitor/display turned off)
- Windows connect to specific Session
- Connection note
- Business name and VAT etc in the invoice
- Migrate self-hosting OSS version to Pro
- Renew / upgrade license
- Is it over charge in upgrade?
- Refresh license
- SSL/TLS/HTTPS setup with NGINX
- SSL/TLS/HTTPS setup with Caddy
- Migrate license to another machine
- How can we set up a client with a fixed password for unattended remote access?
- Unattended access
- Reset password/email verification / 2fa verification in Pro of web console
- Assign address book
- Assign group
- Easy access mode
- RustDesk Service does not start automatically
- Key mismatch
- RustDesk Service service terminated unexpectedly
- Can not delete devices on web console
- Steps to create custom clients
- Unknown custom clients downloads and executions
- The new icon for my custom client does not take effect on Windows after I change it.
- When can we get latest custom client version after public release?
- Custom Client build / creation failures
- Showing multiple remote minotors as individual windows
- Need to set license everyting after restarting container
- Open connection in new window rather than tab
- Desktop crash after a few minutes
- Panicked at library/std/src/sys/pal/unix/time.rs when running hbbs / hbbr in container
- Update button is missing
- LDAP integration
- Is web client integrated into RusetDesk server pro?
- WSS and CORS setup for web client
- How to customize self-hosted web client?
- Does ip whitelist supports CIDR?
- What OSs does privacy mode support?
- What OSs does remote printer support?
- What are the minimum OS requirements?
- Can we control iOS?
- Duplicate id of cloned system
- Authenticate SMTP to Office 365
- Skip the printer driver installation from command
- How to know if the connection is encrypted.
- How to make RustDesk work properly in restricted network with 80/443 only.
- Pracise of backup server
- Failed to start --server process in --service process.
- Bandwidth limit
- Connect to specific Windows RDP Session
- HIPPA compliance
- screen is white when start certain tools with Nvidea cards (ok if turning off nvidia cards)
- Windows service won't start on reboot
- Black application window on MacOS (Monterey) running on non-metal hardware through OCLP
- I prefer to display device name only on devices page rather than username@devicename
- error returned from database: (code: 5) database is locked #271
- Install without desktop shortcuts
- RustDesk server Pro on Windows server is deprecated
- Unstable connection and "Failed to connect via rendezvous server: Please try later" on Windows server running RustDesk server
- The RustDesk iOS app has no issue with Cert when connecting outside of local network. The issue is only when connecting on local network.
- How to restart (reboot) remote device?
- Connection error, bytes remaining on stream
- I try to compile the client, but I get this error: “Failed to create: Payload Too Large”
- hostname change
- Authenticate administrator terminal with an Entra Joined Device Local Administrator
- Audio not heard from Win11 because of Voicemeter
- "color must be int, or tuple of one or two elements error" when build custom client
- Okta : error sending request for url (): error trying to connect: bad protocol version
- Occasional artifacts on screen on Linux(tearing with NVIDIA)
- Device list on web console
- Device group vs address book
- Upgrade RustDesk Server Pro on Windows.
- hbbs keeps restarting, Error: Address in use
This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
How does RustDesk work?
https://github.com/rustdesk/rustdesk/wiki/How-does-RustDesk-work%3F
Apple / Google Store
- Google Store: We removed ourself from Google Store due to scamming, https://github.com/rustdesk/rustdesk/discussions/5660
- Why do you do this?
I know it does not make sense, but it is useful, though we can not control scammers switch to the other tools.
- Why don’t other vendors do this?
Both TeamViewer and AnyDesk have frequently been targeted by scams. You can verify this by searching online or checking their Reddit communities. I cannot answer why they haven’t implemented similar measures—you would need to ask them directly.
- Can be self-hosting scammed?
Yes, absolutely. In fact, many scammers use self-hosting solutions. They set up their own servers and trick users (often targeting seniors) into installing custom clients that connect to their self-hosted servers. However, it’s important not to confuse the concept of being scammed (social engineering) with being hacked (technical breaches). Self-hosting, when properly secured, remains a safer and more secure solution compared to SaaS, as it is harder to hack.
How much does the community version of RustDesk server cost?
The community releases are free of charge if you wish to self host, no license is required.
Can I host my own RustDesk server?
- Yes, you can host your own RustDesk server
- There's a guide here: https://rustdesk.com/docs/en/self-host/
Where can I download RustDesk Server?
You can download RustDesk server from:
The server is asking me for a license, where can I get one from?
Please ensure you have downloaded the newest release of RustDesk server as licenses are no longer required for the community release.
Some users reported they could not pull latest RustDesk server with docker in some countries. https://github.com/rustdesk/rustdesk-server/issues/184
Config client for self-hosting
https://rustdesk.com/docs/en/self-host/client-configuration/
https://rustdesk.com/docs/en/self-host/client-configuration/hardcode-settings/
What does the server do, why do I need it?
- It is primarily used to help your RustDesk clients to find each other.
- Once this is done, it helps you try and get a direct connection between them.
- If this fails and your client and controlled devices cannot talk directly to each other, the relay part of side the server will be used to handle the connection.
I only use RustDesk for a few devices on my local network with no Internet connectivity... Can I still use RustDesk with direct ip access?
Yes, you can!
By default this is turned off for security, however if wish to allow this you can do so by doing steps below:
- Enable direct ip access on controlled side (the machine you wish to control)
- On the client you are connecting from you can now input the Local IP address or host name the address box and click connect.
- the connection is unecrypted, please do not send us issue about this.
- You can not use hostname, because we do not it is id or a name, but there is a workaround, https://github.com/rustdesk/rustdesk/discussions/5833
Change id, addressbook/api/login and web console?
https://github.com/rustdesk/rustdesk-server/issues/22
https://github.com/rustdesk/rustdesk/discussions/570
https://github.com/rustdesk/rustdesk/issues/509
Hardware requirement for RustDesk server.
The hardware requirements are very low, the minimum configuration of the cloud server is enough, and the CPU and memory requirements are the minimum. 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 30k-3M/s (1920x1080 screen), depending on the resolution settings and screen update. If it is only for office work demand, the traffic is around 100K/s.
X11 error: connection refused (login as root)
https://github.com/rustdesk/rustdesk/issues/2573#issuecomment-1408672281
How to update RustDesk server?
https://github.com/techahold/rustdeskinstall/issues/30
Some RustDesk Server installer
https://github.com/techahold/rustdeskinstall
https://github.com/elico/rustdesk-ansible-installer
About self-hosting setup
- Most users can make it work following the tutorial: https://rustdesk.com/docs/en/self-host/rustdesk-server-oss/install/ and here is another good tutorial https://www.linkedin.com/pulse/building-your-own-remote-desktop-solution-rustdesk-cloud-montinaro-bv94f
- Ensure there is only one
hbbsprocess running on your server - Key mismatch
- These videos should be helpful. https://www.youtube.com/watch?v=9nzHm3xGz2I and https://www.youtube.com/watch?v=EeFqj23jxMk. This one is also good, https://www.youtube.com/watch?v=OPVFVAnmpLk. Another one in French: https://www.youtube.com/watch?v=J7t32K5--cM
- This video for Windows, https://discord.com/channels/804630702657110016/804630702657110018/1254653367037329499, but it does not cover https and firewall etc.
- Most questions are about Linux and network, which can be Googled and ChatGPTed.
- How to Set Up a RustDesk Server with Docker: A Step-by-Step Guide, https://h3x0r.tech/setting-up-a-rustdesk-server-with-docker.
- Go to Discord, there may be some nice users help you. Or search in the discord
welcomechannel, there are many users who have asked similar questions. Whenever, search is your best friend. - If you host the server in your intranet with some type of routers, you may have network problem because of NAT hairping, https://github.com/rustdesk/rustdesk/wiki/FAQ/#deploy-rustdesk-server-in-intranet
- With nginx: https://github.com/rustdesk/rustdesk/issues/835#issuecomment-1162169296
- arm https://github.com/rustdesk/rustdesk-server/issues/125#issuecomment-1320943098
- Change id, addressbook/api/login and web console? https://github.com/rustdesk/rustdesk/wiki/FAQ#change-id-addressbookapilogin-and-web-console
- Windows
- firewalls https://www.reddit.com/r/rustdesk/comments/11u5aou/unable_to_connect_ubuntu_machine_to_selfhosted/
Again, the document is open source, modify it if you do not like it, https://github.com/rustdesk/doc.rustdesk.com
Video tutorials
How does it work?
https://github.com/rustdesk/rustdesk/wiki/How-does-RustDesk-work%3F
Access Logs?
Our free public server does not persist access log yet.
- Mac:
- Not install:
~/Library/Logs/RustDesk/RustDesk_rCURRENT.log - Installed:
- Controlled side:
~/Library/Logs/RustDesk/server/RustDesk_rCURRENT.log - Control side:
~/Library/Logs/RustDesk/RustDesk_rCURRENT.log
- Controlled side:
- Not install:
- Linux:
- Controlled side:
/root/.local/share/logs/RustDesk/server/RustDesk_rCURRENT.log - Control side:
~/.local/share/logs/RustDesk/RustDesk_rCURRENT.log
- Controlled side:
- Windows:
- Portable:
%AppData%\RustDesk\log\RustDesk_rCURRENT.log - Installed:
- Controlled side:
C:\Windows\ServiceProfiles\LocalService\AppData\Roaming\RustDesk\log\server\ - Control side:
%AppData%\RustDesk\log\RustDesk_rCURRENT.log
- Controlled side:
- Portable:
- Android (Available in V1.2.4)
logs of hbbs and hbbr (RustDesk Server)
If you install with install.sh or deb, the logs files are hbbr.log and hbbs.log under /var/log/rustdesk-server/.
If you install with Docker, please run docker logs hbbs and docker logs hbbr
Wayland
Wayland is experimentally supported in nightly build (1.2), but with some limitations.
https://github.com/rustdesk/rustdesk/issues/4276#issuecomment-1537105758
Change default options
No sound
https://github.com/rustdesk/rustdesk/issues/4280#issuecomment-1543618744
Sponsor open source RustDesk (Donate)
https://github.com/sponsors/rustdesk
Why does self-hosting server need to configure a public key?
https://github.com/rustdesk/rustdesk/discussions/966#discussioncomment-6017364
White screen on windows
https://github.com/rustdesk/rustdesk/issues/418#issuecomment-1595882547
Nginx stream proxy
https://github.com/rustdesk/rustdesk-server/issues/265
Keyboard translation modes
RustDesk >= 1.2.0
- Map mode
With "Map 1:1", all keys are mapped from the local to the remote keyboard based on their position. For example, the key "q" on a local QWERTY keyboard will transmit an "a" character if connected to a remote device with an AZERTY keyboard.
This mode is not recommended for office work but it can be useful if the remote device uses specialty software to map macros to specific keys.
- Translate mode
When "Translate" is selected, all keys will be transmitted to the remote endpoint as if the local keyboard layout is active on the remote device.
However, this layout mode may cause problems with certain programs such as video games as they use scan code to process the key presses.
- Legacy mode
This mode is for compatibility with RustDesk <= 1.1.9.
Force relay
RustDesk >= 1.2.0
Some users experience connection problems with 10054 or deadline has elapsed (https://github.com/rustdesk/rustdesk-server-pro/discussions/325, broken pipe (os error 32) error code. Try to add the suffix '/r' to the remote ID.
or
You can force to use relay for all connections in web console of Pro.
Headless Linux Support
https://github.com/rustdesk/rustdesk/wiki/Headless-Linux-Support
Run in docker
https://github.com/rustdesk/rustdesk/pull/7811#issuecomment-2072965054
Can not open issue on Mac/OSX
https://github.com/rustdesk/rustdesk/discussions/5631#discussioncomment-6943538
Mac input/record permission
https://github.com/rustdesk/rustdesk/issues/3261#issuecomment-1446360067 https://github.com/rustdesk/rustdesk/discussions/7762#discussioncomment-9175161
Performance issue on win11
https://www.reddit.com/r/rustdesk/comments/17ajz0x/windows_11_and_remote_desktop_performance_is/
Windows UAC
When you run RustDesk on Windows without installation (installed version does not have this issue), you will find the window is freeze when you open system settings, task manager etc. This is classic Windows UAC limitation. You can avoid this by accepting the connection with elevation or requesting elevation from menu of controlling window, or run as admin, or install it on controlled side.
Detailed UAC process
1, Even if the controller enters the administrator username and password in the RustDesk elevation prompt, someone on the remote side still needs to confirm it. However, the remote user does not need to enter the password—just click to approve.
2, During software installation, if a UAC prompt appears before the RustDesk elevation prompt, and this initial UAC requires a password, then simply click Cancel on the first UAC prompt, and then approve the RustDesk UAC prompt instead. After that, retry the installation. This time, the controller will be able to see the UAC prompt directly in RustDesk and can enter the administrator password.
So when a UAC prompt appears during installation, the correct steps are:
a. A UAC prompt pops up during installation. The controller requests elevation and enters the administrator username and password in the RustDesk prompt.
b. The user on the remote side rejects the first UAC prompt (which requires a password) and then approves the second RustDesk prompt (which doesn't require a password). At this point, RustDesk is successfully elevated.
c. Re-attempt the installation. Now the UAC prompt will be visible directly inside RustDesk, and the controller can enter the admin password.
Alternatively, you can preemptively elevate by selecting "Elevate" from the RustDesk menu. This will trigger the RustDesk UAC prompt directly on the remote side, which the user only needs to approve. Once elevated, the controller can perform installations and input UAC credentials as needed.
I have recorded and combined videos of both methods on the controller side into one screen for comparison. Please check the attachments:
elevate_when_needed.mp4 shows the case where a password is entered after a UAC appears (I used running CMD as administrator to simulate the installation).
elevate_from_menu.mp4 shows the case where elevation is initiated directly from the menu, allowing direct password entry.
Please review the videos and the description above to check if there are any differences in behavior depending on the situation.
Also, make sure you're entering the correct account format, depending on whether you're using a local or domain account.
Case: The issue was simply that I had initially used just administrator instead of
zentrale\administrator. Once I used the correct format along with the password, it worked perfectly.
How to check what type of account you're using:
- Open Command Prompt or PowerShell.
- Run:
whoami - You will see output like:
MYPC\Administrator→ local accountCORPDOMAIN\AdminUser→ domain account
If you're using a local account:
- Just enter the username only (no prefix).
- Example: Administrator
If you're using a domain account:
- Use the format:
DomainName\Username - Example:
CORPDOMAIN\AdminUser
elevate_when_needed.mp4
https://github.com/user-attachments/assets/ed875a35-8a91-4932-915c-d94556dd6c34
elevate_from_menu.mp4
https://github.com/user-attachments/assets/7648e8a7-3775-4d92-8cce-8ca69156c81f
Access devices on another self-hosted or public server.
https://github.com/rustdesk/rustdesk/issues/6198#issuecomment-1794694273
Use domain instead of ip for direct ip access.
https://github.com/rustdesk/rustdesk/discussions/5833
Why Pro?
"With the Pro version, can you make a client with all server settings in it easy?"
Yup, fairly easy, as long as you have a basic understanding of Linux. All you need is a fresh linux setup on a small VM or server (2GB Ram, 2 CPU) "Is it a good alternative for anydesk or TeamViewer for a msp connecting to a lot of different pc's and company's?"
It's an OUTSTANDING alternative for both, but especially TeamViewer. Using RustDesk with an internal Relay Server helps show how buggy, slow and bloated TeamViewer is (even the paid version), which we moved away from.
It's difficult to accurately describe how fast and lean RustDesk remote desktop connections are with your own server. The Web Gui you get with the paid version is outstanding and feature rich. Some of it's features include the ability to setup user accounts to manage the server, and the ability of users to login to the server to see all machines listed, and login to any of those machines with a single click, shared address book, custom client generator with your icon, logo, configuration, preset settings, and name.
The paid version also provides a number of security features not available with the free version, such as extensive logging (login attempts, time/date stamp, originating IP) and client machine management.
Workaound of X11 connection refused issue
https://github.com/rustdesk/rustdesk/discussions/5095#discussioncomment-8768671
I also hit this in arch kde x11 session.
sudo pacman -S xorg-xhostadd below in my
.bashrcsolve my problem (which enables local root can access you X11 even without $XAUTHORITY)xhost +local:root > /dev/null 2>&1
WOL (wake on lan)
https://github.com/rustdesk/rustdesk/discussions/1249
SOCKS5 proxy failure
https://github.com/rustdesk/rustdesk/discussions/6398#discussioncomment-9065991
Connecting
Ensure your relay server (hbbr which uses TCP 21117 port) is running on the same server of hbbs.
The connection is interrupted every 10-15 seconds
Check C:\Windows\ServiceProfiles\LocalService\AppData\Roaming\RustDesk\log\server\RustDesk_rCURRENT.log, if there is something as below.
[2024-09-03 02:01:37.719270 +03:00] INFO [src\server\connection.rs:3105] #1524 Connection closed: connection manager error: Failed to launch ["--cm"] with session id 1:..... (os error 740)
This is because of something related to permissions, here is a solution.
https://github.com/rustdesk/rustdesk-server-pro/discussions/382#discussioncomment-10525725
Edit:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\AppCompatFlags\Layers:Value name: C:\Program Files\RustDesk\rustdesk.exe
Value data: RunAsInvoker
deadline has elapsed
Try out force relay first. If it does not work, please check the possible reasons below:
- You do not install
hbbryet - https://github.com/rustdesk/rustdesk-server-pro/discussions/386#discussioncomment-10631971
- The controlled side is configured with wrong key
Please check access logs on the controlled side, along with the hbbs and hbbr logs; you can find more clues.
- One user had below error in their access log sometimes. There seems complex networking problem between the pc and the
hbbrserver. Later he resolved this by migratinghbbs/hbbrto another machine.
[2025-02-28 09:43:37.354355 -06:00] ERROR [src\server.rs:246] Failed to create relay connection for ...:63731 with uuid 2dcd80ff-0169-4cfa-ab02-a72154e0ac65: deadline has elapsed
Connection reset by the peer
-
Try out using force relay https://github.com/rustdesk/rustdesk/wiki/FAQ#force-relay.
-
If it is windows portable, it may be caused by the Windows Firewall Dialog, since the first P2P connection attempt will give rise to a TCP listening port. To avoid this, for custom client, you can set below option. Otherwise, you can use force relay https://github.com/rustdesk/rustdesk/wiki/FAQ#force-relay.
- Check if your relay server (
hbbr) is using the same key ashbbs(also ensure the controlled side uses correct key). You can see some errors related to "connection to relay server" in https://github.com/rustdesk/rustdesk/wiki/FAQ#access-logs on controlled side.
[2025-06-06 14:02:38.370839 +08:00] INFO [src\rendezvous_mediator.rs:421] create_relay requested from 12.23.45.67:23108, relay_server: 150.109.58.178:21117, uuid: 2f9ec2fc-2f0e-4002-8e81-eb0eb1241d0b, secure: true
[2025-06-06 14:02:38.419275 +08:00] ERROR [src\server.rs:264] Failed to create relay connection for 12.23.45.67:23108 with uuid 2f9ec2fc-2f0e-4002-8e81-eb0eb1241d0b: Reset by the peer (os error 10054)
You can find the key from logs of hbbs and hbbr. You can find the key (something like [2025-06-06 05:53:48.166257 +00:00] INFO [src/relay_server.rs:604] Key: SsdfdsjTmSQx5Wx4FtcEFqtECfs1nV8QedBR+xpnrK0LM= ) in the header of the logs file.
It may be caused by using wrong volumns mapping in docker compose file, please strictly follow https://rustdesk.com/docs/en/self-host/rustdesk-server-pro/installscript/docker/#docker-compose, or you changed hbbs key but forgot to sync to hbbr (and restart), or some other reasons.
We have seen two cases having this
hbbrkey issue while upgading RustDesk server.
- If your cloud instance has problem with
21117connection.
An user reported this, the hbbr logs below show the relay succeeded but close (It is FIN close, not RST) quickly. This indicated the connection closure likely occurred mid-stream between the server and client, leading us to suspect a cloud provider issue. The problem was indeed resolved after the user migrated to a new cloud instance.
[2025-06-06 05:59:42.978845 +00:00] INFO [src/relay_server.rs:475] New relay request 6b07fbd4-4f29-4721-807b-7c8bd1f6fb02 from [::ffff:114.5.43.33:49925
[2025-06-06 05:59:43.138847 +00:00] INFO [src/relay_server.rs:459] Relay request 6b07fbd4-4f29-4721-807b-7c8bd1f6fb02 from [::ffff:11.12.29.91]:22903 got paired
[2025-06-06 05:59:43.138871 +00:00] INFO [src/relay_server.rs:465] Both are raw
[2025-06-06 05:59:43.138910 +00:00] INFO [src/relay_server.rs:471] Relay of [::ffff:11.12.29.91]:22903 closed
Failed to connect via rendezvous server: Please try later
Ensure the controlled side can connect to hbbs with tcp 21116 port (telnet server-ip 21116)
https://github.com/rustdesk/rustdesk/issues/388#issuecomment-1915892570
Case study:
- Case 1
RustDesk: What happened lately?
User: Nothing, our rustdesk works since 8 months. But this morning it’s doesn’t work, even after restarting the docker.
RustDesk: I believe there is some unawared router/network or firewall change on your side causing the problem. You can check access log (controlled device) to see if there is something different. https://github.com/rustdesk/rustdesk/wiki/FAQ#access-logs
User: Thanks, you have the true answer. The issue come from our Fortinet Client.
- Case 2
The controlled side works fine with UDP 21116 port, but it can not connect to the hbbs server with TCP 21116 port.
- Case 3
User: I'm having this error when one of my employees tries to connect to a Samsung s20 (pic attached). All devices work fine for me, including the s20 He can connect to the google pixels fine, just no the s20 I have also had this issue as well, but it just goes away. He has always had the issue.
RustDesk: A possible reason is that UDP is blocked on your devices. Could you try out this advanced option, https://rustdesk.com/docs/en/self-host/client-configuration/advanced-settings/#disable-udp ? with this option on custom client, it will not use UDP any more (only use TCP)
User: Thank you this worked! Much appreciated.
- Case 4
User: I enabled "disable-udp=Y", but still had the same issue.
RustDesk: Could you try force relay, https://github.com/rustdesk/rustdesk/wiki/FAQ#force-relay
User: Great, it works. How can I set it for all connections?
RustDesk: You can set it on web console.
Failed to secure tcp:Handshake failed: invalid public key from rendezvous server: Please try later
Please check Setting -> Network -> Id/relay server on rustdesk client, and the the screenshot of Settigns -> Key on the web coonsole. Need to confirm they have the same key (public key).
Deploy RustDesk server in intranet.
First you should set relay server with public ip (you need to fix NAT hairping problem to use public ip in intranet first) explicitly on "settings" -> "relay" of web console. Or you can set relay server (public ip) explcitly on controlled side (remote side, the device you want to control).
Try force relay if you encounter connection problem.
Go to access logs on controlled side, you can see more details about failures, also check connection logs %AppData%\RustDesk\log\RustDesk_rCURRENT.log on controlling side.
If you host the server in your intranet with some type of routers, you may have network problem because of NAT hairping.
--> c:\Windows\System32\etc\hosts: add "192.168.232.10 name.mydomain" and this way all the internal hosts will resolve name.mydomain like an internal IP address instead of the external IP.
Here is how ChatGPT explains NAT hairping.
Now, let's say you're inside your network, on your laptop, and you try to access that same web server using its public IP address or domain name.
Without NAT Hairpinning: Your request goes to your router, which sees that the destination IP is its own public IP. Normally, the router expects traffic destined for its public IP to come from the internet (external network). It might get confused, or simply not know how to route the traffic back to the internal server, and the connection will fail.
With NAT Hairpinning: When your router has NAT Hairpinning enabled, it recognizes that the request from an internal device is destined for its own public IP (which is also configured to forward to an internal server). Instead of sending the request out to the internet and then trying to route it back in (which is inefficient and often fails), the router intelligently redirects the request directly back into the internal network to the correct internal IP address of the server.
Also we high recommend you deploy on cloud instance which make your life quite simple, here is an example.
User: Well, I DID deploy the server in intranet (LAN) but I also am using DNS and DID set up a DNS re-write to the LAN version of the Rustdesk server IP for intranet endpoints but I am still having these issues. I did #2 here: https://rustdesk.com/docs/en/self-host/nat-loopback-issues/, The NAT hairpinning might explain the lack of connectivity to an onsite endpoint that has VPN turned on. But it does not explain me being unable to remote control offsite endpoints from campus...
...
...
User: I just migrated it to a Linode instance and redirected DNS and everything is good now. Thanks for your help!
One simple solution for NAT hairping (loopback) is that both internal and external use domain. Internally, use an internal DNS Server (or modify your hosts file) to point the domain to an intranet IP.
https://rustdesk.com/docs/en/self-host/nat-loopback-issues/
https://github.com/rustdesk/rustdesk-server/issues/24#issuecomment-1234029480
https://github.com/rustdesk/rustdesk/issues/732#issuecomment-1300514997
https://github.com/rustdesk/rustdesk/issues/732#issuecomment-1319433120
https://www.reddit.com/r/rustdesk/comments/1174mgw/comment/j9e9avt/?context=3
https://github.com/rustdesk/rustdesk-server/issues/200#issuecomment-1543710510
https://github.com/rustdesk/rustdesk-server/issues/134#issuecomment-1303437173
https://github.com/rustdesk/rustdesk-server/discussions/353#discussioncomment-8427782
NAT Reflection Mode: https://www.reddit.com/r/PFSENSE/comments/fp9h1f/can_someone_explain_to_me_what_is_nat_reflection/
Also make sure your relay server has correct key, https://github.com/rustdesk/rustdesk/issues/7358
CTRL-ALT-DEL does not work
- Make sure you install RustDesk on Windows, a system service is required for this so you have to install
- Check if
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System\SoftwareSASGenerationregistry have correct value, 1 or 3. https://knowledge.broadcom.com/external/article/21517/ctrlaltdel-does-not-work-on-remote-contr.html
Unable to display image despite screen sharing being enabled on Android
We encountered this issue when there are multiple RustDesk clients operating on Android, one being the public release and the other a custom client. If you initiate the service of one client and subsequently start the service of the other, you will not be able to retrieve an image. To rectify this, you must forcibly close the first client (making sure it's not running in the background) and then restart the other one. If the issue persists, please reboot your Android device.
Modify Login Screen (gdm) session from Wayland to X11
https://rustdesk.com/docs/en/client/linux/#login-screen Above may not work in some distro or gnome version, here is fix (may be not proper) https://github.com/rustdesk/rustdesk/issues/8106#issuecomment-2122537264
Prevent Android service from being killed by the system
https://github.com/rustdesk/rustdesk/issues/6192#issuecomment-1848358333
Command line
https://github.com/rustdesk/rustdesk/discussions/3980#discussioncomment-11172341
--assign command line
Command line output on Windows
By default rustdesk.exe in command line on Windows has no output, you have to run it like below.
-
cmd.exe:
rustdesk.exe <args> | more, e.g.rustdesk.exe --get-id | more -
PowerShell:
rustdesk.exe <args> | Out-String, e.g.rustdesk.exe --get-id | Out-String
https://github.com/rustdesk/rustdesk/discussions/6377#discussioncomment-8094952
Run in iOS simulator
https://github.com/rustdesk/rustdesk/discussions/5345#discussioncomment-6772568
Instructions to run RustDesk on iOS Simulator [MacOs Apple Silicon]:
- Follow the CI for ios till
662a768d83/.github/workflows/flutter-build.yml (L436) - Make sure to use target
x86_64-apple-iosinstead ofaarch64-apple-ioshere 👆 - Try
flutter runand you might get some path error. So search and replace code containing pathtarget/aarch64-apple-iostotarget/x86_64-apple-ios - Now you will run into some errors related to architecture mismatch. To fix this add the following to your Podfile
post_install do |installer|
installer.pods_project.targets.each do |target|
flutter_additional_ios_build_settings(target)
target.build_configurations.each do |config|
config.build_settings['IPHONEOS_DEPLOYMENT_TARGET'] = '11.0'
+ config.build_settings["EXCLUDED_ARCHS[sdk=iphonesimulator*]"] = "arm64 i386"
end
end
end
Source: https://github.com/flutter/flutter/issues/94914#issuecomment-992898782
flutter run👍
Why do Custom Clients have to be built on a shared build server
https://github.com/rustdesk/rustdesk/discussions/13769
Failed to log in with custom client build or public release with wrong API settings.
This is usually because your custom client was built before you set up
https.
Please go to custom clients of web console, modify API below to correct url, e.g. https://rustdesk.example.com (please remember to remove :21114), then rerun the build to get a new custom client with the new API value (the same as web console address). If it is not custom client, please go to RustDesk client Settings -> Network, set correct API (the same as web console address).
Here is a good example, https://github.com/rustdesk/rustdesk/discussions/8999
If you set 21114 as the https port, please check https://github.com/rustdesk/rustdesk/discussions/10922#discussioncomment-12336832
Connection Log or device name on devices page of web console is empty
Actually it is the same problem as above, set correct API (the same as web console address), you have wrong API settings.
The simplest way to verify the API configuration is to log in on client and check if you encounter any error messages as https://github.com/rustdesk/rustdesk/wiki/FAQ#failed-to-log-in-with-custom-client-build-or-public-release-with-wrong-api-settings
Please double confirm the API address used for building the custom client, especially some were built before you configured https or domain etc.
You probably have one of below mistakes.
- You changed api from
<ip>:21114to<domain_name>:80, and blocked21114, but you still use<domain_name>:21114or forget to modify. So please double confirm, change api tohttp://<domain_name>:80(:80is not required, it is the default http port) - You changed from http to https, and blocked
80, but you still usehttp:<domain_name>or usehttps://<domain_name>:21114or forget to modify, So please double confirm, change api tohttps://<domain_name>:443(:443is not required, it is the default https port). Be careful here, it ishttpsrather thanhttp. 21114tls port is changed to443by rustdesk, https://github.com/rustdesk/rustdesk/discussions/10922#discussioncomment-12336832
For further diagnose, please check the logs on the controlled device for entries similar to DEBUG [src/server/connection.rs:1103] error sending request for url. The log file path can be found here: https://github.com/rustdesk/rustdesk/wiki/FAQ#access-logs.
Another extreme case is when the user cannot see devices on the devices page for some time, yet they can still connect. Later, the user discovered the server was in an unstable condition. After redeploying on a new server, everything worked fine.
Unexpected character when log in
It might be because you used wrong port like this https://github.com/rustdesk/rustdesk-server-pro/issues/396#issuecomment-2564914847
It also might be because you should use https but you used http like this https://github.com/rustdesk/rustdesk-server-pro/discussions/537#discussioncomment-12200960
Impossible to get Android input permission
https://github.com/rustdesk/rustdesk/issues/4023#issuecomment-1566588786 https://github.com/rustdesk/rustdesk/discussions/6241#discussioncomment-10262867
Install/Upgrade from command line on Windows.
On our release page, there are exe and msi files, both can be used to install on Windows. If you are our Pro users, you can choose to build exe or msi on custom client edition page.
- If you use the exe file:
.\rustdesk.exe --silent-install - If you use the msi file:
msiexec /i .\rustdesk.msi /quiet
How to use TCP tunneling (port forwarding).
Below is an example of forwarding local 24 port to remote 22. Then you can access remote with ssh localhost -p 24.
DDNS
https://www.reddit.com/r/rustdesk/comments/1ejw8l3/self_hosted_and_dynamic_ip_question/
How to separate the tabs (enable the separate window mode)?
https://github.com/rustdesk/rustdesk/discussions/2889#discussioncomment-6514549
API of RustDesk server Pro
Please create a token (check above link for devices) with Read and write of user/device/audit/ab Permission first.
Example: https://github.com/rustdesk/rustdesk-server-pro/discussions/182#discussioncomment-9083837
# Noted: here, all name containing `test` will be returned
python3 users.py view --url http://rustdesk.yourcompany.com --token <token> --name test
python3 users.py disable --url http://rustdesk.yourcompany.com --token <token> --name test
python3 users.py enable --url http://rustdesk.yourcompany.com --token <token> --name test
Example: https://github.com/rustdesk/rustdesk/pull/12989
- Address book: https://raw.githubusercontent.com/rustdesk/rustdesk/master/res/ab.py (Pro version >= 1.6.5)
Example: https://github.com/rustdesk/rustdesk/pull/12989
- Strategy: https://raw.githubusercontent.com/rustdesk/rustdesk/master/res/strategy.py (Pro version >= 1.7.2)
Example: https://github.com/rustdesk/rustdesk/pull/13453
- Device group: https://raw.githubusercontent.com/rustdesk/rustdesk/master/res/device-groups.py (Pro version >= 1.7.2)
Example: https://github.com/rustdesk/rustdesk/pull/13453
- User group: https://raw.githubusercontent.com/rustdesk/rustdesk/master/res/user-groups.py (Pro version >= 1.7.2)
Example: https://github.com/rustdesk/rustdesk/pull/13453
Delete devices with API
https://github.com/rustdesk/rustdesk-server-pro/discussions/182#discussioncomment-9082528
Android - Restart Screen Capture service on boot
https://github.com/rustdesk/rustdesk/discussions/1330
Android "Start on boot" and limitations
https://github.com/rustdesk/rustdesk/issues/3533#issuecomment-1490065448 https://github.com/rustdesk/rustdesk/pull/3425#issuecomment-1606196384 https://github.com/rustdesk/rustdesk/discussions/1330 https://github.com/rustdesk/rustdesk/wiki/FAQ#impossible-to-get-android-input-permission
root
https://github.com/rustdesk/rustdesk/issues/3533#issuecomment-1490226898
Android 13 / 14 Input Controll is Restricted by Android due to "Security reasons"
https://github.com/rustdesk/rustdesk/discussions/6241
How to remember this.
adb shell appops set com.carriez.flutter_hbb PROJECT_MEDIA allow
https://github.com/rustdesk/rustdesk/discussions/6241#discussioncomment-10262867
Unable to open macOS App
If your app file is transfered from telegram or some other tools, the metadata might be changed by these tool.
https://github.com/rustdesk/rustdesk/discussions/8593
Deploy on macOS (permission configuration)
https://github.com/rustdesk/rustdesk/discussions/7762
Unlock security settings not work on some Linux
https://github.com/rustdesk/rustdesk/issues/2756#issuecomment-2294775234
The main interface cannot be displayed when using multiple monitors
https://github.com/rustdesk/rustdesk/issues/6223#issuecomment-1787984126
Proxy for Pro server
Add proxy support for license verification (also apply to custom client generator and oidc) in case you can not access internet directly
e.g. proxy=http://username:password@example.com:8080 ./hbbs
you can also add proxy=http://username:password@example.com:8080 to .env file under working directory (where you can see id_ed25519 / db.sqlite3 files)
About how to set up http proxy server, please check https://github.com/rustdesk/rustdesk/wiki/Set-up-http-proxy-server
How often does Pro check license?
It pings rustdesk.com on port 443 (outbound) daily. If the ping fails, it retries every minute until it succeeds or until 7 days have passed.
Unable to Validate License (Failed to update license)
Please go to "Settings" -> "License" page on web console, then click on "Edit" and "Ok", you will see the license validation error.
- Case 1:
User 1: Google etc can be accessed. The final reason is related to the user's cloud provider.
It was a problem with our cloud provider. It was not a DNS problem. I believe it was something with international routes because Rustdesk site (currently hosted at address 45.76.181.120) was not the only host we couldn't reach from our server.
If you're running with Docker, please confirm that
nslookup rustdesk.comworks on your host server. If it works on the host, restarting the Docker container will likely resolve the issue.
User 2:
I forgot that on the host vlan there was geoblocking active on the firewall. I whitelisted the ip address and now it's working.
User 3:
Thanks to the URL (
https://rustdesk.com/api/lic/license/check), I found the block in my firewall.
- Case 2:
User: It’s a company network, those servers all are in different vlans. When I point my browser to the link, it works.
RustDesk: We can not figure out what blocks
rustdesk.comon the company server. The user moved the server to an external network for activation.
- Case 3:
If you run container (Docker etc), there might be DNS problem with container, https://github.com/rustdesk/rustdesk-server-pro/issues/136. https://www.reddit.com/r/docker/comments/1b0q9vd/set_dns_for_docker_container/
- Case 4-1: Some users encountered TLS issue on server (especially on Windows server, I would suggest you switch to Linux server), you need to update CA root certificates on your server.
C:\Windows\system32>curl -X POST https://rustdesk.com/api/lic/license/check -H "Content-Type: application/json" -d "{}"
curl: (60) schannel: SEC_E_UNTRUSTED_ROOT (0x80090325) - The certificate chain was issued by an authority that is not trusted.
- case 4-2:
I think my Firewall don't like something on your certificate; I'm adding an exception for the domain rustdesk.com
We also had the problem on the rustdesk website.
- case 4-3:
Failed to update license: network error: reqwest::Error { kind: Request, url: "https://rustdesk.com/api/lic/license/check", source: hyper_util::client::legacy::Error(Connect, Ssl(Error { code: ErrorCode(1), cause: Some(Ssl(ErrorStack([Error { code: 167772294, library: "SSL routines", function: "tls_post_process_server_certificate", reason: "certificate verify failed", file: "../ssl/statem/statem_clnt.c", line: 1883 }]))) }, X509VerifyResult { code: 19, error: "self-signed certificate in certificate chain" })) }
And my ca-certificates is already the newest version (20230311+deb12u1).
curl -X POST https://rustdesk.com/api/lic/license/check -H "Content-Type: application/json" -d "{}"
curl: (60) SSL certificate problem: self-signed certificate in certificate chain More details here: https://curl.se/docs/sslcerts.html curl failed to verify the legitimacy of the server and therefore could not establish a secure connection to it. To learn more about this situation and how to fix it, please visit the web page mentioned above.
Cause:
the issue was coming from our Fortinet firewall.
- Case 5:
It was tailscale needing reauthentication on the debian VPS. Because it's 100.100.100.100 magic dns was first in the dns list it kept failing before it tried the regular dns. Disabled the need to reauthenticate that node and problem solved.
- Case 6:
You can close my ticket. It was my firewall blocking the license server IP.
Hide connection popup (cm) and hide tray
https://github.com/rustdesk/rustdesk/discussions/6008#discussioncomment-7268951
https://rustdesk.com/docs/en/self-host/client-configuration/advanced-settings/#hide-tray
Set up http proxy
https://github.com/rustdesk/rustdesk/wiki/Set-up-http-proxy-server
Mouse is blue circle sometimes when there is no physical mouse sometimes
https://github.com/rustdesk/rustdesk/discussions/4945
https://github.com/rustdesk/rustdesk/issues/9274
https://github.com/rustdesk/rustdesk/issues/672#issuecomment-1146668238
Feature request policy of Pro
Yes, we prioritize feature requests from our current Pro users, but not from potential users. We cannot guarantee a 100% commitment, but we will try our best especially for some common requests. Please submit your feature request on https://github.com/rustdesk/rustdesk-server-pro/discussions/new?category=feature-request
Feature request policy of OSS
We might change your FR to general (for those, we totally disagree) or idea (for those, we do not consider for the time being, but might look back sometime) category if we do not agree with your requirement. Please do not try to convince us. We know all requests are the most important for you, but sorry, it is only for you, we have our concerns. We do not attempt to convince you, so please do not convince us either.
Where is Settings?
How to change codec?
Required ports for client
https://github.com/rustdesk/rustdesk-server-pro/discussions/389
Delete devices with API
https://github.com/rustdesk/rustdesk-server-pro/discussions/182#discussioncomment-9082528
2FA always fail
Please ensure the time on the server is not out of sync, set the correct time accordingly.
The connection is not allowed. You have not logged in or your login session has expired
https://github.com/rustdesk/rustdesk-server-pro/discussions/414#discussioncomment-10911439
You have no permission to access the remote device.
Please check your ACL carefully https://rustdesk.com/docs/en/self-host/rustdesk-server-pro/permissions/.
A user can access the remote device if any below one:
- The device is assigned to the same user, or to another user within the same user group (if
Allow connections within groupis enabled), or to a user in another group that has been grantedcross-group connectionpermissions. - The login user has the permission to access the device's device group
- The login user's user group has the permission to access the device's device group
If the remote device is not assigned to any user or device group, login is not required, unless you enable the options below on the web console under Settings → Others.
If you do not ensure it, please send below screenshots to us.
- The remote device on
Devicespage on web console. - The login user (controlling side) on
Userspage on web console - The device group (the remote device is assigned to if the device does have device gorup) on
Groups->Device Groupspage. - The user group (the login user is assigned to if the user has user group) on
Groups->User Groupspage.
The connection is not allowed, the remote device is disabled
You need to upgrade your plan for more devices, or https://github.com/rustdesk/rustdesk-server-pro/discussions/182
Do not forget to refresh your license after upgrade is done.
Then you need to re-enable these devices from the devices page on web console manually.
URI / UNI link
https://github.com/rustdesk/rustdesk/issues/616#issuecomment-1837468064
The main interface cannot be displayed when using multiple monitors
- Try modify %APPDATA%\RustDesk\config\RustDesk_local.toml by removing the line starting with wm_Main.
- Or press
windows key + shift + left/right
https://github.com/rustdesk/rustdesk/issues/6223#issuecomment-1945512879
How to use RDP via tcp tunneling (port forward) ?
Please make sure the RDP service is turned on on your controlled side. The Windows RDP service is not available on Windows Home edition; you need Windows Pro edition.
If both sides are Windows, you can see a RDP shortcut as below.
Otherwise, please follow below:
- Start
tcp tunnelingfirst.
- Create a port forward
- Now, you can connect to RDP via
localhost:1234.
What is the callback / client id / secret of Azure in Pro?
The callback is the public URL of the API so https://[yourservername]/api/oidc/callback as long as you setup https and a public URL. The Client ID and secret are part of the Azure application setup steps in the instructions
OIDC, common login error "failed to request the auth url"
https://github.com/rustdesk/rustdesk-server-pro/discussions/477
What are managed devices / Login users / concurrent connections in Pro?
Managed devices
All devices connected to the server are counted, we can not know the device will be accessed once or many time. These devices are displayed on the Devices page of the web console. Excessive devices will be disabled (you can not remote access a disabled device), you can not access these excessive devices remotely. The number of managed devices on the plan is also the maximum number of items allowed in one address book.
Controlling vs. Controlled Devices: If a machine is connected to our self-hosted server via the custom client, but its sole purpose is to act as a Controlling Device (the initiator, used by a reseller/technician) to access other endpoints, is that controlling machine counted as a "Managed Device" simply because it is connected to the server? Or does "Managed Device" only count the endpoints that are the targets of a remote session (i.e., the client machines being managed)?
You can create outgoing only custom client, it will not be counted.
Login users
Login users, the number of accounts from your team can log into the web console and the RustDesk client. The team administrator can assign different ACLs to each user. These users are displayed on the Users page of the web console. Access control and shared address books are designed on individual users and user groups. One user can log in to multiple devices.
You need to log in to the RustDesk client first to access address books and permission-enabled devices.
If a single technician (a unique human/account) installs and uses the client on multiple machines (e.g., their work PC and a laptop) to initiate remote sessions, does this count as one "Login User" or multiple "Login Users"? This distinction is crucial as this is the metric tied to the $1 per additional user cost.
A single technician is always counted as one Login User, regardless of how many devices they install the client on or use to start remote sessions. You only need to create one user account for that technician in the system. Multiple technicians can even share the same login credentials if desired—doing so still counts as one Login User in the license.The "User" concept exists primarily for Access Control Lists (ACL)—to define which technicians may access which remote devices. If you do not require granular access control (i.e., all technicians can access all machines), you do not need multiple user accounts at all. A single admin user is sufficient.
Concurrent connections
It's the same as the so called channels with teamviewer. Here is how TeamViewer defines concurrent connections: it is the number of individual users who can make outgoing connections simultaneously. You can also call it channel, in the same channel, unlimited sessions are allowed.
For example, on one machine A, you can connect to machine 1, 2, 3, etc., at the same time without limitation. Each outgoing connection in this case is a session, and all of these sessions together are called one channel; unlimited concurrent outgoing sessions are allowed on one machine or in one channel. However, you cannot establish new connections from B to machine 1, 2, 3 while there is an outgoing connection on A at the same time if your license allows only one concurrent connection.
A connects to machine 1, 2, 3 at the same time, it is one channel, one current connection is ok.
A,B, C connect to machine 1 at the same time, it is 3 channels, 3 concurrent connections are required.
Tech 1: connects to PC A and B
Tech 2: connects to PC C
Tech 3: connects to PC D, E, and F
Tech 4: connects to PC G
You need 4 concurrent connections for the above case.
Concerned about managed devices and quick support
https://github.com/rustdesk/rustdesk/wiki/FAQ#managed-devices
https://github.com/rustdesk/rustdesk/wiki/FAQ#what-about-casual-support-cases-for-pro
Custom2 license has limited connections, but custom license has unlimited
Though custom license has unlimited connections, but it has limited devices, excessive devices will be disabled. Though custom2 has limited connections, but excessive devices won't be disabled, though they can not be assigned to users and no permission control, they can still be accessible, this is ok for casual/one-time/quick/ad-hoc support scenario.
Does the product have an agent that can only receive connection similar to TeamViewer host?
Yes, we provide quick support clients (you do not have to install it) which receive connection only.
https://github.com/rustdesk/rustdesk/discussions/8981
What about casual support cases for Pro?
We provide a new solution (license model) for your case.
Excessive devices in this new license model will not be disabled automatically; however, we have introduced a limit on the number of concurrent connections. Excessive devices cannot be assigned to users or device groups. Additionally, the maximum number of devices that can be included in a single address book is restricted by the total number of managed devices allowed under your license.
The new license model: https://rustdesk.com/pricing#custom2
You can also upgrade to this model in https://rustdesk.com/self-host/account by following https://github.com/rustdesk/rustdesk-server-pro/discussions/182#discussioncomment-10335560
License models
We have two license models.
The first one is in our pricing page, rustdesk.com/pricing, it does not limit number of concurrent connections, but limit number of devices strictly, excessive devices will be disabled. All devices will be counted no matter it is accessed once or everyday, the server itself does know how often it will be accessed. About the definition of users and devices, please check here, https://github.com/rustdesk/rustdesk/wiki/FAQ#what-are-managed-devices--login-users--concurrent-connections-in-pro
The second one is here, https://github.com/rustdesk/rustdesk/wiki/FAQ#what-about-casual-support-cases-for-pro, we call it custom2, it does not limit devices strictly, but limit number of concurrent connections, which is mainly designed for casual / quick support use case.
Security Information
https://github.com/rustdesk/rustdesk/discussions/9835
Docker SSL/TLS problem
User: We are using docker compose and after a reboot of Rustdesk the console is displaying “License is not verified yet”. License key hasn’t changed since installation and editing it gives us error below :
RustDesk: It seems your docker container has ssl certificate problem, I would suggest you run with native package on the host with out container, or build a new container. about license migrate please: https://rustdesk.com/docs/en/self-host/rustdesk-server-pro/license/#invoices-license-retrieval-and-migration
User: Thanks, we’ve been able to resolve the issue and the server seems to be working without problem now.
Bind RootCAs (SSL/TLS) of host to Docker container
https://github.com/rustdesk/rustdesk-server-pro/issues/99#issuecomment-2674522210
Windows 10 opens the software with a white screen and no content (monitor/display turned off)
https://github.com/rustdesk/rustdesk/discussions/10344
Windows connect to specific Session
https://github.com/rustdesk/rustdesk/discussions/2095
Connection note
Business name and VAT etc in the invoice
Please turn on the "I'm purchasing as a business" option in the payment page as below first, then you can fill in your business details including VAT etc.
Migrate self-hosting OSS version to Pro
https://rustdesk.com/docs/en/self-host/rustdesk-server-pro/installscript/#convert-from-open-source
Renew / upgrade license
Please follow this link to renew or upgrade (if you want more users and devices) your license.
It won't generate new license key, it will renew / upgrade your current license.
The upgrade will also extend your license expiry to a full year, so you will see the charge higher than your expectation, it is not a bug, and the calculation is correct. Why do we do this? Imagine you only have one day left before your license expires. Upgrading a license with just one day remaining doesn't make much sense. Therefore, for simplicity, we extend it to a full year regardless of how many days are left.
After making the payment, please refresh the license as below to activate it.
Is it over charge in upgrade?
User: We needed to add 100 additional client licenses and were charged $500, pay all at once. It should have been 0.1 * 100 * 12 = $120. We need to be refunded the difference.
RustDesk: The license expiry date is extended to a full year, as explained here. The current date is August 14, 2025. Your existing license covers 10 users and 800 devices, with an expiry date of March 12, 2026. You are upgrading the license by adding 100 devices, and the license is extended for a full year, so the new expiry date is August 14, 2026. The charge is divided into two parts:
- Part 1: The cost for the new 100 devices for 12 months is calculated as: 0.1 * 100 * 12 = 120 USD
- Part 2: The cost for extending the existing 10 users + 800 devices for an additional 5 months (from March 12, 2026, to August 14, 2026) is calculated as: (1 * 10 + 0.1 * 800) * 5 = 450 USD
Total charge: Approximately $570 USD.
Refresh license
After payment, you need to proceed to the web console to activate it manually as below. Just click on Edit, then OK, no need to edit anything, because your license key remains the same.
SSL/TLS/HTTPS setup with NGINX
This video tutorial https://www.youtube.com/watch?v=MclmfYR3frk also covers this.
SSL/TLS/HTTPS setup with Caddy
Please choose to use NGINX first since our support does not know Caddy, but here is an example from contributors.
https://github.com/tommyvange/RustDeskPro-WSS
Migrate license to another machine
The license can only be used on one machine, but you can migrate it to another machine if current machine gets down, https://rustdesk.com/docs/en/self-host/rustdesk-server-pro/license/#invoices-license-retrieval-and-migration
How can we set up a client with a fixed password for unattended remote access?
- Method 1
- Method 2
You can preset password with custom client. We do not support password-less access yet, but you can share passwords easily with shared address books. If you want to disable random (one-time) password and hide popup, please follow this. You can also set advanced option to disable random password.
Unattended access
You can get unattended access after you set permanent password on the controlled side or preset password on custom client, or set password from command line rustdesk.exe --password <password>.
Reset password/email verification / 2fa verification in Pro of web console
https://github.com/rustdesk/rustdesk-server-pro/discussions/183
Assign address book
-
Manually in web console or rustdesk client
-
Preset in the custom client
- Via command line
Assign group
-
Manually in web console
-
Preset in the custom client
- Via command line
Easy access mode
We do not have password-less easy access mode for the time being yet. This mode has been assessed but deemed unsuitable for enterprise deployment due to its restrictive prerequisites. Specifically, it mandates prior user authentication and explicit permission grants on the target device before access is permitted. Such limitations undermine scalability and efficiency in managed environments.
But you can implement it via preset permanent password in custom client on controlled side. Currently, we do not support changing preset permanent password in strategy, here is an open discussion about this.
Then on the controlling side, you can use default-connect-password option
Or use preset password (also for controlling, not for being controlled) in address book and share in your team.
Or use a address book level preset password.
RustDesk Service does not start automatically
User: When I start either the RustDesk Custom Client or the normal Client, I have to manually start the RustDesk Service every time.
"C:\Program Files\RustDesk-Persch\rustdesk-persch.exe" --install-service. Is there a better workaround available?
RustDesk team: I noticed from your
rustdesk.exe --silent-install 1log, you triggered this. Have you ever stopped the service manually before on the rustdesk client?
User: Yes, I stopped the service via the tray icon in Windows. My mistake! The problem is solved. Sorry for taking up your time. So I had to completely uninstall my previous installation of Rustdesk (delete all hidden files in AppData etc).
Key mismatch
This occurs when the ID/Relay Server key (it is not the license key) under Settings -> Network in the RustDesk client does not match the public key found in the Setting -> Key section of the RustDesk Pro web console (or you can check the ed_id25519.pub file on server side).
There are some cases which might help you.
Please confirm the key is correct first, https://rustdesk.com/docs/en/self-host/client-configuration/#2-manual-config
Please make sure there is only one rustdesk server (or one hbbs process) running especially you change from OSS to Pro.
Please run ps aux | grep hbbs to ensure there is one hbbs process (case 1), and confirm there is not another machine running another rustdesk server (case 2).
Case 1:
we confirmed with the client about the public key again, it is correct, but they still have key mismtach error. then we connect to their server with our client, we got key mismatch sometimes, and sometime not. The reason is they are running two rustdesk server processes.
Case 2:
Alright. Sorry. My mistake. This was me. I forgot I already had a local non licensed version of rustdesk server running on my own server in my office. It wasn't being used by any clients, but it seems like it was causing issues with connections and the discovery of my licensed server i have running on Digital Ocean. I shut it down on my local server, and things started working.
< But why this one has key mismatch? it connect to your digit ocean rather than your free one.
Yup! It's weird. I even confirmed the keys were the correct on all machines in the network settings. But as soon as I shut down the local server running on my network, the devices in my digital ocean server populated with the clients I installed and I was able to connect to the device that was giving the key error. Not sure if it's a big you need to investigate?
Case 3:
As you correctly pointed out, the problem was caused by two hbbs processes running simultaneously – one via Docker and one started manually via systemd. This led to a port conflict and ultimately resulted in the clients receiving the “keys do not match” error.
RustDesk Service service terminated unexpectedly
https://github.com/rustdesk/rustdesk/discussions/11006
Can not delete devices on web console
You can delete a device only when it is offline and disabled. If the device is always online, you cannot delete it because it will reconnect and appear online again after deletion. In such cases, you can only disable it. A disabled device has the same effect as a deleted one—it becomes inaccessible and does not continues to occupy a slot in your license's device limit.
Steps to create custom clients
https://github.com/rustdesk/rustdesk/discussions/8981#discussioncomment-10277642
Unknown custom clients downloads and executions
https://github.com/rustdesk/rustdesk-server-pro/issues/312
The new icon for my custom client does not take effect on Windows after I change it.
cd %localappdata%\microsoft\windows\explorer
del iconcache*
taskkill /F /IM explorer.exe & start explorer
When can we get latest custom client version after public release?
Here is a discussion regarding this, https://github.com/rustdesk/rustdesk-server-pro/discussions/463#discussioncomment-11416450
So we always upgrade custom client to newest version later, No ETA yet, but we will try our best. When it is ready, we will notify on https://github.com/rustdesk/rustdesk-server-pro/discussions
Custom Client build / creation failures
- Case 1: Fails with error 403 https://github.com/rustdesk/rustdesk-server-pro/discussions/572
- Case 2:
The rustdesk server Pro runs behind the proxy, the proxy remove the
Authorizationheader which our build server requires. The custom client is not built on your server—it’s compiled on our build server. Your server communicates with ours via HTTP to request these builds. However, some users’ servers lack direct internet access and rely on a proxy. Unfortunately, this proxy strips critical HTTP header fields, which disrupts communication between the servers. As a result, the custom client fails to function correctly, leaving tasks perpetually queued and preventing the download link from being created. - Case 3:
The build job remains in a
waitingstatus. I verified that all background build tasks have completed successfully, but the web console does not reflect this. The issue appears to be related to the proxy configuration once again. While the build job is triggered via aPOSTrequest, the status is polled using aGETrequest that includes anAuthorizationheader. However, the proxy is stripping theAuthorizationheader fromGETrequests, preventing the status from being retrieved correctly.
It is also possible that your WAF blocks certain requests, e.g. GET.
User: Can we arrange an appointment for tomorrow so you can log on to the server and check it?
RustDesk: We can do nothing even we log on to your server. It is your proxy strip the 'GET' request header. I have no way to modify your proxy. I think you do not have the permission either.
User: I figured it out. I added the proxy information to the YAML file for each image, so that it doesn't take it from the .env file. This works perfectly for us.
- Case 4:
User: I see "Build timeout" error
RustDesk: Could you try again then when you see this?
User: After long time waiting it is the same.
RustDesk: It is quite strange, I can see your build is successful on our side. But you failed to query the status. Could you try to build a macOS custom client? If the same issue?
User: It is now ok in another browser and device.
Conclusion: it seems
Reactdoes not work well on some browsers. Refresing browser might also skip "Build timeout" error for this case.
Showing multiple remote minotors as individual windows
https://x.com/rustdesk/status/1714199082640581039
Need to set license everyting after restarting container
you HAVE to use network_mode: "host" to ensure licensing persists
Open connection in new window rather than tab
or turn off below
Desktop crash after a few minutes
Try turn off hardware codec please. https://www.reddit.com/r/rustdesk/comments/1h3z7fj/desktop_crash_after_a_few_minutes/
Panicked at library/std/src/sys/pal/unix/time.rs when running hbbs / hbbr in container
Add below
privileged: true
cap_add:
- SYS_TIME
into the config for both hbbr & hbbs.
Update button is missing
Try renaming the exe file to rustdesk-install.exe and run that. It should open up the install dialog.
LDAP integration
- Scope
I have a quick question regarding the LDAP integration. I've completed the configuration, and when I click 'OK', I receive a message confirming that the setup was successful.
However, when we attempt to log in with an Active Directory user on the RustDesk client, the authentication fails with an 'incorrect credentials' error. We've tested this with multiple AD accounts, but the issue persists.
Solution: Please change scope from one to sub.
- Username Attribute
I got "I/O error: User not found" error when using some user names
The issue was caused by the LDAP configuration missing the correct
Username Attribute. As a result, we were only able to log in using the display name instead of the sAMAccountName.
It happened to work for the "cc" account because the display name and sAMAccountName were identical. In my case, however, the display name was "AA BB" while the sAMAccountName was "aa", and I had only been attempting to log in using the sAMAccountName, which is why my user couldn't be found.
I’ve now updated the configuration to use sAMAccountName as the
Username Attribute, and everything is working as expected.
Is web client integrated into RusetDesk server pro?
Yes, it is integrated, but it requires the $39.90/month plan or higher. Once the Pro server is installed, you can access the web client via https://<your-server-pro-dns>/web.
For example, if your web console is https://rustdesk.hello.com/static/index.html, your web client will be https://rustdesk.hello.com/web.
To enable the self-hosted web client, you must configure your reverse proxy to support WebSocket Secure (WSS). Please follow this to make the necessary changes.
BTW, WebSockets ≠ web client. They are two entirely different things. WebSockets is a technology that works in both native and web clients.
We mentioned a web client requiring a higher plan on the pricing page before, but then everyone emailed us asking about what a web client is. So we removed it from the pricing page.
Failure case:
User: “Failed to connect to relay server, wss://[my-server-ip]:21119.”
RustDesk: Please follow this https://rustdesk.com/docs/en/self-host/rustdesk-server-pro/faq/#8-add-websocket-secure-wss-support-for-the-id-server-and-relay-server-to-enable-secure-communication-for-all-platforms to config reverse proxy for wss. Then access your self-host web client with your domain name rather than ip. e.g.
https://mycompany.com/web. This video also cover this, https://www.youtube.com/watch?v=MclmfYR3frk&t=731sUser: I followed the steps in the instructions but still get the same error.
RustDesk: If you configured relay server in web console (Setting -> Relay page) as
<ip>:21117, or configured relay server on controlled side with<ip>:21117, or ranhbbslike thishbbs -r <ip>:21117, Please remove them.User: Thanks, it worked.
WSS and CORS setup for web client
and
How to customize self-hosted web client?
Since RustDesk Server Pro 1.7.2, we start to support customizing self-hosted web client.
Please put your icon file (icon.svg or icon.png) and customization file (custom.txt) in the data (working) directory.
Here is an example of the custom.txt.
app-name=HelloDesk
hide-network-settings=Y
disable-ab=Y
disable-account=Y
disable-group-panel=Y
lang=de
theme=light
[override-settings]
codec-preference=av1
By default, all options are default options, if you want to add override options, please put them under override-settings section as above.
For more options, please check https://rustdesk.com/docs/en/self-host/client-configuration/advanced-settings/. Only controlling side options work.
Does ip whitelist supports CIDR?
Yes, we added it, https://github.com/rustdesk/rustdesk/pull/2281
What OSs does privacy mode support?
Windows only so far
What OSs does remote printer support?
Windows as controlled side only so far
What are the minimum OS requirements?
MacOS: 10.14 Windows 7+ or Windows Server 2012+ Linux: Ubuntu 18 equivalent, e.g. Debian 9, Fedora 28, openSUSE 15 etc Android: Android 7.0
Can we control iOS?
This is impossible so far since iOS does not allow this.
Duplicate id of cloned system
Run from command line with admin priviledge (right click and choose run as admin from the menu)
rustdesk.exe --set-id <id> | more in cmd.exe
or
rustdesk.exe --set-id <id> | Out-String in powershell
Below id format is required.
- Or you can try deleteing below directories (If the machines have different IP).
%AppData%\RustDesk\
C:\Windows\ServiceProfiles\LocalService\AppData\Roaming\RustDesk
and reboot the system.
Authenticate SMTP to Office 365
https://www.reddit.com/r/rustdesk/comments/1kh8f9j/authenticate_smtp_to_office_365/
Skip the printer driver installation from command
https://rustdesk.com/docs/en/client/windows/msi/#installprinter
How to know if the connection is encrypted.
There is an icon to indicate if it is encrypted, please hover mouse there, you will see info.
How to make RustDesk work properly in restricted network with 80/443 only.
There are two ways.
http proxy
Set up http proxy: https://github.com/rustdesk/rustdesk/wiki/Set-up-http-proxy-server
WebSocket
Build a custom client with WebSocket allowed, you also need to set up server correctly with WebSocket support. If all your clients use WebSocket, you can close 21114-21119 UDP/TCP ports on firewall of self-host server, only open the 443 port.
Pracise of backup server
- Follow https://github.com/rustdesk/rustdesk-server-pro/discussions/184 to backup files and sync database on backup server
- Migrate license to backup server
- Change your dns (or reverse proxy, cloudflare etc, you can run the server totaly behind a reverse proxy via Nginx stream or WebSocket) to backup server
Failed to start --server process in --service process.
When running in Windows Sandbox, it is not possible to obtain the user token from winlogon.exe, which prevents us from starting the --server process in the console user environment.
[2025-06-04 09:32:02.777040 +01:00] ERROR [src\platform\windows.rs:695] Failed to launch privileged process: The parameter is incorrect. (os error 87)
[2025-06-04 09:32:02.777506 +01:00] ERROR [src\platform\windows.rs:700] No process winlogon.exe
Bandwidth limit
We do have default limit on the relay server
[2025-06-20 00:08:58.622600 +09:00] INFO [src/relay_server.rs:141] TOTAL_BANDWIDTH: 1024Mb/s
[2025-06-20 00:08:58.622612 +09:00] INFO [src/relay_server.rs:155] SINGLE_BANDWIDTH: 16Mb/s
we will release this limit on next version (Pro 1.6.2)
For now,
You can create a .env file under the working directory of hbbs/hbbr process. If you runs with docker, you should place it under data directory.
add below lines to .env
SINGLE_BANDWIDTH=256
LIMIT_SPEED=64
or higher values you want.
Then restart the container. You can see the change from the logs of hbbr.
You can also set environment variables in Docker Compose as described here (for hbbr only): https://docs.docker.com/compose/how-tos/environment-variables/set-environment-variables/.
e.g.
services:
hbbs:
...
hbbr:
...
environment:
SINGLE_BANDWIDTH: 256
LIMIT_SPEED: 64
then
docker compose down
docker compose up -d
docker compose restart won't apply the change of compose file.
Connect to specific Windows RDP Session
https://x.com/rustdesk/status/1759445426267189273
HIPPA compliance
https://www.reddit.com/r/rustdesk/comments/1lo9rlq/hippa_compliance/
screen is white when start certain tools with Nvidea cards (ok if turning off nvidia cards)
You can try turn off Capture Display with DirectX on controlled side, which can be seen on Settings -> General -> Other. You can also disable this with custom client, https://rustdesk.com/docs/en/self-host/client-configuration/advanced-settings/#enable-directx-capture
Windows service won't start on reboot
https://www.reddit.com/r/rustdesk/comments/1m0nuwu/windows_service_wont_start_on_reboot/
A small number of my Windows computers won't start rustdesk on boot. Starting manually always works. Uninstall, install, new versions has no effect. I fix it by setting the service to delayed start. Or leave this script on the desktop because the setting is reverted on every install.
@echo on
rem RustDesk does not autostart properly on some computers. Changing to delayed-auto fixes the problem
sc config rustdesk start= delayed-auto
pause
Black application window on MacOS (Monterey) running on non-metal hardware through OCLP
https://github.com/rustdesk/rustdesk/discussions/12318
I prefer to display device name only on devices page rather than username@devicename
Move mouse to the info icon on the header, you can choose to hide username.
error returned from database: (code: 5) database is locked #271
https://github.com/rustdesk/rustdesk-server-pro/discussions/271#discussioncomment-9855954
Install without desktop shortcuts
msiexec /i rustdesk.msi /quiet DESKTOPSHORTCUTS=0 STARTMENUSHORTCUT=0 PRINTER=0
RustDesk server Pro on Windows server is deprecated
The executable (hbbs/hbbr) is still maintained. We marked it as deprecated only because our support team lacks experience with Windows Server, which means we cannot provide effective assistance if you encounter any environment-related issues on Windows Server. If you are proficient with Windows Server, you can continue using it. Otherwise, we recommend switching to Linux for better support.
Here is an example, https://github.com/rustdesk/rustdesk/discussions/13312, they eventually migrated to Linux server.
Unstable connection and "Failed to connect via rendezvous server: Please try later" on Windows server running RustDesk server
User: For around 40% of the customers we have, when we connect via RustDesk, we keep getting Rendezvous errors.
RustDesk: That's why we put below in our doc. Becaue we got similar reports.
User: I will change the system to a Linux Server this weekend and test it out
User: Just wanted to thank you as the system is looking a lot more stable.
I would suggest migrating to a Linux server. We've encountered similar issues with several users who run RustDesk server on Windows servers, and in most cases, the problems were resolved after switching to Linux.
This is one of the reasons we are deprecating support for Windows servers in our doc.
The RustDesk iOS app has no issue with Cert when connecting outside of local network. The issue is only when connecting on local network.
User: Found the issue, it was due to having only deployed the cert and not the full chain.
RustDesk: Intersting, why does "not the full chain" cause "outside of local network" works, but local network not?
User: My best guess is that the reason this worked is because we have an IIS reverse proxy in between the Internet and our Internal Linux server running Rust Desk. The reverse proxy was able verify the cert to create a secure connection between reverse proxy and the Linux server but when the iOS app was connecting directly to the Linux server on the local network if could not verify the cert. The odd part is the Desktop App, Self Hosted Web preview, and the iOS web browser all had no issue without the full chain and worked fine with just the cert.
How to restart (reboot) remote device?
Please right click on the tab, you will see it as below
Connection error, bytes remaining on stream
- case 1:
RustDesk: I noticed in the previous logs that when the connection failed, the relay server was “REDACTED.WEBSITE.TO.RUSTDESK.SERVER2.com:21114.” Usually, the relay port is 21117. When I set my client's relay server to host:21114, I replicated the "bytes remaining on stream" error. Therefore, the cause of the error was the incorrect setting of the relay port to 21114.
User: I don’t remember where I ever saw the relay being 21114, but that might have been something I set for testing and forgot to remove at any stage beyond that. Hopefully my mishap will help others with similar issues in the future, in case it happens again.
- case 2:
I solved it by deleting folders under
C:\Windows\ServiceProfiles\LocalService\AppData\Roaming\ and %AppData%\
I try to compile the client, but I get this error: “Failed to create: Payload Too Large”
Ensure you do not use too large file as the logo and icon.
hostname change
we use Rustdesk with selfhosted Rustdesk Pro Server. If we change a hostname of a pc, the hostname doesnt refresh in the rustdesk client overview.
This is expected. The hostname can only be changed once. After that, you need to modify it through the web console. If we allow further local changes, they would overwrite the hostname set in the web console.
Authenticate administrator terminal with an Entra Joined Device Local Administrator
https://github.com/rustdesk/rustdesk/discussions/12767#discussioncomment-14259970
Audio not heard from Win11 because of Voicemeter
https://github.com/rustdesk/rustdesk/issues/2018#issuecomment-3239374964
"color must be int, or tuple of one or two elements error" when build custom client
You can adjust the color mode bit depth in https://www.photopea.com/ and save them again.
Okta : error sending request for url (): error trying to connect: bad protocol version
Any idea how we can get things working on 1.3 across the board (eventually)?
Sorry, no. native-tls might not support TLS 1.3, depending on the operating system.
On the rust side:
https://github.com/seanmonstar/reqwest/issues/2025#issuecomment-2010674997
https://github.com/seanmonstar/reqwest/issues/2025#issuecomment-2010698600
For windows, you may need to manually enable it.
We use "native-tls" for better TLS support. We have to wait for a better solution at the lower level.
https://github.com/rustdesk/rustdesk-server-pro/issues/189
Occasional artifacts on screen on Linux(tearing with NVIDIA)
https://github.com/rustdesk/rustdesk/issues/6857#issuecomment-2307048568
Device list on web console
For normal non-admin user, the device list on web console only shows devices assigned to the user directly, rather than accessible devices (via device group / user group ). If you want to see all accessible devices, please check it on rustdesk client.
Device group vs address book
The device groups are actually security groups used to restrict which users can access which group of devices (aka ACL). https://rustdesk.com/docs/en/self-host/rustdesk-server-pro/permissions/
Address books are used to organize devices and manage passwords.
https://github.com/rustdesk/rustdesk-server-pro/discussions/809
Upgrade RustDesk Server Pro on Windows.
If you install with RustDeskServer.setup.exe. Please backup db files and id_ed25519 files etc first. These files are located in two folders.
The db files are under C:\WINDOWS\ServiceProfiles\LocalService\AppData\Roaming\RustDesk\config\, the other files are under C:\Program Files\RustDeskServer\bin. You can backup the two directory directly.
Then please download the new RustDeskServer.setup.exe and run directly.
hbbs keeps restarting, Error: Address in use
The reason is: the user also installed the rustdesk client on the server (and turn on direct acccess port 21118), there are port conflicts.