Mike Slinn

RustDesk, An Open-Source Alternative to TeamViewer

Published 2024-09-20. Last modified 2025-04-18.
Time to read: 4 minutes.

This page is part of the posts collection, categorized under Open Source.

I have used many remote desktop applications over the years. Although I normally only access my local computers, sometimes I need to work with remote machines or provide remote access to one of my machines. Some of the products I have used include:

  • X Windows, released in 1984. It is slowly receding into the background.
  • Microsoft Remote Desktop Connection, released in 1998. This is a half-hearted attempt with annoying limitations.
  • pcAnywhere, released by Symantec in 1991. Once a leading contender by an industry innovator, it was discontinued decades ago.
  • GoToMyPC, released in 1998. Some dinosaurs are still breathing their last breaths.
  • VNC, released in 2002. It is no longer supported by Ubuntu Desktop in its default configuration.
  • TeamViewer, released in 2005, is technically a good product, but the pricing and licensing policy make TeamViewer only viable for enterprises.

Two open-source alternatives exist that seem interesting: RustDesk, written in Rust, and MeshCentral. This article details my experience playing with RustDesk on Windows, Ubuntu using Wayland, iOS and Android.

RustDesk

It is easier to use the central RustDesk server for making connections than to set up your own RustDesk Server. I found the central server to be reliable, easy to use, and responsive.

Each computer, whether it is used to remotely control another computer or whether it is to be remotely controlled, needs a RustDesk client.

Limitations

Tablets

The iPad and the Android RustDesk clients can only control other RustDesk devices. RustDesk clients for tablets and phones can only initiate outbound sessions, which means they cannot themselves be remotely controlled.

Linux Wayland

Ubuntu moved from X Windows to Wayland. Wayland was introduced in Ubuntu 17.10, but due to some issues, Ubuntu 18.04 LTS reverted to X.Org as the default. Since Ubuntu 21.04, Wayland has been the default again.

By default, Rustdesk does not support full unattended accesss on Wayland. This workaround supposedly works but I have not tried it yet. More information

To switch from Wayland to X11, edit the gdm config:

Shell
$ sudo vi /etc/gdm3/custom.conf
Uncomment this line in /etc/gdm3/custom.conf
WaylandEnable=false

Reboot.

Client Installation and Setup

RustDesk clients are available for Windows, macOS, Linux, Android and iOS.

Windows, Linux and macOS

Download and install a RustDesk client on each computer that needs to be remotely controlled, or that will be used to remotely control another.

RustDesk computer client showing 3 favorite remote computers
RustDesk computer client showing 3 favorite remote computers

Each client must be configured separately.

Initial RustDesk client settings
Initial RustDesk client settings

If you want to access this remote machine without anyone present, you must configure a permanent password and enable the RustDesk service.

I used the same RustDesk password for every computer on my local network.

Web Client

The RustDesk web client allows you to use a web browser to control a remote computer. The web client does not require any software to be installed.

RustDesk web client showing 3 favorite remote computers
RustDesk web client showing 3 favorite remote computers

The RustDesk web client stores information in your web browser using on-device site data via the Web Storage API.

iOS

The RustDesk Remote Desktop for iOS is available from the Apple Store. Install it as you would any other iOS app.

Android

Unfortunately, the Android client is not available from the Google Play Store. Instead, you must download the ARM7 (32-bit) version from GitHub using your Android device.

However, the Android device will not install the RustDesk app unless it is configured to allow the installation of apps from sources other than Google Play. One option is to enable the download source by going to Settings / Apps / Special app access / Install unknown apps / and then selecting your web browser.

An easier option for enabling this download source is to start the download and wait for a warning to appear. Then you can enable the download source by pressing on the Settings choice that will be presented, then pressing on Allow from this source. You will then be presented with a challenge that you must unfold before the Android app is installed.

Then the following message appears:

