Infrastructure & Services 2026-04-07

Déploiement Complet de la Solution RustDesk (Serveur & Client)

Documentation technique pour l'installation du serveur d'ID/Relais sur Debian 13 et l'industrialisation du client Windows via GPO

1. Informations Générales

Cette documentation détaille la mise en place d'une infrastructure de prise en main à distance souveraine au sein de l'infrastructure mpr-if.infra. L'objectif est de s'affranchir des solutions propriétaires tierces en hébergeant notre propre serveur de relais et de signalisation.

  • IP Serveur : 10.192.193.110
  • Domaine Infrastructure : mpr-if.infra
  • Version RustDesk Server : 1.1.12 (Latest stable)
  • Passerelle Réseau : OPNsense (10.192.193.1)

1.1 Prérequis

  • Système Debian 13 (Trixie) vierge.
  • Accès privilégié (root).
  • Ports ouverts sur la passerelle OPNsense pour le flux inter-VLAN.
  • Parc de postes clients Windows cibles.

2. Installation du Serveur (Debian 13)

2.1 Préparation de l'arborescence système

Nous centralisons les binaires et les clés de chiffrement dans /opt pour respecter les standards Linux.

apt update && apt upgrade -y
apt install -y wget unzip
mkdir -p /opt/rustdesk-server
cd /opt/rustdesk-server

2.2 Téléchargement des binaires

Récupération de la version Linux x64 officielle.

