Dev Guide / 2026 ・ No.03

A RustDesk Manual

What remote desktop needs, and when you need a server

Published

RustDesk connected to another Mac: the remote machine's name and a blue control toolbar at the top, the remote desktop below
Controlling another Mac with RustDesk. The blue toolbar handles file transfer, chat and image quality (Source: product images on the rustdesk.com home page, captured 1 October 2026)

Last time, Tailscale gave us a path between faraway devices.
But what does it take to actually see and control the screen at the other end?
Do you need RustDesk? Does it work as soon as you install it? When do you need your own server?
This guide answers those three questions while walking through how RustDesk works and how to use it.

1

What remote desktop needs: a path, and an app that sends the screen

Remote desktop receives the other machine's screen as video and sends your keyboard and mouse back. That takes two parts.

The app and the path are separate parts

App sends screens RDP Built into Windows Screen Sharing Built into Mac RustDesk Open source Path connects them Port forward Risky, often n/a Tailscale Last article RustDesk servers Public or own Any pairing works RustDesk brings its own app and path (ID and relay servers) Tailscale is only the path; any app can run on top of it

Mix and match freely. RustDesk brings its own path, so it also works on its own

CORE

Tailscale, from the last article, is the path. It lets devices reach each other safely, but it doesn't show screens or send input. For that you need an app that sends the screen. RustDesk is one such app, and what sets it apart is that it also brings its own path: an ID server and a relay server.

2

Do you need RustDesk? Built-in options compared

Short answer: no, not necessarily. Once Tailscale connects your devices, the tools built into your OS are often enough.

OptionControlled deviceControlling deviceCost, caveats
Windows Remote Desktop (RDP) + TailscaleWindows Pro or higherBuilt into Windows; Windows App on Mac, iPhone, AndroidFree. Windows Home can't accept connections
Mac Screen Sharing + TailscaleMacBuilt into Mac; a VNC app on Windows or phonesFree. Easiest between Macs
Chrome Remote DesktopWindows, Mac, LinuxBrowser, phone appsFree; needs a Google account
TeamViewer, AnyDesk, etc.Major OSesMajor OSesFree for personal use; paid for work
RustDeskWindows, Mac, Linux, AndroidAll of those plus iPhone and webFree and open source; choose your server
WHEN

RustDesk shines when the machine to control runs Windows Home (no RDP host), when you want one tool across Windows and Mac, when Android is on either end, and when you're helping family with their PC: they don't need Tailscale, just to read you an ID and password.

3

What RustDesk is

RustDesk is an open-source remote desktop built as an alternative to TeamViewer and AnyDesk. As the name suggests it is written in Rust, with a Flutter interface. It has more than 120,000 stars on GitHub; the stable version at the time of writing is 1.4.9 (July 2026), and a 1.5.0 pre-release appeared in September.

