Manually •
Docker •
Keypair •
Binaries •
Variables
[French] | [Deutsch] | [Nederlands] | [繁體中文] | [简体中文] | [Русский]
Dies ist eine modifizierte Version von RustDesk Server, die kostenlos und Open Source ist.
- Der erste Unterschied ist, dass diese Version die neue Version enthält tcp Modus, der in der RustDesk Server Pro-Version enthalten ist.
- Der zweite Unterschied besteht darin, dass diese Version eine vorläufige Implementierung des Rustdesk Server Pro API-Servers enthält.
- Unterstützung für persönliches Adressbuch
- Unterstützung für gemeinsames Adressbuch auf Gruppenebene
- Nur lesen, lesen-schreiben, admin
- Unterstützung für gemeinsames Adressbuch auf Benutzerebene
- Nur lesen, lesen-schreiben, admin
- Der dritte Unterschied besteht darin, dass diese Version eine vorläufige Implementierung einer einfachen Webkonsole enthält.
Die Webkonsole ist unter der Adresse zugänglich http://<server-ip>:21114/ mit Login "admin" und Passwort "Hallo, Welt!" .
Sie können die API-Dokumentation im integrierten API-Server unter der Adresse durchsuchen http://<server-ip>:21114/api/doc/.
Eine nicht-interaktive API-Dokumentation ist verfügbar unter sctgdesk-api-server repo.
Wenn du meine Arbeit schätzt, überlege ihr bitte, ihr einen Stern zu geben! 🤩 oder ein
Sie können Folgendes verwenden docker-compose.yml Datei zum Starten des Servers:
version: '3'
networks:
sctgdesk-net:
external: false
services:
hbbs:
container_name: hbbs
ports:
- 21114:21114
- 21115:21115
- 21116:21116
- 21116:21116/udp
- 21118:21118
image: sctg/sctgdesk-server:latest
command: hbbs -r sctgdesk.example.com:21117
volumes:
- ./data:/usr/local/share/sctgdesk
networks:
- sctgdesk-net
depends_on:
- hbbr
restart: unless-stopped
hbbr:
container_name: hbbr
ports:
- 21117:21117
- 21119:21119
image: sctg/sctgdesk-server:latest
command: hbbr
volumes:
- ./data:/usr/local/share/sctgdesk
networks:
- sctgdesk-net
restart: unless-stoppedund den Server mit:
mkdir -p data
docker-compose up Binärdateien sind für folgende Plattformen verfügbar:
- Linux x86_64 statisch verknüpft
- Linux arm64 statisch verknüpft
- Linux armv7 statisch verknüpft
- MacOS Intel
- MacOS Apple Silicon
- Windows x86_64
Der Standard-Admin-Benutzer wird mit dem Benutzernamen erstellt admin und das Passwort Hello,world!. Du kannst das Passwort nach dem ersten Login in der Webkonsole ändern.
Die API-Standalone-Version ist eine Version des Servers, die den API-Server und die Webkonsole enthält, aber nicht den Rendez-vous-Server.
Die eigenständige Version ist in einem eigenen Repository verfügbar sctgdesk-api-server.
Für alle API- oder Webconsole-bezogenen Probleme siehe bitte die sctgdesk-api-server Aufbewahrungsort.
Wir haben unseren Client so modifiziert, dass er die Autoupdate-Links vom API-Server abruft, statt von Github-Releases.
Damit die Autoupdate-Links funktionieren, musst du deinen Client so modifizieren, dass er die Autoupdate-Links vom API-Server abruft. Das Wie du es machen kannst:
// src/common.rs
#[tokio::main(flavor = "current_thread")]
async fn check_software_update_() -> hbb_common::ResultType<()> {
let url=format!("{}/api/software/releases/latest",get_api_server("".to_owned(), "".to_owned())).to_owned();
log::info!("URL for checking software updates: {}", url);
//let url = "https://github.com/rustdesk/rustdesk/releases/latest";
let latest_release_response = create_http_client_async().get(url).send().await?;
let latest_release_version = latest_release_response
.url()
.path()
.rsplit('/')
.next()
.unwrap_or_default();
let response_url = latest_release_response.url().to_string();
if get_version_number(&latest_release_version) > get_version_number(crate::VERSION) {
*SOFTWARE_UPDATE_URL.lock().unwrap() = response_url;
}
Ok(())
}Der eingebettete API-Server ist weder gesichert noch gegen DDOS-Angriffe geschützt. Eine gute Praxis ist es, einen Reverse-Proxy vor dem API-Server zu verwenden. NGINX ist für diesen Zweck eine gute Wahl. HAProxy ist ebenfalls eine gute Wahl.
Wir verwenden HAProxy vor dem API-Server in unserer Produktionsumgebung.
Dies ist unsere Konfigurationsdatei für HAProxy, sie wird nur als Beispiel bereitgestellt. Du solltest es an deine eigenen Bedürfnisse anpassen:
global
log /dev/log local0
log /dev/log local1 notice
chroot /var/lib/haproxy
stats socket /run/haproxy/admin.sock mode 660 level admin expose-fd listeners
stats timeout 30s
user haproxy
group haproxy
daemon
defaults
log global
retries 2
timeout connect 3000ms
timeout server 5000ms
timeout client 5000ms
frontend hbbs_wss
bind 0.0.0.0:21120 ssl crt /etc/haproxy/hbb.pem
default_backend hbbs_wss_backend
frontend hbbs_api
mode http
option forwardfor
bind 0.0.0.0:21114 ssl crt /etc/haproxy/api.pem
http-request set-header X-Forwarded-Proto https
default_backend hbbs_api_backend
frontend hbbs_api_443
mode http
option forwardfor
bind 0.0.0.0:443 ssl crt /etc/haproxy/api.pem
http-request set-header X-Forwarded-Proto https
filter compression
compression algo gzip
compression type text/css text/html text/javascript application/javascript text/plain text/xml application/json
compression offload
default_backend hbbs_api_backend
frontend hbbr_wss
bind 0.0.0.0:21121 ssl crt /etc/haproxy/hbb.pem
default_backend hbbr_wss_backend
backend hbbs_api_backend
mode http
server srv_main 127.0.0.1:21113
backend hbbs_wss_backend
server srv_main 127.0.0.1:21118
backend hbbr_wss_backend
server srv_main 127.0.0.1:21119Der hbbs-Server wird gestartet mit
[Unit]
Description=Rustdesk Signal Server
[Service]
Type=simple
LimitNOFILE=1000000
ExecStart=/usr/bin/hbbs --api-port=21113 -k AucFCOYVWNHRkJnx13FFh7C0tmUZ3nei5wXKmlfK6WPYthz65fRavaA5HO/OIz2kq+bCSlAqBkZgvikwVGqw/Q== --mask=10.10.0.235/24 -r rendez-vous.example.org -R rendez-vous.example.org
#Environment="RUST_LOG=debug"
Environment="ALWAYS_USE_RELAY=Y"
Environment="OAUTH2_CREATE_USER=1"
Environment="S3CONFIG_FILE=s3config.toml"
Environment="OAUTH2_CONFIG_FILE=oauth2.toml"
WorkingDirectory=/var/lib/rustdesk-server/
User=
Group=
Restart=always
StandardOutput=append:/var/log/rustdesk-server/hbbs.log
StandardError=append:/var/log/rustdesk-server/hbbs.error
# Restart service after 10 seconds if node service crashes
RestartSec=10
[Install]
WantedBy=multi-user.targetUm den Zugriff auf deinen Server zu beschränken, kannst du die --logged-in-only Option oder setze die LOGGED_IN_ONLY=Y Umgebungsvariable für die hbbs Server. Dies beschränkt die Kontrolle auf nur eingeloggte Nutzer.
Selbst mit dieser Option können Nutzer sich weiterhin auf dem Rendez-vous-Server registrieren, können aber nicht den Peer eines anderen Benutzers steuern. Wenn jemand versucht, einen Peer zu steuern, ohne eingeloggt zu sein, erhält er eine Fehlermeldung:
Durch die Aktivierung dieser Funktion können Sie Ihrem Server eine zusätzliche Sicherheitsebene hinzufügen und unbefugten Zugriff verhindern.
Konfigurierend LOGGED_IN_ONLY
Um diese Funktion zu aktivieren:
- Setze die
LOGGED_IN_ONLY=YUmgebungsvariable für diehbbsServer. - Alternativ kannst du die
--logged-in-onlyOption beim Ausführen derhbbsServer.
Beispiel
Um das zu setzen LOGGED_IN_ONLY Umgebungsvariable kannst du die folgende Zeile zu deiner ~/.bashrc Datei oder Äquivalent:
export LOGGED_IN_ONLY=YHosten Sie Ihren eigenen RustDesk-Server selbst, er ist kostenlos und Open Source.
Zuerst brauchst du eine funktionierende Rust-Entwicklungs-Toolchain und eine Node ≥ 20 funktionierende Installation.
- Unices (Linux, MacOS usw.):
DATABASE_URL=sqlite://$(pwd)/db_v2.sqlite3 cargo build --release- Fenster mit cmd.exe Hülle:
set "DATABASE_URL=sqlite://%CD%/db_v2.sqlite3" && cargo build --releaseDrei ausführbare Dateien werden in Target/Release generiert.
- hbbs – RustDesk ID/Rendezvous-Server mit API-Server
- hbbr – RustDesk-Relaisserver
- rustdesk-utils – RustDesk CLI-Utilities
Aktualisierte Binärdateien finden Sie auf dem Auslösungen Seite.
Alle nach der Version v1.1.99-40 veröffentlichten Binärdateien sind mit Github Actions attestiert. Sie können die Attestation überprüfen, indem Sie die sha256-Summe der Binäreinheit mit https://search.sigstore.dev/?hash=<sha256> Zum Beispiel.
Wenn du zusätzliche Funktionen möchtest RustDesk Server Pro Vielleicht passt es dir besser.
Wenn du deinen eigenen Server entwickeln möchtest, rustdesk-server-demo Vielleicht ist es für dich ein besserer und einfacherer Einstieg als dieses Depot.
Docker-Images werden automatisch auf jeder GitHub-Version generiert und veröffentlicht.
Diese Bilder sind gegen die Konstruktion aufgebaut ubuntu-22.04 mit der einzigen Ergänzung der Hauptbinäre (hbbr und hbbs). Sie sind verfügbar auf Docker-Hub Mit diesen Tags:
| Architektur | Bild:Tag |
|---|---|
| amd64 | sctg/sctgdesk-server:latest |
| arm64v8 | sctg/sctgdesk-server:latest |
| arm32v7 | sctg/sctgdesk-server:latest |
Sie können diese Bilder direkt mit beginnen docker run mit diesen Befehlen:
docker run --name hbbs --net=host -v "$PWD/data:/usr/local/share/sctgdesk" -d sctg/sctgdesk-server:latest hbbs -r <relay-server-ip[:port]>
docker run --name hbbr --net=host -v "$PWD/data:/usr/local/share/sctgdesk" -d sctg/sctgdesk-server:latest hbbr oder ohne --net=host, aber P2P-Direktverbindung kann nicht funktionieren.
Für Systeme, die SELinux verwenden, Ersatz /root bis /root:z ist erforderlich, damit die Container korrekt funktionieren. Alternativ kann die SELinux-Containertrennung komplett deaktiviert werden, indem die Option hinzugefügt wird --security-opt label=disable.
docker run --name hbbs -p 21114:21114 -p 21115:21115 -p 21116:21116 -p 21116:21116/udp -p 21118:21118 -v "$PWD/data:/usr/local/share/sctgdesk" -d sctg/sctgdesk-server:latest hbbs -r <relay-server-ip[:port]>
docker run --name hbbr -p 21117:21117 -p 21119:21119 -v "$PWD/data:/usr/local/share/sctgdesk" -d sctg/sctgdesk-serverlatest hbbr Das relay-server-ip Parameter ist die IP-Adresse (oder DNS-Name) des Servers, der diese Container ausführt. Das wahlfrei port Der Parameter muss verwendet werden, wenn man einen anderen Port verwendet als 21117 für hbbr.
Sie können auch docker-compose verwenden, wobei diese Konfiguration als Vorlage dient:
version: '3'
networks:
sctgdesk-net:
external: false
services:
hbbs:
container_name: hbbs
ports:
- 21114:21114
- 21115:21115
- 21115:21115
- 21116:21116
- 21116:21116/udp
- 21118:21118
image: sctg/sctgdesk-server:latest
command: hbbs -r sctgdesk.example.com:21117
volumes:
- ./data:/usr/local/share/sctgdesk
networks:
- sctgdesk-net
depends_on:
- hbbr
restart: unless-stopped
hbbr:
container_name: hbbr
ports:
- 21117:21117
- 21119:21119
image: sctg/sctgdesk-server-server:latest
command: hbbr
volumes:
- ./data:/usr/local/share/sctgdesk
networks:
- sctgdesk-net
restart: unless-stoppedBearbeite Zeile 16, um auf deinen Relay-Server zu zeigen (den, der auf Port 21117 lauscht). Du kannst auch die Lautstärkelinien (Zeile 18 und Zeile 33) bearbeiten, wenn du möchtest.
(Docker-Compose-Credit geht an @lukebarone und @QuiGonLeong)
Beachten Sie, dass hier das sctg/sctgdesk-server-server:latest in China durch die neueste Versionsnummer auf dockerhub ersetzt werden kann, wie sctg/sctgdesk-server-server:1.1.99-37. Andernfalls könnte die alte Version aufgrund der Bildbeschleunigung entfernt werden.
Für die Verschlüsselung wird ein Schlüsselpaar benötigt; Du kannst sie bereitstellen, wie bereits erklärt, aber du brauchst eine Möglichkeit, eine zu erstellen.
Du kannst diesen Befehl verwenden, um ein Schlüsselpaar zu generieren:
/usr/bin/rustdesk-utils genkeypairWenn du das nicht hast (oder nicht willst) rustdesk-utils Auf Ihrem System installiert, können Sie denselben Befehl mit Docker aufrufen:
docker run --rm --entrypoint /usr/bin/rustdesk-utils sctg/sctgdesk-server-server:latest genkeypairDie Ausgabe wird ungefähr so aussehen:
Public Key: 8BLLhtzUBU/XKAH4mep3p+IX4DSApe7qbAwNH9nv4yA=
Secret Key: egAVd44u33ZEUIDTtksGcHeVeAwywarEdHmf99KM5ajwEsuG3NQFT9coAfiZ6nen4hfgNICl7upsDA0f2e/jIA==
Für jede Binärdatei gibt es separate .deb-Pakete, die Sie in der Auslösungen. Diese Pakete sind für die folgenden Distributionen gedacht:
- Ubuntu 22.04 LTS
- MacOS Intel oder Apple Silicon
- Windows x86_64 oder i686
hbbs und hbbr können mit diesen ENV-Variablen konfiguriert werden.
Du kannst die Variablen wie gewohnt angeben oder ein verwenden .env Datei.
| Variable | binär | Beschreibung |
|---|---|---|
| ALWAYS_USE_RELAY | HBBS | wenn gesetzt auf "Y" Erlaubt keine direkte Peer-Verbindung |
| DOWNGRADE_START_CHECK | HBBR | Verzögerung (in Sekunden) vor Downgrade-Check |
| DOWNGRADE_THRESHOLD | HBBR | Schwelle der Downgrade-Prüfung (bit/ms) |
| SCHLÜSSEL | HBBS/HBBR | Wenn gesetzt ist, erzwingen wir die Verwendung eines bestimmten Schlüssels, wenn gesetzt auf "_" Erzwingen Sie die Verwendung eines beliebigen Schlüssels |
| LIMIT_SPEED | HBBR | Geschwindigkeitsbegrenzung (in Mb/s) |
| OAUTH2_CONFIG_FILE | HBBS | path for oauth2 config file |
| OAUTH2_CREATE_USER | HBBS | wenn gesetzt auf "1" Erstelle einen Nutzer, falls es ihn nicht gibt |
| PORT | HBBS/HBBR | Hörport (21116 für HBBS - 21117 für HBBR) |
| STAFFEL | HBBS | IP-Adresse/DNS-Name der Rechner, die HBBR ausführen (durch Komma getrennt) |
| RUST_LOG | alle | Set Debug Level (error |
| S3CONFIG_FILE | HBBS | Pfad für S3-Konfigurationsdatei |
| SINGLE_BANDWIDTH | HBBR | maximale Bandbreite für eine einzelne Verbindung (in Mbit/s) |
| TOTAL_BANDWIDTH | HBBR | maximale Gesamtbandbreite (in Mb/s) |