wget [https://github.com/rustdesk/rustdesk-server/releases/download/1.1.12/rustdesk-server-linux-x64.zip](https://github.com/rustdesk/rustdesk-server/releases/download/1.1.12/rustdesk-server-linux-x64.zip)
unzip rustdesk-server-linux-x64.zip
mv amd64/* .
rm -rf amd64 rustdesk-server-linux-x64.zip
chmod +x hbbs hbbr

2.3 Configuration des Services Systemd

Pour assurer la persistance du service, deux unités Systemd distinctes sont nécessaires dans /etc/systemd/system/.

Fichier : rustdesk-hbbs.service (Serveur d'ID)

[Unit]
Description=RustDesk ID Server
After=network.target

[Service]
Type=simple
User=root
WorkingDirectory=/opt/rustdesk-server
ExecStart=/opt/rustdesk-server/hbbs -r 10.192.193.110 -k _
Restart=always

[Install]
WantedBy=multi-user.target

Fichier : rustdesk-hbbr.service (Serveur Relais)

[Unit]
Description=RustDesk Relay Server
After=network.target

[Service]
Type=simple
User=root
WorkingDirectory=/opt/rustdesk-server
ExecStart=/opt/rustdesk-server/hbbr -k _
Restart=always

[Install]
WantedBy=multi-user.target

2.4 Mise en service

systemctl daemon-reload
systemctl enable --now rustdesk-hbbs
systemctl enable --now rustdesk-hbbr
systemctl status rustdesk-hbbs rustdesk-hbbr

3. Configuration Réseau et Sécurité

3.1 Filtrage OPNsense

Les flux suivants doivent être autorisés depuis le VLAN Clients vers l'IP 10.192.193.110.

| Port | Protocole | Fonction | | :--- | :--- | :--- | | 21115 | TCP | Connexion initiale (Rendez-vous) | | 21116 | TCP/UDP | Signalisation (Heartbeat) | | 21117 | TCP | Transfert de flux (Relais) | | 21118 | TCP | Support Web (Optionnel) |

3.2 Récupération de la clé publique (RS_KEY)

Au premier démarrage, le serveur génère une paire de clés. La clé publique est indispensable pour authentifier les clients Windows.

cat /opt/rustdesk-server/id_ed25519.pub

IMPORTANT : La chaîne de caractères affichée doit être intégrée dans la configuration des clients RustDesk pour autoriser la connexion au serveur.


4. Déploiement Automatique du Client (GPO)

L'industrialisation est réalisée via l'Active Directory pour garantir une installation systématique sur les postes de travail.

4.1 Fiche GPO : Déploiement RustDesk Client

Objectif : Automatiser l'installation silencieuse du client RustDesk et la configuration de l'ID machine.

  • Nom de la GPO : Deploy_RustDesk_Client.
  • Cible : Unité d'Organisation OU_Ordinateurs.
  • Chemin : Configuration ordinateur > Stratégies > Paramètres Windows > Scripts (démarrage/arrêt) > Démarrage.
  • Paramètres à modifier :
    • Ajouter un script de démarrage :
      • Nom du script : install_rustdesk.bat.
      • Emplacement : Partage réseau de distribution (ex: \\SERVEUR-DC\Deploy$).

4.2 Script d'Installation Industrialisé (install_rustdesk.bat)

Ce script est exécuté au démarrage de la machine (avant l'ouverture de session).

@echo off
:: Variables de configuration
set "MSI_SOURCE=\\SERVEUR-DC\Deploy\rustdesk.msi"
set "INSTALL_DIR=C:\Program Files\RustDesk"

echo Verification de l'installation de RustDesk...

:: 1. Verifier si le service est deja installe
if exist "%INSTALL_DIR%\rustdesk.exe" (
    echo Le logiciel est deja present.
    goto :SET_ID
)

:: 2. Installation silencieuse du package MSI
echo Installation en cours...
start /wait msiexec.exe /i "%MSI_SOURCE%" /qn /norestart

:: 3. Configuration de l'identifiant machine
:SET_ID
timeout /t 5 /nobreak >nul
if exist "%INSTALL_DIR%\rustdesk.exe" (
    echo Attribution de l'ID : %COMPUTERNAME%
    "%INSTALL_DIR%\rustdesk.exe" --set-id "%COMPUTERNAME%"
)

exit /b 0

5. Phases de Recette et Validation

5.1 Vérification de l'installation client

Sur un poste client, la validation s'effectue par :

  • La présence du dossier dans C:\Program Files\RustDesk.
  • L'existence du service Windows nommé RustDesk dans la console services.msc.
  • La vérification que l'ID affiché dans l'interface correspond au nom d'hôte Windows du poste (%COMPUTERNAME%).

5.2 Validation de la connectivité

Le paramétrage du serveur d'ID et de la clé de sécurité (RS_KEY) s'effectue manuellement ou via injection de fichier .toml lors de la phase de mise en service finale pour valider le statut Prêt (voyant vert) en bas de l'interface.



6. Industrialisation de la Configuration (Script PowerShell)

Une fois l'installation de base effectuée, il est nécessaire de forcer les paramètres de connexion (IP Serveur, Clé).

6.1 Script de Configuration Avancée (config_rustdesk.ps1)

Ce script traite à la fois le profil utilisateur et le profil service pour garantir une persistance de la configuration.

# --- CONFIGURATION INFRASTRUCTURE ---
$ServerIP   = "10.192.193.110"
$ServerKey  = "clé"
$Computer   = $env:COMPUTERNAME

# 1. Arrêt des processus pour libérer les verrous sur les fichiers TOML
Stop-Process -Name "RustDesk*" -Force -ErrorAction SilentlyContinue
Stop-Service -Name "rustdesk" -Force -ErrorAction SilentlyContinue
Start-Sleep -Seconds 2

# 2. Cibles de configuration (Profil Utilisateur & Profil Service)
$ConfigPaths = @(
    "$env:APPDATA\RustDesk\config",
    "C:\Windows\ServiceProfiles\LocalService\AppData\Roaming\RustDesk\config"
)

foreach ($Path in $ConfigPaths) {
    if (-not (Test-Path $Path)) { New-Item -ItemType Directory -Path $Path -Force }

    # Application de l'Identité (ID = Nom de la machine)
    $IdFile = Join-Path $Path "RustDesk.toml"
    $IdContent = "id = '$Computer'`n"
    if (Test-Path $IdFile) { $IdContent += (Get-Content $IdFile | Where-Object { $_ -notmatch "^id =" }) -join "`n" }
    [System.IO.File]::WriteAllText($IdFile, $IdContent)

    # Application des paramètres de connexion (Relais & Clé)
    $ConfigFile = Join-Path $Path "RustDesk2.toml"
    $ConfigBody = @"
rendezvous_server = '$($ServerIP):21116'
nat_type = 1
[options]
custom-rendezvous-server = '$ServerIP'
relay-server = '$ServerIP'
key = '$ServerKey'
nickname = '$Computer'
"@
    [System.IO.File]::WriteAllText($ConfigFile, $ConfigBody)
}

# 3. Redémarrage du service avec la nouvelle configuration
Start-Service -Name "rustdesk" -ErrorAction SilentlyContinue

7. Déploiement de la Configuration par GPO

L'usage d'un script de logon classique est insuffisant car l'utilisateur standard n'a pas les droits de stopper le service RustDesk. La solution retenue est l'usage d'une Tâche Planifiée via GPO.

7.1 Paramétrage de la Tâche Planifiée

  • Chemin : Configuration Utilisateur > Préférences > Paramètres du Panneau de configuration > Tâches planifiées.
  • Type : Tâche immédiate (ou planifiée avec déclencheur "À la connexion").

Configuration de l'onglet [Général] :

  • Utilisateur : %LogonDomain%\%LogonUser%
  • Options de sécurité : Cocher "Exécuter avec les autorisations les plus élevées".

Configuration de l'onglet [Actions] :

  • Action : Démarrer un programme.
  • Programme/script : powershell.exe
  • Arguments : -ExecutionPolicy Bypass -File "\\serveur\chemin_vers_fichier\config_rustdesk.ps1"

8. Conclusion

La solution déployée offre une alternative robuste à TeamViewer/AnyDesk. Le couplage entre l'installation MSI (Configuration Ordinateur) et la configuration fine par tâche planifiée (Configuration Utilisateur avec privilèges) assure un déploiement 100% automatisé pour les utilisateurs.