← Zpět na Systémy

RustDesk Server na Windows bez Dockeru

rustdeskself-hostingwindowsnssmremote-desktop
Pixel art ilustrace sysadmina, který vítězně stojí na zářícím server racku s vlajkou Windows, zatímco kreslený velryba padá do prázdna
Bez Dockeru. Bez Pro licence. Jen dva binární soubory a NSSM.

Co budeš stavět

Dva binární soubory — hbbs (ID/Rendezvous) a hbbr (Relay) — spravované NSSM jako automaticky spouštěné Windows služby. Klienti na tvém LAN se připojují přes tvůj server místo veřejné infrastruktury RustDesku.

Tvůj server při prvním spuštění vygeneruje pár klíčů Ed25519. Každý klient potřebuje veřejný klíč, aby tvému serveru důvěřoval. Ztratíš privátní klíč — regeneruješ všechno.


Předpoklady

PožadavekPoznámky
Windows 10/11 nebo Server 2019+Testováno na Windows 11 24H2
Statická LAN IP na serveruFunguje i DHCP rezervace
Administrátorský přístupInstalace služeb vyžaduje elevaci
Nainstalovaný klient RustDeskNa serveru i vzdálených strojích

Krok 1: Stáhni binární soubory

Vytvoř vyhrazený adresář. Tento návod používá C:\RustDeskServer\ — zvol si libovolnou cestu, ale po instalaci služeb ji nepřesouvej.

RustDesk ServerNejnovější release

  • Stáhni rustdesk-server-windows-x86_64-unsigned.zip
  • Rozbal hbbs.exe a hbbr.exe do adresáře serveru

NSSMv2.25 z forku dkxce (doporučeno oficiální dokumentací RustDesku)

  • Rozbal win64\nssm.exe do stejného adresáře

Měl bys mít:

C:\RustDeskServer\
├── hbbs.exe
├── hbbr.exe
└── nssm.exe

Proč fork dkxce? Původní NSSM nebyl aktualizován od roku 2014. Oficiální dokumentace RustDesku odkazuje na tento udržovaný fork. Verze 2.25 opravuje kritické problémy se správou služeb na moderním Windows.


Krok 2: Vygeneruj klíče

Spusť hbbs jednou ručně pro vygenerování páru klíčů. Otevři PowerShell s právy administrátora:

cd C:\RustDeskServer

# Nejdřív spusť hbbr (hbbs ho očekává)
Start-Process .\hbbr.exe -WindowStyle Hidden
Start-Sleep -Seconds 3

# Spusť hbbs — nahraď YOUR_SERVER_IP svou statickou LAN IP
Start-Process .\hbbs.exe -ArgumentList "-r YOUR_SERVER_IP" -WindowStyle Hidden
Start-Sleep -Seconds 5

# Ukonči oba
Get-Process hbbs, hbbr -ErrorAction SilentlyContinue | Stop-Process -Force

Tvůj adresář teď obsahuje:

C:\RustDeskServer\
├── ...
├── id_ed25519           ← Privátní klíč (NIKDY ho nesdílej)
├── id_ed25519.pub       ← Veřejný klíč (klienti ho potřebují)
└── db_v2.sqlite3        ← Vytvoří se později, při prvním připojení klienta

Přečti si svůj veřejný klíč — budeš ho potřebovat pro každého klienta:

Get-Content .\id_ed25519.pub
# Výstup: něco jako "OeVXq8zY1r3kP7mN=..." — ulož si to.

Krok 3: Nainstaluj služby NSSM

Tady většina návodů selhává. Tři nastavení jsou na Windows 10/11 nezbytná:

  1. AppNoConsole 1 — Bez toho NSSM tiše selže při spuštění služby. Je to zdokumentovaný bug NSSM na moderním Windows.
  2. AppDirectory — Bez toho skončí soubory klíčů a databáze v C:\Windows\System32. Tvůj server nenajde vlastní klíče.
  3. DependOnService NlaSvc — Bez toho se služba spustí dřív, než je síťový adaptér připravený, a selže při navázání portů.