This app isn’t compatible with the latest version of Android. Check for an update or contact the app’s developer.

😁

However, the Android app worked for me, despite the warning message.

Enlarging the Remote Display

Although RustDesk allows the remote desktop to fill the window, RustDesk does not provide a facility for zooming in on the remote desktop.

However, Windows users can use Windows Magnifier for this purpose. Pressing Windows++ enlarges the content of a window, while Windows+- shrinks the content of a window. To turn off the Windows Magnifier, press Windows+Esc.

Mac users enjoy a similar screen zoom facility.

References

Server Installation

If you need extra security, or you do not want to rely on the outside world, you can use your own server (Windows, Mac or Ubuntu) to self-host RustDesk Server.

The documented instructions to open the default Ubuntu firewall are flawed. Instead, I typed:

Shell
$ sudo ufw allow ssh
Rules updated
Rules updated (v6) 
$ sudo ufw allow 21114:21119/tcp Rules updated Rules updated (v6)
$ sudo ufw allow 8000/tcp Rules updated Rules updated (v6)
$ sudo ufw allow 21116/udp Rules updated Rules updated (v6)
$ sudo ufw enable Command may disrupt existing ssh connections. Proceed with operation (y|n)?

As I have written many times before, I see no purpose in using Docker. I installed the RustDesk Server without Docker:

Shell
$ wget -O ~/Downloads/rustdesk_server.sh \
  https://raw.githubusercontent.com/techahold/rustdeskinstall/master/install.sh
https://raw.githubusercontent.com/techahold/rustdeskinstall/master/install.sh
--2024-09-20 06:52:49-- https://raw.githubusercontent.com/techahold/rustdeskinstall/master/install.sh
Resolving raw.githubusercontent.com (raw.githubusercontent.com)... 185.199.108.133, 185.199.110.133, 185.199.109.133, ...
Connecting to raw.githubusercontent.com (raw.githubusercontent.com)|185.199.108.133|:443... connected.
HTTP request sent, awaiting response... 200 OK
Length: 13544 (13K) [text/plain]
Saving to: ‘/home/mslinn/Downloads/rustdesk_server.sh’
/home/mslinn/Downloads/rustdesk_server.sh 100%[==================================================>] 13.23K --.-KB/s in 0s
2024-09-20 06:52:49 (41.8 MB/s) - ‘/home/mslinn/Downloads/rustdesk_server.sh’ saved [13544/13544]

$ chmod +x ~/Downloads/rustdesk_server.sh

The installation script has a help message:

Shell
$ ~/Downloads/rustdesk_server.sh --help
usage: install.sh --resolveip --resolvedns "fqdn"
options:
--resolveip Use IP for server name. Cannot use in combination with --resolvedns or -d
--resolvedns "fqdn" Use FQDN for server name. Cannot use in combination with --resolveip or -i
--install-http Install http server to host installation scripts. Cannot use in combination with --skip-http or -n
--skip-http Skip installation of http server. Cannot use in combination with --install-http or -h 

Because my Ubuntu server uses nginx for serving web pages, I used the ‑‑skip-http option.

Shell
$ ~/Downloads/rustdesk_server.sh \
  --resolvedns gojira \
  --install-http
