RustDesk – kostenlose Open Source Alternative zu TeamViewer, AnyDesk & Co.

RustDesk ist ein sehr junges Projekt, welches sich zur Aufgabe gemacht hat, eine kostenlose Open Source Variante für die Fernsteuerung von Rechnern zu inzwischen sehr teuren Anbietern wie TeamViewer, AnyDesk & Co anzubieten.

Man merkt, dass das Projekt noch sehr jung ist, im Quellcode wird auf GitHub sehr viel programmiert und geändert; manche Funktionen sind bereits im RustDesk-Client freigeschaltet, funktionieren aber noch nicht.

Trotzdem ist RustDesk eine wirklich gute Alternative zu seinen „großen kommerziellen Brüdern“, da man einen RustDesk-Server auch selber betreiben kann und daher die volle Kontrolle darüber hat, wer Verbindungen aufbauen kann.

In meiner Beispiel-Konfiguration wird der Relay- und Rendezvous-Server auf einem Linux-Server installiert.

Installation des RustDesk-Servers unter Ubuntu Linux

Voraussetzungen

  • Server mit installiertem Ubuntu Linux 22, z.B. ein 🛒IONOS VPS S für 2 €/Monat (Stand: 02’2023)
  • Internet-Adresse, die auf die externe IP des Servers auflöst
  • installiertes Docker
  • installiertes Docker-Compose

Schritt 1: Einrichtung der Docker-Compose Konfigurationsdatei

1. Verzeichnis für RustDesk anlegen

mkdir /rustdesk

2. Docker-Compose Konfigurationsdatei anlegen

cd /rustdesk
nano docker-compose.yml

In die erstellte Datei nun folgenden Inhalt einfügen, wobei example.com durch die Internet- oder IP-Adresse deines Servers ersetzt werden muss:

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 example.com:21117 -k _
    volumes:
      - ./hbbs:/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 -k _
    volumes:
      - ./hbbr:/root
    networks:
      - rustdesk-net
    restart: unless-stopped

Die zwei RustDesk-Dienste lauten

  • hbbs = RustDesk ID/Rendezvous server
  • hbbr = RustDesk relay server

3. Docker Stack starten

docker-compose up -d

4. Firewall-Freigaben

Damit RustDesk auch von außen erreichbar ist müssen folgende Ports an deinen Server freigegeben werden bzw. weitergeleitet werden:

  • TCP 21115-21119
  • UDP 21116

5. Public Key für Verbindungen auslesen

Damit dein RustDesk-Server nicht von jedem Internet-Nutzer verwendet werden kann habe ich in die Konfigurations-Datei den Parameter „-k _“ eingefügt (siehe oben). Hiermit sagt man RustDesk, dass nur Verbindungen von Clients akzeptiert werden, die sich mit dem Public Key des RustDesk Servers authentifizieren.

Den Private Key kann man im Verzeichnis

/rustdesk/hbbs/

finden. Dort liegt eine Datei im Format id_ed12345.pub, in der der Public Key enthalten ist.

Mit dem folgenden Befehl kannst du den Public Key auslesen:

nano /rustdesk/hbbs/id_ed12345.pub

Das ed12345 musst du natürlich durch den Dateinamen deiner Installation ersetzen; diesen findest du mit folgendem Befehl heraus:

ls -l /rustdesk/hbbs/*.pub

6. Keys vom hbbr und hbbs vergleichen

Es kann vorkommen, dass der hbbr sowie hbbs unterschiedliche Public und Private Keys erhalten. Damit RustDesk ohne Probleme funktioniert müssen jedoch beide Services die selben Key-Paare nutzen.

Prüfe hierfür den Inhalt der ed12345.pub-Dateien auf gleichen Inhalt.
Sollte sich dieser unterscheiden kopiere die Key-Dateien aus dem hbbs-Ordner einfach in den Ordner vom hbbr und starte danach den hbbs- sowie hbbr-Dienst neu:

cp /rustdesk/hbbs/id_* /rustdesk/hbbr/
docker restart hbbs
docker restart hbbr

Quellen

Hinweise

Markennamen und geschützte Warenzeichen sind Eigentum ihrer jeweiligen Inhaber. Die Nennung von Markennamen und geschützter Warenzeichen hat lediglich beschreibenden Charakter.

1 Kommentar

  1. Hallo Tino,
    super Anleitung. Vielen Dank dafür! Bei „networks:“ würde ich noch das interne Docker-Netz definieren z.B. 172.30.0.0/24, um Routing-Probleme auf dem Server auszuschließen.

    Gruß
    WuF

Antworten

Deine E-Mail-Adresse wird nicht veröffentlicht.


*