← Voltar para Sistemas

Servidor RustDesk no Windows sem Docker

rustdeskself-hostingwindowsnssmremote-desktop
Ilustração pixel art de um sysadmin triunfante sobre um rack de servidores brilhante com uma bandeira do Windows, enquanto uma baleia de desenho animado cai no vazio
Sem Docker. Sem licença Pro. Só dois binários e NSSM.

O que você vai construir

Dois binários — hbbs (ID/Rendezvous) e hbbr (Relay) — gerenciados pelo NSSM como serviços Windows com início automático. Os clientes na sua LAN se conectam pelo seu servidor em vez da infraestrutura pública do RustDesk.

Seu servidor gera um par de chaves Ed25519 na primeira execução. Cada cliente precisa da chave pública para confiar no seu servidor. Perdeu a chave privada? Regenera tudo.


Pré-requisitos

RequisitoNotas
Windows 10/11 ou Server 2019+Testado no Windows 11 24H2
IP estático na LAN do servidorReserva DHCP também funciona
Acesso de administradorInstalação de serviços requer elevação
Cliente RustDesk instaladoNo servidor e nas máquinas remotas

Passo 1: Baixar os binários

Crie um diretório dedicado. Este guia usa C:\RustDeskServer\ — escolha qualquer caminho, mas não mova depois da instalação dos serviços.

RustDesk ServerÚltimo release

  • Baixe rustdesk-server-windows-x86_64-unsigned.zip
  • Extraia hbbs.exe e hbbr.exe no seu diretório do servidor

NSSMv2.25 do fork dkxce (recomendado pela documentação oficial do RustDesk)

  • Extraia win64\nssm.exe no mesmo diretório

Você deve ter:

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

Por que o fork dkxce? O NSSM original não é atualizado desde 2014. A documentação oficial do RustDesk aponta para este fork mantido. A versão 2.25 corrige problemas críticos de gerenciamento de serviços no Windows moderno.


Passo 2: Gerar chaves

Execute hbbs uma vez manualmente para gerar o par de chaves. Abra um PowerShell elevado:

cd C:\RustDeskServer

# Inicie hbbr primeiro (hbbs espera por ele)
Start-Process .\hbbr.exe -WindowStyle Hidden
Start-Sleep -Seconds 3

# Inicie hbbs — substitua YOUR_SERVER_IP pelo seu IP estático da LAN
Start-Process .\hbbs.exe -ArgumentList "-r YOUR_SERVER_IP" -WindowStyle Hidden
Start-Sleep -Seconds 5

# Encerre ambos
Get-Process hbbs, hbbr -ErrorAction SilentlyContinue | Stop-Process -Force

Seu diretório agora contém:

C:\RustDeskServer\
├── ...
├── id_ed25519           ← Chave privada (NUNCA compartilhe)
├── id_ed25519.pub       ← Chave pública (os clientes precisam dela)
└── db_v2.sqlite3        ← Criado depois, na primeira conexão de cliente

Leia sua chave pública — você vai precisar para cada cliente:

Get-Content .\id_ed25519.pub
# Saída: algo como "OeVXq8zY1r3kP7mN=..." — salve isso.

Passo 3: Instalar serviços NSSM

É aqui que a maioria dos guias falha. Três configurações são inegociáveis no Windows 10/11:

  1. AppNoConsole 1 — Sem isso, o NSSM falha silenciosamente ao iniciar o serviço. É um bug documentado do NSSM no Windows moderno.
  2. AppDirectory — Sem isso, os arquivos de chaves e o banco de dados vão parar em C:\Windows\System32. Seu servidor não vai encontrar suas próprias chaves.
  3. DependOnService NlaSvc — Sem isso, o serviço inicia antes do adaptador de rede estar pronto e falha ao vincular as portas.
$DIR = "C:\RustDeskServer"
$IP  = "YOUR_SERVER_IP"   # ← Substitua pelo seu IP estático da LAN

# --- Instalar 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

# --- Instalar 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

# --- Iniciar ambos ---
& $DIR\nssm.exe start hbbr
Start-Sleep -Seconds 3
& $DIR\nssm.exe start hbbs

Verifique:

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

Ambos devem mostrar Running / Automatic.

Saída do PowerShell mostrando os serviços hbbs e hbbr rodando com início automático
Ambos os serviços rodando com início automático atrasado

Passo 4: Verificar portas

