Le serveur RustDesk est installable sur une machine Linux, une machine Windows ou via Docker. Sa compatibilité avec Docker va nous permettre de le mettre en place sur un NAS Synology de façon relativement simple. Dans cet article, nous allons voir comment le faire tourner sur un serveur Debian 11 avec Docker.
D’après le GitHub de RustDesk, il y a trois serveurs gratuits pour gérer les connexions et ils sont situés à Séoul, Singapour et Dallas. Cette liste va probablement évoluer avec le temps, mais cela doit vous inciter à utiliser votre propre serveur, car il n’y a pas encore de relais public en Europe ou en France.
Les ports utiles pour RustDesk
Pour qu’une connexion soit établie entre deux appareils, ils doivent pouvoir se connecter au serveur RustDesk. Si l’on utilise RustDesk par l’intermédiaire du réseau local uniquement, cela se gère assez facilement, car il n’y aura que les règles de pare-feu au sein même du réseau local à gérer. Par contre, si l’on veut que les machines se connectent au serveur RustDesk depuis n’importe où, il y a deux options pour contacter le serveur RustDesk :
- Au travers d’une connexion VPN
- Au travers d’Internet directement, ce qui va impliquer d’ouvrir certains ports
Ce que l’on peut imaginer, c’est monter son propre serveur RustDesk sur un serveur VPS chez OVH ou un autre hébergeur, afin de le rendre accessible facilement, depuis n’importe où.
Peu importe le scénario qui sera retenu, il faut savoir que RustDesk s’appuie sur plusieurs ports pour fonctionner.
- TCP : 21115, 21116, 21117, 21118, 21119
- UDP : 21116
Le port 21116 est le seul qui doit être impérativement autorisé en TCP et UDP. Pour être plus précis, et d’après la documentation:
- 21115 est utilisé pour tester le type de NAT,
- 21116/UDP est utilisé pour l’enregistrement de l’ID et le service heartbeat
- 21116/TCP est utilisé pour le service de connexion
- 21117 est utilisé pour les services de relais
- 21118 et 21119 sont utilisés pour les clients Web, donc ces deux ports ne sont pas forcément nécessaires
Sur une machine Debian 11 où Docker est déjà en place, le lancement des deux containers va être assez rapide et facile. On commence par récupérer l’image officielle du container via un classique « docker image pull » comme ceci :
sudo docker image pull rustdesk/rustdesk-server
Ensuite, on va créer un dossier et se positionner à l’intérieur avant de démarrer le container (pour qu’il crée ses données dans ce dossier) :
mkdir /srv/rustdeskserver cd /srv/rustdeskserver
Il ne reste plus qu’à démarrer les deux containers en s’inspirant des commandes indiquées dans la documentation :
sudo docker run --name hbbs -p 21115:21115 -p 21116:21116 -p 21116:21116/udp -p 21118:21118 -v `pwd`:/root -td --net=host rustdesk/rustdesk-server hbbs -r IP_PUBLIC/PRIVE:21117 sudo docker run --name hbbr -p 21117:21117 -p 21119:21119 -v `pwd`:/root -td --net=host rustdesk/rustdesk-server hbbr
Les commandes ci-dessus vont permettre de voir ce qui se passe au lancement de chaque container. Pour les démarrer en arrière-plan, il suffit d’ajouter l’option « -d » comme ceci :
sudo docker run --name hbbs -d 21115:21115 -p 21116:21116 -p 21116:21116/udp -p 21118:21118 -v `pwd`:/root -td --net=host rustdesk/rustdesk-server hbbs -r IP_PUBLIC/PRIVE:21117 sudo docker run --name hbbr -d -p 21117:21117 -p 21119:21119 -v `pwd`:/root -it --net=host --rm rustdesk/rustdesk-server hbbr
A partir de là, les deux containers tournent et nous pouvons le vérifier avec cette commande :
docker ps
Vérifier le bon fonctionnement des deux conteneurs :
docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 5e415ce61397 rustdesk/rustdesk-server "hbbr" About a minute ago Up About a minute hbbr 80453ef4b014 rustdesk/rustdesk-server "hbbs -r 1.2.3…" 4 minutes ago Up 4 minutes hbbsTester
Tester si les ports sont bien ouverts, avec un nmap
par exemple :
nmap -p 21115,21116,21117,21118,21119
Starting Nmap 7.92 ( https://nmap.org ) at 2022-06-08 11:52 CEST
Host is up (0.013s latency).
PORT STATE SERVICE
21115/tcp open unknown
21116/tcp open unknown
21117/tcp open unknown
21118/tcp open unknown
21119/tcp open unknown
Nmap done: 1 IP address (1 host up) scanned in 0.09 seconds
Dans le répertoire de lancement des conteneurs docker, vous trouverez plusieurs fichiers dont la clé publique id_ed25519.pub
Copiez le contenu de cette clé et conservez-le car nous en aurons besoin plus tard pour le client.
our tester RustDesk en passant par notre serveur, nous avons besoin de deux clients avec RustDesk. Pour rappel, le client RustDesk est téléchargeable directement sur https://rustdesk.com.
Sous Windows, il se présente sous la forme d’un exécutable. Il peut-être installé ou simplement utilisé en mode portable.
Une fois lancé, il faut que l’on configure le client RustDesk pour lui dire d’utiliser notre serveur auto-hébergé. Pour cela, cliquez sur le menu avec les trois points à côté de l’ID, puis sur l’option « ID/Serveur Relais« .
Pour le client Windows, on peut embarquer la configuration dans le .exe ce qui peut être utile lors d’une installation d’un poste en évitant de perdre du temps pour expliquer au client comment configurer le logiciel.
Pour cela, il suffit de renommer l’exécutable rustdesk.exe en rustdesk-host=IP_SERVEUR,key=CLE_PUBLIQUE.exe.
rustdesk-host=192.168.1.149,key=xYzAbCdEfGhIjKlMn0123.exe
Pour contrôler si les paramètres ont bien été pris en compte, il vous suffit de cliquer sur « A propos du logiciel » et vous verrez alors un écran avec les options passées :