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
- 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
- Command line output on Windows
- Run in iOS simulator
- 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 "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
- 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
- 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
- Unstable connection and "Failed to connect via rendezvous server: Please try later" on Windows server running RustDesk server
- Is web client integrated into RusetDesk server pro?
- How to use rustdesk.com/web client with self-hosting.
- Failed to connect to wss relay server with public web client
- WSS and CORS setup for 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)
- You have no permission to access the remote device.
- 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
- 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
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:
~/.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, 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.
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.
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
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👍
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 (please check controlled side for connection log issue).
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.
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
- General: https://github.com/rustdesk/rustdesk/discussions/5834#discussioncomment-7119453
- Devices: https://github.com/rustdesk/rustdesk-server-pro/discussions/182#discussioncomment-9083837
- Users: Please create a token (check above link for devices) with
Read and writeofUser Permission. Download https://raw.githubusercontent.com/rustdesk/rustdesk/master/res/users.py.
# 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
- Audit logs: please create a token (check above link for devices) with
ReadofAudit Log Permissionfirst, use api endpoints/api/audits/conn,/api/audits/file,/api/audits/alarm,/api/audits/console, only supportGetfor logs. Avaiable filters areremote,local,created_at,remote_device_name,local_device_name, same to what you see on the web console. We do not createlogs.pyfor you yet, but you can modifyviewfunction in https://raw.githubusercontent.com/rustdesk/rustdesk/master/res/users.py, replace{url}/api/userswith{url}/api/audits/conn/{url}/api/audits/file/{url}/api/audits/alarm/{url}/api/audits/console.
Delete devices with API
https://github.com/rustdesk/rustdesk-server-pro/discussions/182#discussioncomment-9082528
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.
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.
- 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: 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.
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
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.
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.
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 B, C, D, 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 a new connection from B to C while there is an outgoing connection on A at the same time if your license allows only one concurrent connection.
For Example we have support Agent A who is talking to Customer C and Now Agent B wants to communicate with Customer D when Agent A is Connected to Customer C, Then How many concurrent connection do we need? You need 2.
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.
To prevent from casual support devices being added to devices page in web console, please check https://rustdesk.com/docs/en/self-host/client-configuration/advanced-settings/#register-device
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. 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 won't disable excessive devices, 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.
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.
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.
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.
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.
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.
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.
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.
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.
How to use rustdesk.com/web client with self-hosting.
- Point to your server first
- Set web socket correctly on the server side, 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-the-web-client
Failed to connect to wss relay server with public web client
https://discord.com/channels/804630702657110016/1159882924494159872/1311145605149622344
WSS and CORS setup for web client
and
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
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 devices is not assigned to any user or devcie group, please check below option on Setting -> Others page in web console.
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.
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
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.
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
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.
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 allowed further local changes, they would overwrite the hostname set in the web console.