Installing prerequisites
Hit:1 http://archive.ubuntu.com/ubuntu noble InRelease
Hit:2 https://dl.google.com/linux/chrome/deb stable InRelease
Reading package lists... Done
N: Skipping acquire of configured file 'main/binary-i386/Packages' as repository 'https://dl.google.com/linux/chrome/deb stable InRelease' doesn't support architecture 'i386'
Reading package lists... Done
Building dependency tree... Done
Reading state information... Done
curl is already the newest version (8.5.0-2ubuntu10.1).
wget is already the newest version (1.21.4-1ubuntu4).
unzip is already the newest version (6.0-28ubuntu4).
tar is already the newest version (1.35+dfsg-3build1).
dnsutils is already the newest version (1:9.18.24-0ubuntu5).
0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.
Installing RustDesk Server
--2024-09-20 09:53:18-- https://github.com/rustdesk/rustdesk-server/releases/download/1.1.11-1/rustdesk-server-linux-amd64.zip
Resolving github.com (github.com)... 140.82.112.4
Connecting to github.com (github.com)|140.82.112.4|:443... connected.
HTTP request sent, awaiting response... 302 Found
Location: https://objects.githubusercontent.com/github-production-release-asset-2e65be/299354666/0285ef87-85f9-441e-b8b8-8efc8c4f977b?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=releaseassetproduction%2F20240920%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-Date=20240920T135318Z&X-Amz-Expires=300&X-Amz-Signature=683d7239fa6fdec771af701f87eabec71c0b1c3d285dae3ab4c29add206fb64f&X-Amz-SignedHeaders=host&response-content-disposition=attachment%3B%20filename%3Drustdesk-server-linux-amd64.zip&response-content-type=application%2Foctet-stream [following]
--2024-09-20 09:53:18-- https://objects.githubusercontent.com/github-production-release-asset-2e65be/299354666/0285ef87-85f9-441e-b8b8-8efc8c4f977b?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=releaseassetproduction%2F20240920%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-Date=20240920T135318Z&X-Amz-Expires=300&X-Amz-Signature=683d7239fa6fdec771af701f87eabec71c0b1c3d285dae3ab4c29add206fb64f&X-Amz-SignedHeaders=host&response-content-disposition=attachment%3B%20filename%3Drustdesk-server-linux-amd64.zip&response-content-type=application%2Foctet-stream
Resolving objects.githubusercontent.com (objects.githubusercontent.com)... 185.199.110.133, 185.199.111.133, 185.199.109.133, ...
Connecting to objects.githubusercontent.com (objects.githubusercontent.com)|185.199.110.133|:443... connected.
HTTP request sent, awaiting response... 200 OK
Length: 8539403 (8.1M) [application/octet-stream]
Saving to: `rustdesk-server-linux-amd64.zip'
rustdesk-server-linux-amd64.zip 100%[======================================================================================>] 8.14M 49.2MB/s in 0.2s
2024-09-20 09:53:18 (49.2 MB/s) - `rustdesk-server-linux-amd64.zip' saved [8539403/8539403]
Archive: rustdesk-server-linux-amd64.zip inflating: amd64/hbbr inflating: amd64/hbbs inflating: amd64/rustdesk-utils RustDesk Relay not ready yet... Tidying up install Grabbing installers 0nI5YTMuUjMy4iNy4CM38yL6MHc0RHaiojIpBXYiwiI98WSqlFWxllTIllSyFXd5x2Kx9WZ3IEdWJFW6JnaTB1Mzc2aWhWRTlEWzRlI6ISeltmIsISO2EjL1IjMuYjMuAzNiojI5FGblJnIsISO2EjL1IjMuYjMuAzNiojI0N3boJye 1) Yes 2) No Please choose if you want to download configs and install HTTP server:
1 --2024-09-20 09:53:29-- https://raw.githubusercontent.com/dinger1986/rustdeskinstall/master/WindowsAgentAIOInstall.ps1 Resolving raw.githubusercontent.com (raw.githubusercontent.com)... 185.199.108.133, 185.199.109.133, 185.199.110.133, ... Connecting to raw.githubusercontent.com (raw.githubusercontent.com)|185.199.108.133|:443... connected. HTTP request sent, awaiting response... 200 OK Length: 3773 (3.7K) [text/plain] Saving to: `WindowsAgentAIOInstall.ps1'
WindowsAgentAIOInstall.ps1 100%[======================================================================================>] 3.68K --.-KB/s in 0s
2024-09-20 09:53:29 (51.2 MB/s) - `WindowsAgentAIOInstall.ps1' saved [3773/3773]
--2024-09-20 09:53:29-- https://raw.githubusercontent.com/dinger1986/rustdeskinstall/master/linuxclientinstall.sh Resolving raw.githubusercontent.com (raw.githubusercontent.com)... 185.199.110.133, 185.199.108.133, 185.199.111.133, ... Connecting to raw.githubusercontent.com (raw.githubusercontent.com)|185.199.110.133|:443... connected. HTTP request sent, awaiting response... 200 OK Length: 3584 (3.5K) [text/plain] Saving to: `linuxclientinstall.sh'
linuxclientinstall.sh 100%[======================================================================================>] 3.50K --.-KB/s in 0s
2024-09-20 09:53:29 (41.5 MB/s) - `linuxclientinstall.sh' saved [3584/3584]
Creating /opt/gohttp Installing Go HTTP Server --2024-09-20 09:53:30-- https://github.com/codeskyblue/gohttpserver/releases/download/1.1.4/gohttpserver_1.1.4_linux_amd64.tar.gz Resolving github.com (github.com)... 140.82.112.4 Connecting to github.com (github.com)|140.82.112.4|:443... connected. HTTP request sent, awaiting response... 302 Found Location: https://objects.githubusercontent.com/github-production-release-asset-2e65be/63852314/3b4f8927-1e46-46b6-873c-6407b36d0f92?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=releaseassetproduction%2F20240920%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-Date=20240920T135330Z&X-Amz-Expires=300&X-Amz-Signature=c89e7401861bd997f2b31ac3ece124090ea280050f17ef85c4beb2bda49e0e4e&X-Amz-SignedHeaders=host&response-content-disposition=attachment%3B%20filename%3Dgohttpserver_1.1.4_linux_amd64.tar.gz&response-content-type=application%2Foctet-stream [following] --2024-09-20 09:53:30-- https://objects.githubusercontent.com/github-production-release-asset-2e65be/63852314/3b4f8927-1e46-46b6-873c-6407b36d0f92?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=releaseassetproduction%2F20240920%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-Date=20240920T135330Z&X-Amz-Expires=300&X-Amz-Signature=c89e7401861bd997f2b31ac3ece124090ea280050f17ef85c4beb2bda49e0e4e&X-Amz-SignedHeaders=host&response-content-disposition=attachment%3B%20filename%3Dgohttpserver_1.1.4_linux_amd64.tar.gz&response-content-type=application%2Foctet-stream Resolving objects.githubusercontent.com (objects.githubusercontent.com)... 185.199.109.133, 185.199.110.133, 185.199.108.133, ... Connecting to objects.githubusercontent.com (objects.githubusercontent.com)|185.199.109.133|:443... connected. HTTP request sent, awaiting response... 200 OK Length: 4864160 (4.6M) [application/octet-stream] Saving to: `gohttpserver_1.1.4_linux_amd64.tar.gz'
gohttpserver_1.1.4_linux_amd64.tar.gz 100%[======================================================================================>] 4.64M --.-KB/s in 0.05s
2024-09-20 09:53:30 (102 MB/s) - `gohttpserver_1.1.4_linux_amd64.tar.gz' saved [4864160/4864160]
Creating /var/log/gohttp Tidying up Go HTTP Server Install Created symlink /etc/systemd/system/multi-user.target.wants/gohttpserver.service  /etc/systemd/system/gohttpserver.service. Your IP/DNS Address is 70.26.225.169 Your public key is TsXISEhVkg33PSjrzXRVtB7eoq+lyuqrJYHNYqXYjIo= Install RustDesk on your machines and change your public key and IP/DNS name to the above You can access your install scripts for clients by going to http://70.26.225.169:8000 Username is admin and password is YhJkPYNp2P7HmGhN Press any key to finish install

I saved the public key, shown near the end of the above output. The key was stable each time I ran the installation script.

The final message mentioned infiniteremote, which is a RustDesk fork plus some other undocumented stuff. That is weird, especially since there seems to be some hostility between the RustDesk author and the infiniteremote author. I decided to ignore infiniteremote for now.

The end of the above output included this message:

Output
You can access your install scripts for clients by going to http://70.26.225.169:8000
Username is admin and password is YhJkPYNp2P7HmGhN.

Instead of the (external) IP address reported above, I navigated to the local IP address http://gojira:8000, input the above username and password, and saw:

These scripts can be used to install RustDesk on clients. The file with the ps1 filetype is a Windows PowerShell script. The contents were:

WindowsAgentAIOInstall.ps1
$ErrorActionPreference= 'silentlycontinue'
# Assign the value random password to the password variable $rustdesk_pw=(-join ((65..90) + (97..122) | Get-Random -Count 12 | % {[char]$_}))
# Get your config string from your Web portal and Fill Below $rustdesk_cfg="0nI5YTMuUjMy4iNy4CM38yL6MHc0RHaiojIpBXYiwiI98WSqlFWxllTIllSyFXd5x2Kx9WZ3IEdWJFW6JnaTB1Mzc2aWhWRTlEWzRlI6ISeltmIsISO2EjL1IjMuYjMuAzNiojI5FGblJnIsISO2EjL1IjMuYjMuAzNiojI0N3boJye"
################################### Please Do Not Edit Below This Line #########################################
# Run as administrator and stays in the current directory if (-Not ([Security.Principal.WindowsPrincipal][Security.Principal.WindowsIdentity]::GetCurrent()).IsInRole([Security.Principal.WindowsBuiltInRole]::Administrator)) { if ([int](Get-CimInstance -Class Win32_OperatingSystem | Select-Object -ExpandProperty BuildNumber) -ge 6000) { Start-Process PowerShell -Verb RunAs -ArgumentList "-NoProfile -ExecutionPolicy Bypass -Command `"cd '$pwd'; & '$PSCommandPath';`""; Exit; } }
# Checks for the latest version of RustDesk $url = 'https://www.github.com//rustdesk/rustdesk/releases/latest' $request = [System.Net.WebRequest]::Create($url) $response = $request.GetResponse() $realTagUrl = $response.ResponseUri.OriginalString $RDLATEST = $realTagUrl.split('/')[-1].Trim('v') echo "RustDesk $RDLATEST is the latest version."
# Checks the version of RustDesk installed. $rdver = ((Get-ItemProperty "HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\RustDesk\").Version)
# Skips to inputting the configuration if the latest version of RustDesk is already installed. if($rdver -eq "$RDLATEST") { echo "RustDesk $rdver is already installed." cd $env:ProgramFiles\RustDesk echo "Inputting configuration now." .\rustdesk.exe --config $rustdesk_cfg .\rustdesk.exe --password $rustdesk_pw $rustdesk_id = .\rustdesk.exe --get-id | Write-Output -OutVariable rustdesk_id echo "All done! Please double check the Network settings tab in RustDesk." echo "" echo "..............................................." # Show the value of the ID Variable echo "RustDesk ID: $rustdesk_id"
# Show the value of the Password Variable echo "Password: $rustdesk_pw" echo "..............................................." echo "" echo "Press Enter to open RustDesk." pause .\rustdesk.exe exit }
if (!(Test-Path C:\Temp)) { New-Item -ItemType Directory -Force -Path C:\Temp > null }
cd C:\Temp echo "Downloading RustDesk version $RDLATEST." powershell Invoke-WebRequest "https://github.com/rustdesk/rustdesk/releases/download/$RDLATEST/rustdesk-$RDLATEST-x86_64.exe" -Outfile "rustdesk.exe" echo "Installing RustDesk version $RDLATEST." Start-Process .\rustdesk.exe --silent-install Start-Sleep -Seconds 10
$ServiceName = 'rustdesk' $arrService = Get-Service -Name $ServiceName -ErrorAction SilentlyContinue
if ($arrService -eq $null) { echo "Installing service." cd $env:ProgramFiles\RustDesk Start-Process .\rustdesk.exe --install-service -wait -Verbose Start-Sleep -Seconds 20 }
while ($arrService.Status -ne 'Running') { Start-Service $ServiceName Start-Sleep -seconds 5 $arrService.Refresh() }
# Waits for installation to complete before proceeding. echo "Please wait a few seconds." Start-Sleep -Seconds 10
cd $env:ProgramFiles\RustDesk echo "Inputting configuration now." .\rustdesk.exe --config $rustdesk_cfg .\rustdesk.exe --password $rustdesk_pw $rustdesk_id = .\rustdesk.exe --get-id | Write-Output -OutVariable rustdesk_id echo "All done! Please double check the Network settings tab in RustDesk." echo "" echo "..............................................." # Show the value of the ID Variable echo "RustDesk ID: $rustdesk_id"
# Show the value of the Password Variable echo "Password: $rustdesk_pw" echo "..............................................." echo "" echo "Press Enter to open RustDesk." pause .\rustdesk.exe

