Installation de RustDesk avec docker sur un VPS

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.

Une image contenant diagramme, boîte, conception

Description générée automatiquement

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 » :

Une image contenant texte, capture d’écran, ligne, Police

Description générée automatiquement

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 !

Une image contenant texte, capture d’écran, logiciel, Logiciel multimédia

Description générée automatiquement

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

Une image contenant texte, capture d’écran, logiciel, Logiciel multimédia

Description générée automatiquement

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 !

Une image contenant texte, capture d’écran, Police, conception

Description générée automatiquement

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.

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Retour en haut