O RustDesk usa cinco portas. Apenas três são necessárias para operação básica em LAN:

PortaProtocoloServiçoFinalidadeObrigatória
21115TCPhbbsTeste de tipo NAT
21116TCP+UDPhbbsRegistro de ID + heartbeat
21117TCPhbbrRelay (sessões remotas)
21118TCPhbbsCliente web (websocket)
21119TCPhbbrRelay web (websocket)

Verificação rápida:

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

Você deve ver seis linhas (três portas × IPv4 + IPv6). Se alguma estiver faltando, verifique os logs de stderr.

Saída do netstat mostrando as portas RustDesk 21115, 21116 e 21117 em escuta no IPv4 e IPv6
Todos os seis listeners confirmados — três portas em IPv4 e IPv6

Firewall: Se o seu Firewall do Windows estiver ativado, crie regras de entrada:

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

Substitua YOUR_SUBNET/24 pela faixa da sua LAN (por exemplo, 192.168.1.0/24) para restringir o acesso apenas a máquinas locais.


Passo 5: Configurar clientes

Cada cliente — incluindo o da máquina servidor — deve apontar para o seu servidor.

Opção A: Linha de comando (Recomendada)

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"

Opção B: GUI

No RustDesk → Configurações (⚙) → Rede → Servidor ID/Relay:

  • Servidor ID: YOUR_SERVER_IP
  • Chave: conteúdo de id_ed25519.pub
  • Servidor Relay: deixe em branco (detectado automaticamente)
  • Servidor API: deixe em branco (recurso apenas Pro)
Configurações de rede do cliente RustDesk mostrando os campos Servidor ID e Chave configurados para um servidor próprio
Servidor ID e Chave são os únicos campos necessários — deixe o resto em branco

Verificar registro de clientes

Após configurar, verifique o log do servidor:

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

Você deve ver entradas update_pk <CLIENT_ID> para cada cliente que se conecta. Se o ID de um cliente mostra “does not exist” quando você tenta conectar, esse cliente ainda não se registrou no seu servidor.

Ambos os lados de cada conexão devem usar o mesmo servidor. Este é o problema de suporte número um.


Manutenção

TarefaComando
Status do serviçoGet-Service hbbs, hbbr
Logs do servidorGet-Content C:\RustDeskServer\hbbs_stdout.log -Tail 20
Reiniciar serviçosRestart-Service hbbs; Restart-Service hbbr
Parar serviçosStop-Service hbbs; Stop-Service hbbr
Remover serviçosnssm remove hbbs confirm; nssm remove hbbr confirm
Regenerar chavesDeletar id_ed25519*, reiniciar hbbs

Armadilhas que vão te fazer perder tempo

O serviço NSSM falha silenciosamente ao iniciar. Configure AppNoConsole 1. É um problema conhecido do NSSM no Windows 10/11 onde a alocação de console falha no contexto do serviço. Sem esse flag, o serviço entra num loop de início-parada sem erro útil.

Chaves e banco de dados aparecem no System32. Configure AppDirectory para a pasta do seu servidor. O NSSM usa o diretório do sistema como diretório de trabalho por padrão. O hbbs escreve seus arquivos relativos ao diretório de trabalho.

O serviço falha na inicialização, mas funciona quando iniciado manualmente. Adicione SERVICE_DELAYED_AUTO_START e DependOnService NlaSvc. O adaptador de rede não está pronto quando serviços de início antecipado começam. Início atrasado com dependência de rede resolve isso.

“ID does not exist” ao conectar. Ambas as máquinas, origem e destino, devem estar configuradas para usar seu servidor. Um cliente apontando para os servidores públicos do RustDesk tem um ID que só existe lá — seu servidor não tem registro dele.

Não rode o wrapper GUI do RustDesk Server junto com o NSSM. O instalador GUI RustDeskServer.Setup.exe e o NSSM tentam gerenciar os mesmos binários. Escolha um. Este guia usa NSSM porque sobrevive a reinicializações sem exigir login de usuário.

O flag -k _ não é necessário. A autenticação por chave é o padrão desde a versão 1.1.11 do servidor. Incluí-lo é inofensivo, mas desnecessário.

O servidor relay na configuração do cliente é opcional. Quando o relay roda na mesma máquina que o hbbs (o caso comum), os clientes o detectam automaticamente. Só configure se seu relay estiver em um host diferente.


Fontes