
Sommaire
Introduction
RustDesk est un logiciel open source de prise en main à distance. Il permet de se connecter à des ordinateurs à distance via Internet, offrant ainsi la possibilité de contrôler et de gérer des ordinateurs à distance avec une interface facile à utiliser et une sécurité renforcée.
Elle offre plusieurs fonctionnalités telles que le partage d’écran, le contrôle à distance du clavier et de la souris, le transfert de fichiers, le chat …
L’application est compatible avec plusieurs systèmes d’exploitation, y compris Windows, macOS et Linux. Il est relativement léger et facile à installer.
Il est possible d’utiliser les serveurs publics de Rustdesk, toutefois, il n’y a aucun chiffrement des données et la vitesse de connexion est dépendante des serveurs publics.
L’auto-hébergement d’un serveur RustDesk offre divers avantages par rapport à l’utilisation de solutions commerciales telles que AnyDesk ou TeamViewer.
Tout d’abord, vous maintenez un contrôle total sur vos données, ce qui renforce la sécurité et la confidentialité de vos informations sensibles. De plus, cette approche vous permet d’éviter les coûts associés aux abonnements des solutions commerciales.
Ces avantages font de l’auto-hébergement de RustDesk une option attrayante pour ceux qui recherchent une alternative open source, économique et hautement personnalisable pour la prise en main à distance.
Présentation de l’infrastructure
Dans mon cas, j’ai décidé d’installer RustDesk sur un VPS gratuit hébergé chez Oracle via l’offre Oracle Cloud Free Tier qui permet d’avoir 2 VPS gratuit.
Pour plus d’informations : https://www.oracle.com/fr/cloud/free/#free-cloud-trial
Ce schéma démontre que lorsqu’une connexion de bureau à distance est établie, le serveur intermédiaire sera notre serveur RustDesk hébergé sur un VPS, et non pas les serveurs publics.

Et c’est ce que nous allons mettre en place en configurant le serveur et les clients RustDesk !
Pour plus de détails visuels sur le fonctionnement de RustDesk : https://github.com/rustdesk/rustdesk/wiki/How-does-RustDesk-work%3F
Installation de RustDesk
Installation de Docker
Nous allons installer RustDesk à travers Docker Compose.
Vous pouvez retrouvez la documentation officielle qui est très bien expliqué ici : https://rustdesk.com/docs/en/self-host/rustdesk-server-oss/docker/
La première étape sera donc d’installer Docker et Docker Compose.
Sur notre serveur, nous allons commencer par mettre à jour les paquets et installer les prérequis
sudo apt update
sudo apt upgrade
sudo apt install apt-transport-https ca-certificates curl gnupg2 software-properties-common
On ajoute les dépôts
sudo curl -fsSL https://download.docker.com/linux/debian/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
sudo echo "deb [arch=amd64 signed-by=/usr/share/keyrings/docker-archivekeyring.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list
sudo apt update
Et on installe docker
sudo apt-get install docker-ce docker-ce-cli containerd.io
sudo systemctl enable docker
Vérification de l’installation de docker
sudo docker --version
Contrôle du fonctionnement de docker
sudo systemctl status docker
sudo docker run hello-world
Notre conteneur se lance correctement. Comme l’image n’était pas en local, elle a été téléchargée automatiquement
Maintenant que notre application fonctionne bien et permet de lancer des conteneurs, on n’oublie pas de supprimer l’image ! Pour cela, il faut d’abord supprimer le conteneur crée précédemment
On va lister tous les conteneurs existants
sudo docker ps -a
La sortie nous communique des informations comme le nom de l’image, l’ID du container, son statut, etc
On peut consulter la liste des images
sudo docker ps -a
Et enfin supprimer l’image
docker rmi hello-world
Installation de Docker Compose
Docker Compose est un outil permettant de définir et de gérer des applications multi-conteneurs dans un fichier unique, simplifiant ainsi le déploiement et la coordination des services.
La principale différence entre Docker et Docker Compose réside dans le fait que Docker gère des conteneurs individuels, tandis que Docker Compose orchestre plusieurs conteneurs, facilitant ainsi le déploiement d’applications complexes avec plusieurs services interdépendants.
Pour l’installer :
sudo apt update
sudo apt install docker-compose-plugin
Installation de RustDesk
On va commencer par télécharger l’image de RustDesk
sudo docker image pull rustdesk/rustdesk-server
On crée un dossier ou sera héberger notre fichier docker-compose.yml :
mkdir /srv/rustdeskserver
cd /srv/rustdeskserver
Et nous allons à la fois créer et éditer ce fichier :
nano docker-compose.yml
Nous allons insérer ce contenu (n’oubliez pas de remplacer l’adresse IP publique par la vôtre) :
version: '3'
networks:
rustdesk-net:
external: false
services:
hbbs:
container_name: hbbs
ports:
- 21115:21115
- 21116:21116
- 21116:21116/udp
- 21118:21118
image: rustdesk/rustdesk-server:latest
command: hbbs -r 22.33.44.55:21117
volumes:
- ./data:/root
networks:
- rustdesk-net
depends_on:
- hbbr
restart: unless-stopped
hbbr:
container_name: hbbr
ports:
- 21117:21117
- 21119:21119
image: rustdesk/rustdesk-server:latest
command: hbbr
volumes:
- ./data:/root
networks:
- rustdesk-net
restart: unless-stopped
Deux conteneurs seront lancer :
- hbbs qui est le serveur RustDesk ID/Rendezvous
- hbbr qui lui est le serveur relais RustDesk
Pour en revenir aux ports, voici le rôle de chacun :
- hbbs écoute sur 21115(tcp) et 21116(tcp/udp), 21118(tcp)
- hbbr écoute sur 21117(tcp), 21119(tcp).
On exécute le docker compose avec cette commande :
sudo docker compose up -d
RustDesk est correctement installé !

