rustdesk-server/README-DE.md
XLion bac9548f86
Add README for Traditional Chinese (#364)
* Add README-TW.md

* Add "繁體中文" hyperlink to README.md

* Add English hyperlink to README-TW.md

* Add "繁體中文" hyperlink to README-NL.md

* Add "繁體中文" hyperlink to README-DE.md
2024-02-16 10:48:19 +08:00

13 KiB

ErstellenDockerS6-OverlaySchlüsselpaarDebian-PaketeUmgebungsvariablen
[English] | [Nederlands] | [繁體中文]

RustDesk Server-Programm

build

Herunterladen

Handbuch

FAQ

Hosten Sie Ihren eigenen RustDesk-Server selbst, er ist kostenlos und quelloffen.

Manuelles Erstellen

cargo build --release

In target/release werden drei ausführbare Dateien erzeugt.

  • hbbs - RustDesk ID/Rendezvous-Server
  • hbbr - RustDesk Relay-Server
  • rustdesk-utils - RustDesk CLI-Utilities

Hier finden Sie aktualisierte Binärdateien.

Wenn Sie Ihren eigenen Server entwickeln wollen, könnte rustdesk-server-demo ein besserer und einfacherer Start für Sie sein als dieses Repository.

Docker-Image

Docker-Images werden automatisch generiert und bei jedem Github-Release veröffentlicht. Wir haben 2 Arten von Images.

Klassisches Image

Diese Images sind mit Ubuntu 20.04 gebaut, mit dem Zusatz der wichtigen Binärdateien (hbbr und hbbs). Sie sind auf Docker hub mit diesen Tags verfügbar:

Architektur Image:Tag
amd64 rustdesk/rustdesk-server:latest
arm64v8 rustdesk/rustdesk-server:latest-arm64v8

Sie können diese Images direkt mit docker run mit diesen Befehlen starten:

docker run --name hbbs --net=host -v "$PWD/data:/root" -d rustdesk/rustdesk-server:latest hbbs -r <relay-server-ip[:port]> 
docker run --name hbbr --net=host -v "$PWD/data:/root" -d rustdesk/rustdesk-server:latest hbbr 

Oder ohne --net=host, aber die P2P-Direktverbindung kann dann nicht funktionieren.

Bei Systemen, die SELinux verwenden, muss /root durch /root:z ersetzt werden, damit die Container korrekt laufen. Alternativ kann die SELinux-Containertrennung durch Hinzufügen der Option --security-opt label=disable vollständig deaktiviert werden.

docker run --name hbbs -p 21115:21115 -p 21116:21116 -p 21116:21116/udp -p 21118:21118 -v "$PWD/data:/root" -d rustdesk/rustdesk-server:latest hbbs -r <relay-server-ip[:port]> 
docker run --name hbbr -p 21117:21117 -p 21119:21119 -v "$PWD/data:/root" -d rustdesk/rustdesk-server:latest hbbr 

Der Parameter relay-server-ip ist die IP-Adresse (oder der DNS-Name) des Servers, auf dem diese Container laufen. Der optionale Parameter port muss verwendet werden, wenn Sie einen anderen Port als 21117 für hbbr verwenden.

Sie können auch Docker Compose verwenden, wobei diese Konfiguration als Vorlage dient:

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 rustdesk.example.com: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

Bearbeiten Sie Zeile 16 so, dass sie auf Ihren Relay-Server verweist (den, der am Port 21117 lauscht). Sie können auch die Zeilen für die Volumes (Zeile 18 und 33) bearbeiten, wenn Sie dies wünschen.

(Die Anerkennung für Docker Compose geht an @lukebarone und @QuiGonLeong.)

S6-Overlay-basierte Images

Diese Images sind mit busybox:stable gebaut, mit dem Zusatz Binärdateien (sowohl hbbr als auch hbbs) und S6-overlay. Sie sind auf Docker hub mit diesen Tags verfügbar:

Architektur Version Image:Tag
multiarch neueste rustdesk/rustdesk-server-s6:latest
amd64 neueste rustdesk/rustdesk-server-s6:latest-amd64
i386 neueste rustdesk/rustdesk-server-s6:latest-i386
arm64v8 neueste rustdesk/rustdesk-server-s6:latest-arm64v8
armv7 neueste rustdesk/rustdesk-server-s6:latest-armv7
multiarch 2 rustdesk/rustdesk-server-s6:2
amd64 2 rustdesk/rustdesk-server-s6:2-amd64
i386 2 rustdesk/rustdesk-server-s6:2-i386
arm64v8 2 rustdesk/rustdesk-server-s6:2-arm64v8
armv7 2 rustdesk/rustdesk-server-s6:2-armv7
multiarch 2.0.0 rustdesk/rustdesk-server-s6:2.0.0
amd64 2.0.0 rustdesk/rustdesk-server-s6:2.0.0-amd64
i386 2.0.0 rustdesk/rustdesk-server-s6:2.0.0-i386
arm64v8 2.0.0 rustdesk/rustdesk-server-s6:2.0.0-arm64v8
armv7 2.0.0 rustdesk/rustdesk-server-s6:2.0.0-armv7

Es wird dringend empfohlen, das Image multiarch entweder mit dem Tag major version oder latest zu verwenden.

Das S6-Overlay fungiert als Supervisor und hält beide Prozesse am Laufen, sodass bei diesem Image keine zwei separaten Container benötigt werden.

Sie können diese Images direkt mit docker run mit diesem Befehl starten:

docker run --name rustdesk-server \ 
  --net=host \
  -e "RELAY=rustdeskrelay.example.com" \
  -e "ENCRYPTED_ONLY=1" \
  -v "$PWD/data:/data" -d rustdesk/rustdesk-server-s6:latest

oder ohne --net=host, aber die P2P-Direktverbindung kann dann nicht funktionieren.

docker run --name rustdesk-server \
  -p 21115:21115 -p 21116:21116 -p 21116:21116/udp \
  -p 21117:21117 -p 21118:21118 -p 21119:21119 \
  -e "RELAY=rustdeskrelay.example.com" \
  -e "ENCRYPTED_ONLY=1" \
  -v "$PWD/data:/data" -d rustdesk/rustdesk-server-s6:latest

Oder Sie können eine Docker Compose-Datei verwenden:

version: '3'

services:
  rustdesk-server:
    container_name: rustdesk-server
    ports:
      - 21115:21115
      - 21116:21116
      - 21116:21116/udp
      - 21117:21117
      - 21118:21118
      - 21119:21119
    image: rustdesk/rustdesk-server-s6:latest
    environment:
      - "RELAY=rustdesk.example.com:21117"
      - "ENCRYPTED_ONLY=1"
    volumes:
      - ./data:/data
    restart: unless-stopped

Für dieses Container-Image können Sie diese Umgebungsvariablen verwenden, zusätzlich zu den im Abschnitt Umgebungsvariablen angegebenen Variablen:

Variable optional Beschreibung
RELAY nein IP-Adresse/DNS-Name des Rechners, auf dem dieser Container läuft
ENCRYPTED_ONLY ja Wenn auf 1 gesetzt, wird eine unverschlüsselte Verbindung nicht akzeptiert
KEY_PUB ja Öffentlicher Teil des Schlüsselpaares
KEY_PRIV ja Privater Teil des Schlüsselpaares

Verwaltung von Geheimnissen in S6-Overlay-basierten Images

Sie können das Schlüsselpaar natürlich in einem Docker-Volume aufbewahren, aber empfehlenswert ist, die Schlüssel nicht in das Dateisystem zu schreiben.

Beim Start des Containers wird das Vorhandensein des Schlüsselpaares geprüft (/data/id_ed25519.pub und /data/id_ed25519). Wenn einer dieser Schlüssel nicht existiert, wird er aus den Umgebungsvariablen oder den Docker-Geheimnissen neu erstellt. Dann wird die Gültigkeit des Schlüsselpaares überprüft: Wenn öffentlicher und privater Schlüssel nicht übereinstimmen, wird der Container angehalten. Wenn Sie keine Schlüssel angeben, erzeugt hbbs einen für Sie und legt ihn am Standardspeicherort ab.

Umgebungsvariablen zum Speichern des Schlüsselpaars verwenden

Sie können Docker-Umgebungsvariablen verwenden, um die Schlüssel zu speichern. Folgen Sie einfach diesen Beispielen:

docker run --name rustdesk-server \ 
  --net=host \
  -e "RELAY=rustdeskrelay.example.com" \
  -e "ENCRYPTED_ONLY=1" \
  -e "DB_URL=/db/db_v2.sqlite3" \
  -e "KEY_PRIV=FR2j78IxfwJNR+HjLluQ2Nh7eEryEeIZCwiQDPVe+PaITKyShphHAsPLn7So0OqRs92nGvSRdFJnE2MSyrKTIQ==" \
  -e "KEY_PUB=iEyskoaYRwLDy5+0qNDqkbPdpxr0kXRSZxNjEsqykyE=" \
  -v "$PWD/db:/db" -d rustdesk/rustdesk-server-s6:latest
version: '3'

services:
  rustdesk-server:
    container_name: rustdesk-server
    ports:
      - 21115:21115
      - 21116:21116
      - 21116:21116/udp
      - 21117:21117
      - 21118:21118
      - 21119:21119
    image: rustdesk/rustdesk-server-s6:latest
    environment:
      - "RELAY=rustdesk.example.com:21117"
      - "ENCRYPTED_ONLY=1"
      - "DB_URL=/db/db_v2.sqlite3"
      - "KEY_PRIV=FR2j78IxfwJNR+HjLluQ2Nh7eEryEeIZCwiQDPVe+PaITKyShphHAsPLn7So0OqRs92nGvSRdFJnE2MSyrKTIQ=="
      - "KEY_PUB=iEyskoaYRwLDy5+0qNDqkbPdpxr0kXRSZxNjEsqykyE="
    volumes:
      - ./db:/db
    restart: unless-stopped

Docker-Geheimnisse zum Speichern des Schlüsselpaars verwenden

Sie können alternativ auch Docker-Geheimnisse verwenden, um die Schlüssel zu speichern. Dies ist nützlich, wenn Sie Docker Compose oder Docker Swarm verwenden. Folgen Sie einfach diesem Beispiel:

cat secrets/id_ed25519.pub | docker secret create key_pub -
cat secrets/id_ed25519 | docker secret create key_priv -
docker service create --name rustdesk-server \
  --secret key_priv --secret key_pub \
  --net=host \
  -e "RELAY=rustdeskrelay.example.com" \
  -e "ENCRYPTED_ONLY=1" \
  -e "DB_URL=/db/db_v2.sqlite3" \
  --mount "type=bind,source=$PWD/db,destination=/db" \
  rustdesk/rustdesk-server-s6:latest
version: '3'

services:
  rustdesk-server:
    container_name: rustdesk-server
    ports:
      - 21115:21115
      - 21116:21116
      - 21116:21116/udp
      - 21117:21117
      - 21118:21118
      - 21119:21119
    image: rustdesk/rustdesk-server-s6:latest
    environment:
      - "RELAY=rustdesk.example.com:21117"
      - "ENCRYPTED_ONLY=1"
      - "DB_URL=/db/db_v2.sqlite3"
    volumes:
      - ./db:/db
    restart: unless-stopped
    secrets:
      - key_pub
      - key_priv

secrets:
  key_pub:
    file: secrets/id_ed25519.pub
  key_priv:
    file: secrets/id_ed25519      

Ein Schlüsselpaar erstellen

Für die Verschlüsselung wird ein Schlüsselpaar benötigt, das Sie bereitstellen können, aber Sie benötigen eine Möglichkeit, es zu erstellen.

Mit diesem Befehl können Sie ein Schlüsselpaar erzeugen:

/usr/bin/rustdesk-utils genkeypair

Wenn Sie das Paket rustdesk-utils nicht auf Ihrem System installiert haben (oder dies nicht wollen), können Sie den gleichen Befehl mit Docker aufrufen:

docker run --rm --entrypoint /usr/bin/rustdesk-utils  rustdesk/rustdesk-server-s6:latest genkeypair

Die Ausgabe sieht dann etwa so aus:

Public Key:  8BLLhtzUBU/XKAH4mep3p+IX4DSApe7qbAwNH9nv4yA=
Secret Key:  egAVd44u33ZEUIDTtksGcHeVeAwywarEdHmf99KM5ajwEsuG3NQFT9coAfiZ6nen4hfgNICl7upsDA0f2e/jIA==

Debian-Pakete

Für jede Binärdatei stehen separate Debian-Pakete zur Verfügung, die Sie in Releases finden können. Diese Pakete sind für die folgenden Distributionen gedacht:

  • Ubuntu 22.04 LTS
  • Ubuntu 20.04 LTS
  • Ubuntu 18.04 LTS
  • Debian 11 Bullseye
  • Debian 10 Buster

Umgebungsvariablen

hbbs und hbbr können mit diesen Umgebungsvariablen konfiguriert werden. Sie können die Variablen wie üblich angeben oder eine .env-Datei verwenden.

Variable Binärdatei Beschreibung
ALWAYS_USE_RELAY hbbs Wenn auf Y gesetzt, wird eine direkte Verbindung nicht zugelassen.
DB_URL hbbs Pfad für die Datenbankdatei
DOWNGRADE_START_CHECK hbbr Verzögerung (in Sekunden) vor der Downgrade-Prüfung
DOWNGRADE_THRESHOLD hbbr Schwellenwert der Downgrade-Prüfung (Bit/ms))
KEY hbbs/hbbr Wenn gesetzt, wird die Verwendung eines bestimmten Schlüssels erzwungen. Wenn auf _ gesetzt, wird die Verwendung eines beliebigen Schlüssels erzwungen.
LIMIT_SPEED hbbr Höchstgeschwindigkeit (in Mb/s)
PORT hbbs/hbbr Lauschender Port (21116 für hbbs - 21117 für hbbr)
RELAY_SERVERS hbbs IP-Adresse/DNS-Name der Rechner, auf denen hbbr läuft (durch Komma getrennt)
RUST_LOG all Debug-Level einstellen (error|warn|info|debug|trace)
SINGLE_BANDWIDTH hbbr Maximale Bandbreite für eine einzelne Verbindung (in Mb/s)
TOTAL_BANDWIDTH hbbr Maximale Gesamtbandbreite (in Mb/s)