The contents of linuxclientinstall.sh were:

linuxclientinstall.sh
#!/bin/bash
# Assign a random value to the password variable rustdesk_pw=$(cat /dev/urandom | tr -dc 'a-zA-Z0-9' | fold -w 8 | head -n 1)
# Get your config string from your Web portal and Fill Below rustdesk_cfg="0nI5YTMuUjMy4iNy4CM38yL6MHc0RHaiojIpBXYiwiI98WSqlFWxllTIllSyFXd5x2Kx9WZ3IEdWJFW6JnaTB1Mzc2aWhWRTlEWzRlI6ISeltmIsISO2EjL1IjMuYjMuAzNiojI5FGblJnIsISO2EjL1IjMuYjMuAzNiojI0N3boJye"
################################### Please Do Not Edit Below This Line #########################################
# Check if the script is being run as root if [[ $EUID -ne 0 ]]; then echo "This script must be run as root." exit 1 fi
# Identify OS if [ -f /etc/os-release ]; then # freedesktop.org and systemd . /etc/os-release OS=$NAME VER=$VERSION_ID
UPSTREAM_ID=${ID_LIKE,,}
# Fallback to ID_LIKE if ID was not 'ubuntu' or 'debian' if [ "${UPSTREAM_ID}" != "debian" ] && [ "${UPSTREAM_ID}" != "ubuntu" ]; then UPSTREAM_ID="$(echo ${ID_LIKE,,} | sed s/\"//g | cut -d' ' -f1)" fi
elif type lsb_release >/dev/null 2>&1; then # linuxbase.org OS=$(lsb_release -si) VER=$(lsb_release -sr) elif [ -f /etc/lsb-release ]; then # For some versions of Debian/Ubuntu without lsb_release command . /etc/lsb-release OS=$DISTRIB_ID VER=$DISTRIB_RELEASE elif [ -f /etc/debian_version ]; then # Older Debian, Ubuntu, etc. OS=Debian VER=$(cat /etc/debian_version) elif [ -f /etc/SuSE-release ]; then # Older SuSE etc. OS=SuSE VER=$(cat /etc/SuSE-release) elif [ -f /etc/redhat-release ]; then # Older Red Hat, CentOS, etc. OS=RedHat VER=$(cat /etc/redhat-release) else # Fall back to uname, e.g. "Linux <version>", also works for BSD, etc. OS=$(uname -s) VER=$(uname -r) fi
# Checks the latest version of RustDesk RDLATEST=$(curl https://api.github.com/repos/rustdesk/rustdesk/releases/latest -s | grep "tag_name" | awk -F'"' '{print $4}')
# Install RustDesk
echo "Installing RustDesk" if [ "${ID}" = "debian" ] || [ "$OS" = "Ubuntu" ] || [ "$OS" = "Debian" ] || [ "${UPSTREAM_ID}" = "ubuntu" ] || [ "${UPSTREAM_ID}" = "debian" ]; then wget https://github.com/rustdesk/rustdesk/releases/download/${RDLATEST}/rustdesk-${RDLATEST}-x86_64.deb apt-get install -fy ./rustdesk-${RDLATEST}-x86_64.deb >/dev/null elif [ "$OS" = "CentOS" ] || [ "$OS" = "RedHat" ] || [ "$OS" = "Fedora Linux" ] || [ "${UPSTREAM_ID}" = "rhel" ]; then wget https://github.com/rustdesk/rustdesk/releases/download/${RDLATEST}/rustdesk-${RDLATEST}.x86_64.rpm yum localinstall ./rustdesk-${RDLATEST}.x86_64.rpm -y >/dev/null elif [ "${UPSTREAM_ID}" = "suse" ]; then wget https://github.com/rustdesk/rustdesk/releases/download/${RDLATEST}/rustdesk-${RDLATEST}.x86_64-suse.rpm zypper -n install --allow-unsigned-rpm ./rustdesk-${RDLATEST}.x86_64-suse.rpm >/dev/null else echo "Unsupported OS" # here you could ask the user for permission to try and install anyway # if they say yes, then do the install # if they say no, exit the script exit 1 fi
# Run the rustdesk command with --get-id and store the output in the rustdesk_id variable rustdesk_id=$(rustdesk --get-id)
# Apply new password to RustDesk rustdesk --password $rustdesk_pw &> /dev/null
rustdesk --config $rustdesk_cfg
systemctl restart rustdesk
echo "All done! Please double check the Network settings tab in RustDesk." echo "" echo "..............................................." # Check if the rustdesk_id is not empty if [ -n "$rustdesk_id" ]; then echo "RustDesk ID: $rustdesk_id" else echo "Failed to get RustDesk ID." fi
# Echo the value of the password variable echo "Password: $rustdesk_pw" echo "..............................................."

