Erstellen •
Docker •
S6-Overlay •
Schlüsselpaar •
Debian-Pakete •
Umgebungsvariablen
[English] | [Nederlands] | [繁體中文] | [简体中文]
Hosten Sie Ihren eigenen RustDesk-Server selbst, er ist kostenlos und quelloffen.
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-Images werden automatisch generiert und bei jedem Github-Release veröffentlicht. Wir haben 2 Arten von Images.
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.)
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 |
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.
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
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
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==
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
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) |