$DIR = "C:\RustDeskServer"
$IP  = "YOUR_SERVER_IP"   # ← Nahraď svou statickou LAN IP

# --- Nainstaluj hbbr (Relay) ---
& $DIR\nssm.exe install hbbr "$DIR\hbbr.exe"
& $DIR\nssm.exe set hbbr AppDirectory $DIR
& $DIR\nssm.exe set hbbr AppNoConsole 1
& $DIR\nssm.exe set hbbr Start SERVICE_DELAYED_AUTO_START
& $DIR\nssm.exe set hbbr DependOnService NlaSvc
& $DIR\nssm.exe set hbbr AppStdout "$DIR\hbbr_stdout.log"
& $DIR\nssm.exe set hbbr AppStderr "$DIR\hbbr_stderr.log"
& $DIR\nssm.exe set hbbr AppRotateFiles 1
& $DIR\nssm.exe set hbbr AppRotateOnline 1
& $DIR\nssm.exe set hbbr AppRotateBytes 1048576

# --- Nainstaluj hbbs (ID/Rendezvous) ---
& $DIR\nssm.exe install hbbs "$DIR\hbbs.exe" "-r $IP"
& $DIR\nssm.exe set hbbs AppDirectory $DIR
& $DIR\nssm.exe set hbbs AppNoConsole 1
& $DIR\nssm.exe set hbbs Start SERVICE_DELAYED_AUTO_START
& $DIR\nssm.exe set hbbs DependOnService "NlaSvc" "hbbr"
& $DIR\nssm.exe set hbbs AppStdout "$DIR\hbbs_stdout.log"
& $DIR\nssm.exe set hbbs AppStderr "$DIR\hbbs_stderr.log"
& $DIR\nssm.exe set hbbs AppRotateFiles 1
& $DIR\nssm.exe set hbbs AppRotateOnline 1
& $DIR\nssm.exe set hbbs AppRotateBytes 1048576

# --- Spusť oba ---
& $DIR\nssm.exe start hbbr
Start-Sleep -Seconds 3
& $DIR\nssm.exe start hbbs

Ověř:

Get-Service hbbs, hbbr | Format-Table Name, Status, StartType

Obě by měly ukazovat Running / Automatic.

Výstup PowerShellu ukazující běžící služby hbbs a hbbr s automatickým spouštěním
Obě služby běží s opožděným automatickým spouštěním

Krok 4: Ověř porty

RustDesk používá pět portů. Pro základní LAN provoz jsou potřeba jen tři:

PortProtokolSlužbaÚčelPovinný
21115TCPhbbsTest typu NAT
21116TCP+UDPhbbsRegistrace ID + heartbeat
21117TCPhbbrRelay (vzdálené relace)
21118TCPhbbsWebový klient (websocket)
21119TCPhbbrWebový relay (websocket)

Rychlá kontrola:

netstat -an | findstr /R "2111[5-7].*LISTENING"

Mělo by se zobrazit šest řádků (tři porty × IPv4 + IPv6). Pokud některý chybí, zkontroluj stderr logy.

Výstup netstat ukazující porty RustDesk 21115, 21116 a 21117, které naslouchají na IPv4 i IPv6
Všech šest listenerů potvrzeno — tři porty na IPv4 a IPv6

Firewall: Pokud je Windows Firewall zapnutý, vytvoř příchozí pravidla:

New-NetFirewallRule -DisplayName "RustDesk hbbs TCP" -Direction Inbound -Protocol TCP -LocalPort 21115-21116 -Action Allow -RemoteAddress YOUR_SUBNET/24
New-NetFirewallRule -DisplayName "RustDesk hbbs UDP" -Direction Inbound -Protocol UDP -LocalPort 21116 -Action Allow -RemoteAddress YOUR_SUBNET/24
New-NetFirewallRule -DisplayName "RustDesk hbbr TCP" -Direction Inbound -Protocol TCP -LocalPort 21117 -Action Allow -RemoteAddress YOUR_SUBNET/24