The RustDesk main window: your ID and one-time password on the left, a box for the other device's ID and a Connect button at top right, a device list below
The main window: your own ID and one-time password on the left, and the box for connecting to someone else's ID at top right (Source: product images on the rustdesk.com home page, captured 1 October 2026)
  • What it does — screen control, file transfer, shared clipboard, audio, chat, multiple monitors, recording and TCP tunnelling
  • Platforms — Windows, macOS, Linux and Android can control and be controlled; iPhone and iPad can only control (iOS can't be controlled). There is also a web client for browsers
  • Cost — the app is free, and so is the server if you run the open-source (OSS) version yourself. Only RustDesk Server Pro, with its admin console and other features, is paid (billed yearly; the one-user, 20-device Individual plan works out at $11.88 a month)
The RustDesk Server Pro web console: a menu on the left and an address book of devices with tags on the right
The web console of the paid RustDesk Server Pro: devices, users, address books and logs in one place (Source: product images on the rustdesk.com home page, captured 1 October 2026)
4

How RustDesk works: ID server and relay server

RustDesk has two kinds of server with clearly separate jobs, much like Tailscale's coordination server and DERP relays.

Call by ID, connect directly if possible

ID server (hbbs) Registers IDs, introduces peers ControllerEnters ID, password Remote PCID 123 456 789 Calls by ID Stays registered Direct (usually) Relay server (hbbr) Only if direct fails Grey dotted: introductions only. Red line: the session, direct Red dotted: when direct fails, the relay carries the session

The ID is an example; each device gets its own

  • ID server (hbbs) — every device running RustDesk keeps telling this server its ID and current address (IP and port). When you enter an ID, it introduces the two devices
  • Hole punching — after the introduction, both sides send packets at once to get through NAT and connect directly. According to the official docs, this usually works and the relay is never used
  • Relay server (hbbr) — only when a direct connection fails does it carry the screen and input. Relay speed and stability depend on the server's capacity and its distance from you
A hand-drawn diagram: the client and remote computers find each other through the signaling server (hbbs), then exchange video and control directly if hole punching succeeds, or through the relay server (hbbr) if it fails
The official wiki's diagram: the two sides meet through hbbs at the top, connect directly if hole punching succeeds, and go through hbbr at the bottom if not (Source: RustDesk Wiki, “How does RustDesk work?” (drawing by asur4s), retrieved 1 October 2026; resized and padded only)
5

Does it work as soon as you install it?

ANSWER

Yes. Once installed (or simply run), RustDesk connects to public servers run by RustDesk and shows an ID and a one-time password. Enter someone else's ID and you can connect. But there are three conditions to know about today.

  • The controlling side must sign in — after continued scams and botnet abuse, since April 2026 the public server requires the controlling side to sign in with Google, GitHub or similar (free). The controlled side doesn't need to, for now; RustDesk warns that may change if abuse continues
  • The public server is for trying things out — the official wiki states it is for demonstration and testing only and should not be used for production or sensitive work. RustDesk is designed to be self-hosted
  • Macs and phones need permissions — on a Mac, Accessibility and Screen Recording; on Android, screen capture and more. Without them you get no picture, or no control
Left: the Login button under Account in settings. Right: a login dialog with Continue with Google, GitHub and Microsoft buttons
On the public server, the controlling side signs in via Settings → Account → Login with Google or similar (Source: RustDesk Wiki, “Login required for public server”, retrieved 1 October 2026; two images placed side by side, resized and padded)

The line at the bottom of the main window, “Ready, For faster connection, please set up your own server”, sums up where the public server stands.

6

Downloads and preparation

The only official site is rustdesk.com, whose download button leads to the GitHub release page. Don't download from look-alike domains.

The GitHub release page for RustDesk 1.4.9 with a download table for Windows, Ubuntu, Mac, Android, Flatpak, iOS and Web
Downloads come from the GitHub release page, with links by OS and CPU type (Source: github.com/rustdesk/rustdesk/releases, captured 1 October 2026)
DeviceGet it fromNotes
WindowsThe EXE (x86-64) on the GitHub release pageAn MSI exists for mass deployment
MacMac “Download” (.dmg) on the same pageAArch64 for Apple silicon, x86-64 for Intel
iPhone, iPadApp Store: RustDesk Remote DesktopControlling side only
AndroidAndroid (.apk) on the same pageWithdrawn from Google Play because of scams
Browserrustdesk.com/webControlling side only; nothing to install

The stable version at the time of writing is 1.4.9. The 1.5.0 listed above it is a pre-release; for everyday use, pick the one marked Latest.

7

Step 1: install on Windows (the machine you'll control)

StepWhat to do
01Download rustdesk-1.4.9-x86_64.exe from the GitHub release page and run it
02It works without installing, but for a PC you'll reach from outside, follow the prompt to install it (it runs as a service from startup)
03The left of the main window shows this PC's ID and one-time password
04To reach your own PC remotely, open Settings (⋮ next to the ID) → Security, unlock the security settings and set a permanent password
TIP

The one-time password changes with every connection. When helping family, asking for it over the phone is enough. To reach your own PC when nobody is at it, you need a long, hard-to-guess permanent password.

8

Step 2: install on a Mac (permissions matter most)

Dragging the RustDesk icon to the Applications folder
Open the dmg and drag RustDesk to Applications (Source: RustDesk Docs, “Mac”, retrieved 1 October 2026; resized and padded only)
StepWhat to do
01Open the .dmg and drag RustDesk to Applications
02If macOS blocks it at launch (unverified developer and so on), allow it under System Settings → Privacy & Security
03From Configure in RustDesk's left panel, grant Accessibility (needed for keyboard and mouse control)
04Likewise grant Screen Recording (“Screen & System Audio Recording” from macOS 15), needed to show the screen
05If keystrokes don't reach the other side when you control from a Mac, also grant Input Monitoring
Left: RustDesk asking for Accessibility permission with a Configure button. Right: the Accessibility list in macOS Security & Privacy
Use Configure to open settings and give RustDesk Accessibility permission (older macOS shown) (Source: RustDesk Docs, “Mac”, retrieved 1 October 2026; two images placed side by side, resized and padded)
macOS Security & Privacy with Screen Recording selected
Allow Screen Recording the same way (older macOS shown) (Source: RustDesk Docs, “Mac”, retrieved 1 October 2026; resized and padded only)

If RustDesk keeps warning after you've switched permissions on, remove it from the list with “−” and add it back with “+”. The official docs say a restart may still be needed.

9

Step 3: use it from a phone (iPhone, Android)

  • iPhone, iPad — install from the App Store and connect by ID. Controlling side only. On the public server you also need to sign in from settings
  • Android — install the .apk from GitHub (allow installs from unknown sources). It can control and be controlled
RustDesk on Android. Left: entering the remote ID. Right: a Windows desktop shown after connecting
Controlling from Android: enter the ID (left) and the remote screen appears (right) (Source: RustDesk Docs, “Android”, retrieved 1 October 2026; two images placed side by side, resized and padded)

To let an Android phone be controlled, grant the permissions under Share Screen in the bottom bar and tap Start Service. Screen sharing needs Android 6 or later; sharing the phone's internal audio needs Android 10 or later. To accept mouse input, turn on RustDesk Input under Accessibility (installed services) in Android settings.

The Android Share Screen tab. Left: service stopped, with a list of permissions. Right: service running, showing a password and an active connection
Letting an Android phone be controlled: Start Service begins screen sharing and shows an ID and password (Source: RustDesk Docs, “Android”, retrieved 1 October 2026; two images placed side by side, resized and padded)
10

Step 4: connect

StepWhat to do
01On the controlling device, type the other machine's ID into Control Remote Desktop and click Connect
02Enter the password (one-time or permanent). If the other side is set to approve by clicking, wait for them to accept
03Once the screen appears, use the toolbar at the top for quality, file transfer, chat and switching displays
04Close the window to finish. The controlled side can also end it at any time with Disconnect
The small window on the controlled side showing who is connected, permission buttons, and Elevate and Disconnect buttons
The controlled side sees who is connected and can end the session any time with Disconnect (Source: RustDesk Docs, “Windows Portable Elevation”, retrieved 1 October 2026; resized and padded only)

To move files without opening the desktop, use Transfer file under the ID box.

11

When you need a relay or your own server

Whether to stay on the public server or run your own comes down to this:

Do you need a server?

Both ends your own devices?Tailscale can go on both Yes Tailscale + direct IPNo server (recommended) No Many PCs, or other people's?Work use, confidential, admin Yes Self-host a serverOSS (free) or Pro (paid) No Public server slow or flaky?e.g. office or mobile networks Yes A nearby relayhbbr on a local VPS No The public server is fineThe controller signs in (free)

Work down from the top. If the first applies, you need no server

WhenWhyWhat to do
The other end is on an office or mobile networkBlocked UDP or strict NAT often prevents a direct link, so you end up relayedPut a relay nearby (your own hbbr) or pair with Tailscale
The public server is slow or dropsIts relays are shared with users worldwide and affected by load and outagesRun your own server on a nearby VPS
Work or confidential tasksRustDesk itself calls the public server “for demonstration and testing”Self-host (Pro if needed)
Many devices and people to manageYou want address books, users, logs and two-factor authentication in one placeRustDesk Server Pro
Only your own devicesIf both can run Tailscale, the path is already thereTailscale + direct IP access (no server)

According to the official docs, a relayed session uses roughly 30 KB/s to 3 MB/s (for a 1920×1080 screen, depending on resolution and how much changes), and around 100 KB/s for office work. Budget for that traffic if you run your own relay.

12

Option A: pair it with Tailscale (no server)

BEST

If both devices already run Tailscale from the last article, this is the simplest route. With RustDesk's direct IP access, you bypass both the public server and any server of your own, and the devices connect directly over the Tailscale path.

RustDesk's Security settings with the Enable direct IP access checkbox outlined in red
To pair with Tailscale, turn on Enable direct IP access on the controlled device (Source: RustDesk Wiki, “FAQ”, retrieved 1 October 2026; resized and padded only)
StepWhat to do
01On the controlled device, unlock Settings → Security and turn on Enable direct IP access (it listens on port 21118 by default)
02To be safe, put 100.64.0.0/10 (Tailscale's address range) in Use IP whitelisting on the same screen, so nothing outside your tailnet is accepted
03On the controlling device, type the other device's Tailscale IP address (100.x.y.z) into the ID box and click Connect
  • Use the IP, not the name — RustDesk can't tell whether what you typed is an ID or a name, so direct IP access won't take a MagicDNS name as is. Enter the 100.x address
  • Tailscale does the encryption — RustDesk's FAQ says a direct IP connection itself is not encrypted. Inside Tailscale it is encrypted by WireGuard, so that's fine; but never open port 21118 to the internet on your router
13

Option B: run your own server (OSS)

If some of the people you help can't run Tailscale, or this is for work, run your own server. It needs very little: the official docs say the smallest cloud server is plenty, and a Raspberry Pi will do. Put it on a VPS in a region near you and even relayed sessions get faster, simply because the relay is closer.

StepWhat to do
01Get a Linux server and open TCP 21115–21117 and UDP 21116 in its firewall (TCP 21118 and 21119 only if you use the web client)
02Install Docker and start hbbs and hbbr with the official compose file (commands below)
03Note the public key created on first run (id_ed25519.pub in the data folder)
04On every device, unlock Settings → Network, put the server's address in ID server and the public key in Key, then Apply (leave Relay server blank; it's inferred)
# Install Docker
bash <(wget -qO- https://get.docker.com)

# Fetch the official compose file and start hbbs and hbbr
wget rustdesk.com/oss.yml -O compose.yml
sudo docker compose up -d

# The public key to enter in each client
cat ./data/id_ed25519.pub

The key lives in the data folder set in the compose file (./data in the official example).

RustDesk's Network settings with hbbs.example.com as the ID server and a public key in the Key field
Client settings for a self-hosted server: your server in ID server and its public key in Key (Source: RustDesk Docs, “Installation”, retrieved 1 October 2026; resized and padded only)
  • Hosting at home — with the server behind your home router, devices inside the home may fail to reach it by your public IP or domain (a NAT loopback problem). The docs have an article on fixing this
  • Going Pro — adds a web console, user and address book management, audit logs, two-factor authentication, OIDC and LDAP, and branded custom clients. Billed yearly: Individual (1 user, 20 devices) at $11.88 a month, Basic (10 users, 100 devices) at $23.88 a month
14

Staying safe

The rustdesk.com home page with a scam warning banner at the top and a note that rustdesk.com is the only official domain
The top of the official site warns: if someone you don't know asks you on the phone to install RustDesk, don't, and hang up (Source: rustdesk.com, captured 1 October 2026)
SAFETY

Remote desktop means handing someone your whole computer. RustDesk's site and release page carry a prominent warning: if someone you don't know asks you on the phone to install RustDesk, don't, and hang up. Tools like this are a favourite of tech-support scammers.

  • Only from rustdesk.com and GitHub — RustDesk says rustdesk.com is its only official domain
  • Keep your ID and password to yourself — share them only with people you trust. Make the permanent password long and unique
  • Two-factor authentication and allow lists — Security settings offer 2FA and IP and ID allow lists
  • Stop it when you don't need it — on a PC you don't plan to reach remotely, you can stop the service
  • Keep it updated — follow the stable (Latest) release and don't linger on old versions

§ — On one page

  1. Remote desktop needs a path and an app that sends the screen. Tailscale is a path; RustDesk is an app that brings its own path.
  2. RustDesk is not required. RDP on Windows Pro or Screen Sharing on a Mac may be enough. For Windows Home, mixed OSes, Android or helping family, RustDesk is handy.
  3. It works straight away on the public server, but the controlling side must sign in (since April 2026), the public server is for demos and testing, and Macs and phones need permissions.
  4. Most sessions connect directly; the relay (hbbr) is used only when that fails. If it's slow, the other end is on an office or mobile network, or it's for work, run your own server.
  5. Between your own devices, Tailscale plus direct IP access needs no server at all. Never open port 21118 to the internet.

References

Screenshots marked “captured” are my own captures of the official site and the GitHub release page. The rest are images published in RustDesk's official documentation and wiki, quoted with their source (resized, padded or placed side by side only). The Mac screenshots in the official docs show an older macOS. Versions, prices and the public server's conditions are as of 1 October 2026 and may change.

Dev Guide No. 3 — A RustDesk Manual / 2026.10

← Back to all posts