RustDesk Server: A Self-Hosted TeamViewer Alternative
Remote support has an awkward setup: you pay a vendor so your staff can get onto your own computers, and every session starts on infrastructure you don't control. For a small team doing a handful of support calls a day, that's a strange thing to pay a yearly subscription for.
RustDesk is the open-source answer most people land on. The client looks and works like what your staff already know, and the server is small enough to run on a cheap VM. This guide covers what you get, what you give up compared with TeamViewer and RustDesk Pro, and how to roll it out to a small team.
What RustDesk Server Actually Does
Two small programs make up the server, and neither one is complicated:
- hbbs is the ID server. It tracks which devices are online and helps two of them find each other.
- hbbr is the relay. It carries the session only when two devices can't connect directly.
That second point surprises people. According to the RustDesk docs, direct connections succeed in most cases and the relay never gets used. When it is used, the docs put typical traffic around 100 KB/s for office work and up to about 3 MB/s at 1080p with a lot of screen movement. So this isn't a hungry service: the project says the smallest basic cloud server is enough.
Without your own server, RustDesk clients use the project's public servers. Running your own means the device directory and any relayed traffic stay on a VM you picked, in the region you picked.
What It Costs, and What You Give Up
Be careful with any article that calls this free. The software has no license fee, but it still needs a server. RustDesk Server on Elestio starts at $11/month for the VM, with backups, updates and monitoring included.
For comparison, third-party price trackers list TeamViewer Remote Access at $24.90/month and Business at $50.90/month, billed yearly and before tax. TeamViewer doesn't show one fixed price everywhere, so check your own quote.
The real trade-off is in features. The open-source server gets machines connected, and that's about it. Team management lives in RustDesk's paid Server Pro:
| Feature | Open-source server | Pro Individual | Pro Basic |
|---|---|---|---|
| License price (billed yearly) | None | $11.88/month | $23.88/month |
| Login users / managed devices | No user accounts | 1 / 20 | 10 / 100 |
| Web console and address book | No | Yes | Yes |
| Audit log and access control | No | Yes | Yes |
| OIDC and LDAP sign-in | No | No | Yes |
| Custom client generator | No | No | Yes |
My honest read: the open-source server is a great fit for a small IT team that knows its machines and trusts its staff. If you need to prove who connected to what and when, for a client contract or an audit, it won't do that. Look at Pro, or stay where you are.
Setting It Up on Elestio
1. Deploy. Pick RustDesk Server in the catalog and choose a region close to your team. The smallest plan is a sensible start, and you can resize later.
2. Check the firewall. RustDesk doesn't run over normal web ports, so this is the step that matters most. In your service's firewall settings, confirm these are open:
| Port | Protocol | Used for |
|---|---|---|
| 21115 | TCP | NAT type test |
| 21116 | TCP and UDP | ID server and connection setup |
| 21117 | TCP | Relay |
Port 21116 needs both TCP and UDP. The docs also say to keep 21118 and 21119 closed unless you use the web client, and 21114 only applies to Pro.
3. Get your public key. The server creates a key pair the first time it starts. Open the terminal from your Elestio dashboard and run:
find /opt/app -name id_ed25519.pub -exec cat {} \;
Copy that value. The file next to it, id_ed25519 with no extension, is the private key. Never paste it into a client or a chat. Its only trip off this server is to a backup or a migration.
4. Point one client at it. Install the RustDesk client on a test machine. Click the ⋮ menu next to your ID, open Network, unlock the settings, and fill in:
- ID Server: your server's hostname
- Relay Server: leave it blank, RustDesk works it out from the ID server
- Key: the public key from step 3
- API Server: leave it blank, it's Pro only
Do the same on a second machine, ideally on a different network. A phone hotspot works well for this. Then connect from one to the other using the ID and password it shows.
5. Roll it out. Don't type those fields on 30 laptops. On your configured client, go to Network and click Export Server Config. On the next machine, use Import Server Config, or script it during setup on Windows:
rustdesk.exe --config "paste-the-exported-string-here"
Lock It Down Before You Tell Anyone
Remote access tools are a favorite of scammers and attackers, and a machine that accepts unattended connections deserves some care. Three things are worth doing on day one:
- Use strong permanent passwords, or none. If a machine doesn't need unattended access, don't set a permanent password. Staff can read out the temporary one instead.
- Turn on two-factor authentication. The client has this under its Security settings, and you want it on anything reachable without someone at the keyboard.
- Restrict the firewall if you can. Anyone with your address and public key can use your server. The key is not a real secret, since it sits on every client. If your staff and sites have fixed IPs, limit the ports to those in your Elestio firewall settings.
Also tell your users plainly: nobody from IT will ever cold-call them and ask them to install or open RustDesk.
Troubleshooting
"Key mismatch" when connecting. The key on the client doesn't match the server, or one side has none. Re-copy it from step 3, and watch for stray spaces. Both ends need the same settings.
Clients sit on a connection error. Almost always the firewall, and usually UDP on 21116. Check that it's open for both protocols.
Connections work in the office but fail from home. The two devices can't connect directly and the relay isn't reachable. Check that TCP 21117 is open.
Sessions feel slow. Check the status text in the session window: it says either "Direct and encrypted connection" or "Relayed and encrypted connection". If it's relayed, the distance to your server matters, so choose a region nearer your users. If it ever says "unencrypted", the key is missing on one side, so stop and fix that first.
Every client broke after a rebuild. A new server generated a new key pair. Restore the original key files from your Elestio backup, or redistribute the new key. If you ever migrate, copy id_ed25519 and id_ed25519.pub over first.
A new laptop isn't showing up on your server. Fresh installs use RustDesk's public servers until they're configured, so add the import step to your laptop setup checklist.
Should You Switch?
If you're a small team paying for remote support mainly to get connected, this is an easy test to run. Deploy it, try it for a week alongside your current tool, and see whether anyone misses anything. If they miss audit logs or central user management, that's your answer too, and you've spent about the price of a few coffees finding out.
Thanks for reading ❤️ See you in the next one 👋