Nahraď YOUR_SUBNET/24 rozsahem tvého LAN (např. 192.168.1.0/24), abys omezil přístup jen na lokální stroje.


Krok 5: Nakonfiguruj klienty

Každý klient — včetně toho na stroji serveru — musí směřovat na tvůj server.

Varianta A: Příkazový řádek (Doporučeno)

Windows:

& "$env:ProgramFiles\RustDesk\rustdesk.exe" --config "host=YOUR_SERVER_IP,key=YOUR_PUBLIC_KEY"

macOS:

sudo /Applications/RustDesk.app/Contents/MacOS/RustDesk --config "host=YOUR_SERVER_IP,key=YOUR_PUBLIC_KEY"

Varianta B: GUI

V RustDesk → Nastavení (⚙) → Síť → ID/Relay Server:

  • ID Server: YOUR_SERVER_IP
  • Klíč: obsah id_ed25519.pub
  • Relay Server: nech prázdné (autodetekce)
  • API Server: nech prázdné (funkce pouze pro Pro)
Síťová nastavení klienta RustDesk s nakonfigurovanými poli ID Server a Klíč pro vlastní server
ID Server a Klíč jsou jediná potřebná pole — zbytek nech prázdný

Ověř registraci klientů

Po konfiguraci zkontroluj log serveru:

Get-Content C:\RustDeskServer\hbbs_stdout.log -Tail 5

Měly by se zobrazit záznamy update_pk <CLIENT_ID> pro každého připojeného klienta. Pokud se při pokusu o připojení zobrazí „does not exist” u ID klienta, tento klient se ještě nezaregistroval na tvém serveru.

Obě strany každého spojení musí používat stejný server. To je problém podpory číslo jedna.


Údržba

ÚlohaPříkaz
Stav služebGet-Service hbbs, hbbr
Logy serveruGet-Content C:\RustDeskServer\hbbs_stdout.log -Tail 20
Restart služebRestart-Service hbbs; Restart-Service hbbr
Zastavení služebStop-Service hbbs; Stop-Service hbbr
Odstranění služebnssm remove hbbs confirm; nssm remove hbbr confirm
Regenerace klíčůSmaž id_ed25519*, restartuj hbbs

Nástrahy, které tě budou stát čas

Služba NSSM tiše selže při spuštění. Nastav AppNoConsole 1. Je to známý problém NSSM na Windows 10/11, kde alokace konzole selže v kontextu služby. Bez tohoto příznaku služba vstoupí do smyčky start-stop bez užitečné chybové zprávy.

Klíče a databáze se objeví v System32. Nastav AppDirectory na složku tvého serveru. NSSM ve výchozím nastavení používá systémový adresář jako pracovní adresář. hbbs zapisuje soubory relativně k pracovnímu adresáři.

Služba selže při startu, ale funguje při ručním spuštění. Přidej SERVICE_DELAYED_AUTO_START a DependOnService NlaSvc. Síťový adaptér není připravený, když začínají služby s předčasným startem. Opožděný start se závislostí na síti to řeší.

„ID does not exist” při připojení. Zdrojový i cílový stroj musí být nakonfigurované pro použití tvého serveru. Klient směřující na veřejné servery RustDesku má ID, které existuje jen tam — tvůj server o něm nemá záznam.

Nespouštěj GUI wrapper RustDesk Serveru společně s NSSM. GUI instalátor RustDeskServer.Setup.exe a NSSM se oba snaží spravovat stejné binární soubory. Vyber si jeden. Tento návod používá NSSM, protože přežije restarty bez nutnosti přihlášení uživatele.

Příznak -k _ není potřeba. Autentizace klíčem je výchozí od verze serveru 1.1.11. Zahrnout ho je neškodné, ale zbytečné.

Relay server v konfiguraci klienta je volitelný. Když relay běží na stejném stroji jako hbbs (běžný případ), klienti ho autodetekují. Nastav ho jen pokud je tvůj relay na jiném hostu.


Zdroje