L’application a généré une clé publique qui va permettre de chiffrer la connexion. Elle est stockée dans le dossier data crée au même emplacement.
Nous allons récupérer la valeur de cette clé pour pouvoir par la suite configurer les clients RustDesk.
cat data/id_ed25519.pub
Veillez à bien sécuriser les accès à ce dossier data !
Bonus :
Si comme moi vous avez décidé créer votre serveur sur Oracle Cloud Free Tier, vous devrez ouvrir les ports sur votre serveur en local :
sudo iptables -I INPUT 4 -p tcp -m multiport --dports 21115,21119 -j ACCEPT
sudo iptables -I INPUT 5 -p UDP --dport 21116 -j ACCEPT
Et également sur votre espace « Virtual Cloud Network » :

Installation du client sur Windows
Installation du client lourd
Nous allons nous procurer la dernière version du client RustDesk à travers cette page : https://github.com/rustdesk/rustdesk/releases/
Nous allons modifier l’exécutable pour qu’il prenne automatiquement nos informations comme la clé publique et l’adresse IP.
Le format sera le suivant : « rustdesk-host=ipaddress,key=yourpublickey.exe »

Nous arrivons sur une version légère, si l’état en bas est » Prêt », tout est bon !

Dans les propriétés puis « A propos de », vous pourrez retrouver les informations concernant votre adresse IP et votre clé de chiffrement !

Nous sommes sur une version légère, vous pouvez choisir d’installer en local l’application sur le poste. Pour plus de stabilité, c’est ce que j’ai choisi de faire !

Installation par script powershell
Je me suis inspirer du script mis en ligne par RustDesk sur ce lien: https://rustdesk.com/docs/en/self-host/client-deployment/
Il y a quelques modifications à effectuer pour que le script soit autonome de votre côté :
- Vérifier la version la plus récente du client RustDesk ici : https://github.com/rustdesk/rustdesk/releases
- Changer la valeur de la variable $IpAdress par votre adresse IP
- De même avec la variable $PublicKeyString qui contient votre clé de chiffrement
Voici le contenu du script powershell :
#Region Settings
# IP address of our server
$IpAddress = "Your_IP_Address"
# The public key for our server
$PublicKeyString = "Your_Key"
# The temporary folder where we will store and run the installer
$TempFolder = "C:\Temp\"
#EndRegion Settings
# Check if we are running in admin context
function Test-IsElevated {
$id = [System.Security.Principal.WindowsIdentity]::GetCurrent()
$p = New-Object System.Security.Principal.WindowsPrincipal($id)
$p.IsInRole([System.Security.Principal.WindowsBuiltInRole]::Administrator)
}
if (-not (Test-IsElevated)) {
Write-Error -Message "Access Denied. Please run with Administrator privileges."
exit 1
}
# Check if RustDesk is already installed and exit if it is installed
if ((Test-Path -Path "C:\Program Files\RustDesk\RustDesk.exe")) {
"RustDesk already installed."
exit 0
}
# Create our temp folder if it doesn't exist
if (!(Test-Path -Path $TempFolder)) {
New-Item -ItemType Directory -Force -Path $TempFolder
}
# Change the current location to the temp folder
Set-Location $TempFolder
# Download version 1.2.3 of rustdesk
Invoke-WebRequest -Uri "https://github.com/rustdesk/rustdesk/releases/download/1.2.3/rustdesk-1.2.3-x86_64.exe" -Outfile rustdesk.exe
# Rename the installer to configure the installer
Rename-Item -Path "rustdesk.exe" -NewName "rustdesk-host=$IpAddress,key=$PublicKeyString.exe"
# Run the installer silently
Start-Process -FilePath ".\rustdesk-host=*" -ArgumentList "--silent-install" -PassThru
Maintenant, vous pouvez vérifier que le client RustDesk est installé et a été automatiquement configuré sur votre appareil !
Conclusion
La mise en place de RustDesk sur un VPS hébergé dans le cadre de l’offre Oracle Cloud Free Tier, pour mon cas, offre une solution pratique et économique pour la prise en main à distance sécurisée des ordinateurs. En optant pour l’auto-hébergement de RustDesk, nous bénéficiont d’un contrôle total sur les données, renforçant ainsi la sécurité et la confidentialité des informations sensibles échangées lors des connexions à distance.