Check Server Statuses

On Ubuntu, you can check the status of the two RustDesk services with the following incantation:

Shell
$ sudo systemctl status rustdeskrelay.service
● rustdeskrelay.service - RustDesk Relay Server
     Loaded: loaded (/etc/systemd/system/rustdeskrelay.service; enabled; preset: enabled)
     Active: active (running) since Fri 2024-09-20 06:58:27 EDT; 3h 43min ago
   Main PID: 1690805 (hbbr)
      Tasks: 27 (limit: 76799)
     Memory: 1.3M (peak: 3.3M)
        CPU: 1.679s
     CGroup: /system.slice/rustdeskrelay.service
             └─1690805 /opt/rustdesk/hbbr
Sep 20 06:58:27 gojira systemd[1]: Started rustdeskrelay.service - RustDesk Relay Server.

$ sudo systemctl status rustdesksignal.service ● rustdesksignal.service - RustDesk Signal Server Loaded: loaded (/etc/systemd/system/rustdesksignal.service; enabled; preset: enabled) Active: active (running) since Fri 2024-09-20 06:58:27 EDT; 3h 44min ago Main PID: 1690414 (hbbs) Tasks: 28 (limit: 76799) Memory: 1.9M (peak: 3.3M) CPU: 6.892s CGroup: /system.slice/rustdesksignal.service └─1690414 /opt/rustdesk/hbbs
Sep 20 06:58:27 gojira systemd[1]: Started rustdesksignal.service - RustDesk Signal Server.
* indicates a required field.

Please select the following to receive Mike Slinn’s newsletter:

You can unsubscribe at any time by clicking the link in the footer of emails.

Mike Slinn uses Mailchimp as his marketing platform. By clicking below to subscribe, you acknowledge that your information will be transferred to Mailchimp for processing. Learn more about Mailchimp’s privacy practices.