RustDesk सर्वर Windows पर — बिना Docker के
तुम क्या बना रहे हो
दो binaries — hbbs (ID/Rendezvous) और hbbr (Relay) — NSSM से manage होते हैं auto-start Windows services के रूप में। तुम्हारे LAN के clients तुम्हारे server से connect होते हैं, RustDesk के public infrastructure की बजाय।
तुम्हारा server पहली बार run होने पर Ed25519 keypair generate करता है। हर client को तुम्हारे server पर trust करने के लिए public key चाहिए। Private key खो दो, तो सब दोबारा generate करो।
जरूरतें
| जरूरत | नोट्स |
|---|---|
| Windows 10/11 या Server 2019+ | Windows 11 24H2 पर टेस्ट किया |
| Server पर static LAN IP | DHCP reservation भी काम करता है |
| Admin access | Service installation के लिए elevation चाहिए |
| RustDesk client installed | Server और remote machines दोनों पर |
Step 1: Binaries डाउनलोड करो
एक dedicated directory बनाओ। यह guide C:\RustDeskServer\ use करती है — कोई भी path चुनो, लेकिन service installation के बाद move मत करो।
RustDesk Server — Latest release
rustdesk-server-windows-x86_64-unsigned.zipडाउनलोड करोhbbs.exeऔरhbbr.exeअपने server directory में extract करो
NSSM — dkxce fork का v2.25 (official RustDesk docs में recommended)
win64\nssm.exeउसी directory में extract करो
तुम्हारे पास होना चाहिए:
C:\RustDeskServer\
├── hbbs.exe
├── hbbr.exe
└── nssm.exe
dkxce fork क्यों? Original NSSM 2014 से update नहीं हुआ। Official RustDesk documentation इस maintained fork को link करता है। Version 2.25 modern Windows पर critical service management issues fix करता है।
Step 2: Keys Generate करो
Keypair generate करने के लिए hbbs को एक बार manually run करो। Elevated PowerShell खोलो:
cd C:\RustDeskServer
# पहले hbbr start करो (hbbs इसे expect करता है)
Start-Process .\hbbr.exe -WindowStyle Hidden
Start-Sleep -Seconds 3
# hbbs start करो — YOUR_SERVER_IP को अपने static LAN IP से replace करो
Start-Process .\hbbs.exe -ArgumentList "-r YOUR_SERVER_IP" -WindowStyle Hidden
Start-Sleep -Seconds 5
# दोनों बंद करो
Get-Process hbbs, hbbr -ErrorAction SilentlyContinue | Stop-Process -Force
तुम्हारी directory में अब ये हैं:
C:\RustDeskServer\
├── ...
├── id_ed25519 ← Private key (कभी share मत करो)
├── id_ed25519.pub ← Public key (clients को चाहिए)
└── db_v2.sqlite3 ← बाद में बनता है, पहले client connection पर
अपनी public key पढ़ो — हर client के लिए चाहिए:
Get-Content .\id_ed25519.pub
# Output: "OeVXq8zY1r3kP7mN=..." जैसा कुछ — इसे save करो।
Step 3: NSSM Services Install करो
यहाँ ज्यादातर guides fail होती हैं। Windows 10/11 पर तीन settings non-negotiable हैं:
AppNoConsole 1— इसके बिना, NSSM silently service start करने में fail हो जाता है। यह modern Windows पर एक documented NSSM bug है।AppDirectory— इसके बिना, key files और databaseC:\Windows\System32में land होते हैं। तुम्हारा server अपनी keys नहीं ढूंढ पाएगा।DependOnService NlaSvc— इसके बिना, service network adapter ready होने से पहले start हो जाती है और ports bind करने में fail हो जाती है।
$DIR = "C:\RustDeskServer"
$IP = "YOUR_SERVER_IP" # ← अपने static LAN IP से replace करो
# --- hbbr (Relay) Install ---
& $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
# --- hbbs (ID/Rendezvous) Install ---
& $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
# --- दोनों Start करो ---
& $DIR\nssm.exe start hbbr
Start-Sleep -Seconds 3
& $DIR\nssm.exe start hbbs
Verify करो:
Get-Service hbbs, hbbr | Format-Table Name, Status, StartType
दोनों Running / Automatic दिखना चाहिए।
Step 4: Ports Verify करो
RustDesk पाँच ports use करता है। Basic LAN operation के लिए सिर्फ तीन जरूरी हैं:
| Port | Protocol | Service | Purpose | जरूरी |
|---|---|---|---|---|
| 21115 | TCP | hbbs | NAT type test | ✅ |
| 21116 | TCP+UDP | hbbs | ID registration + heartbeat | ✅ |
| 21117 | TCP | hbbr | Relay (actual remote sessions) | ✅ |
| 21118 | TCP | hbbs | Web client (websocket) | ❌ |
| 21119 | TCP | hbbr | Web relay (websocket) | ❌ |
Quick check:
netstat -an | findstr /R "2111[5-7].*LISTENING"
छह lines दिखनी चाहिए (तीन ports × IPv4 + IPv6)। अगर कोई missing है, stderr logs check करो।
Firewall: अगर Windows Firewall enabled है, inbound rules बनाओ:
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
YOUR_SUBNET/24 को अपने LAN range से replace करो (जैसे 192.168.1.0/24) ताकि access सिर्फ local machines तक सीमित रहे।
Step 5: Clients Configure करो
हर client — server machine पर वाला भी — तुम्हारे server को point करना चाहिए।
Option A: Command Line (Recommended)
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"
Option B: GUI
RustDesk → Settings (⚙) → Network → ID/Relay Server:
- ID Server:
YOUR_SERVER_IP - Key:
id_ed25519.pubका content - Relay Server: blank छोड़ दो (auto-detected)
- API Server: blank छोड़ दो (Pro feature only)
Client Registration Verify करो
Configure करने के बाद, server log check करो:
Get-Content C:\RustDeskServer\hbbs_stdout.log -Tail 5
हर connecting client के लिए update_pk <CLIENT_ID> entries दिखनी चाहिए। अगर client का ID “does not exist” दिखता है connect करते समय, तो वो client तुम्हारे server पर register नहीं हुआ है।
हर connection के दोनों sides को same server use करना चाहिए। यह support issue नंबर एक है।
Maintenance
| Task | Command |
|---|---|
| Service status | Get-Service hbbs, hbbr |
| Server logs | Get-Content C:\RustDeskServer\hbbs_stdout.log -Tail 20 |
| Services restart | Restart-Service hbbs; Restart-Service hbbr |
| Services stop | Stop-Service hbbs; Stop-Service hbbr |
| Services remove | nssm remove hbbs confirm; nssm remove hbbr confirm |
| Keys regenerate | id_ed25519* delete करो, hbbs restart करो |
समय बर्बाद करने वाली समस्याएँ
NSSM service silently start होने में fail हो जाती है।
AppNoConsole 1 set करो। यह Windows 10/11 पर NSSM का known issue है जहाँ service context में console allocation fail होता है। इस flag के बिना, service बिना useful error के start-stop loop में चली जाती है।
Keys और database System32 में दिखते हैं।
AppDirectory को अपने server folder पर set करो। NSSM default में system directory को working directory के रूप में use करता है। hbbs working directory के relative files लिखता है।
Service boot पर fail होती है, लेकिन manually start करने पर काम करती है।
SERVICE_DELAYED_AUTO_START और DependOnService NlaSvc add करो। जब early-start services शुरू होती हैं तब network adapter ready नहीं होता। Network dependency के साथ delayed start इसे solve करता है।
Connect करते समय “ID does not exist”। Source और target दोनों machines को तुम्हारे server use करने के लिए configure होना चाहिए। Public RustDesk servers को point करने वाले client की ID सिर्फ वहाँ exist करती है — तुम्हारे server पर उसका कोई record नहीं है।
RustDesk Server GUI wrapper को NSSM के साथ मत चलाओ।
GUI installer RustDeskServer.Setup.exe और NSSM दोनों same binaries manage करने की कोशिश करते हैं। कोई एक चुनो। यह guide NSSM use करती है क्योंकि यह user login के बिना reboots survive करता है।
-k _ flag जरूरी नहीं है। Key-based authentication server version 1.1.11 से default है। इसे include करना harmless है लेकिन unnecessary।
Client config में relay server optional है। जब relay hbbs के साथ same machine पर run होता है (common case), clients auto-detect करते हैं। सिर्फ तब set करो जब relay different host पर हो।