doc.rustdesk.com/content/self-host/rustdesk-server-pro/relay/_index.pt.md
2024-07-31 14:50:09 -03:00

7.6 KiB

title weight
Configure Servidor de Relay 17

RustDesk Pro - Instalar Servidores Relay Adicionais com Geo Localização usando Docker

{{% notice note %}} A instalação simples cria um servidor relay (o processo hbbr) implicitamente na mesma máquina, você não precisa especificar o servidor relay explicitamente.

Se você deseja criar um servidor relay adicional explicitamente em outra máquina, execute hbbr seguindo a instalação OSS. Você pode encontrar hbbr em rustdesk-server-linux-amd64.tar.gz, rustdesk-server-hbbr_<versão>-<arquitetura>.deb, rustdesk-server-windows-x86_64.tar.gz ou no docker (sudo docker run ... rustdesk/rustdesk-server-pro hbbr).

O hbbr não requer licença e é igual à versão open source. {{% /notice %}}

Você pode ter vários servidores relay em execução em todo o mundo e aproveitar a GeoLocalização automaticamente para usar o servidor relay mais próximo, proporcionando uma experiência mais rápida ao conectar a computadores remotos. O hbbs verifica automaticamente se esses servidores relay estão online a cada poucos segundos, escolhendo apenas servidores online.

{{% notice note %}} Problema conhecido: https://github.com/rustdesk/rustdesk/discussions/7934 (Em inglês) {{% /notice %}}

Você precisará do par de chaves privadas id_ed25519 e id_ed25519.pub.

1 - Se o Docker já estiver instalado, conecte-se ao seu servidor via SSH e crie um volume para o hbbr.

# docker volume create hbbr

O volume hbbr deve estar localizado em /var/lib/docker/volumes/hbbr/_data.

2 - Copie o par de chaves privadas para o local do volume. Nesse caso, usaremos o SCP para copiar os arquivos.

A sintaxe do comando é scp <caminho/arquivo> usuário@servidor:<caminho/destino>.

# scp id_ed25519 root@100.100.100.100:/var/lib/docker/volumes/hbbr/_data
# scp id_ed25519.pub root@100.100.100.100:/var/lib/docker/volumes/hbbr/_data

3 - Implemente o contêiner hbbr usando o volume criado anteriormente. Este volume possui o par de chaves privadas necessário para executar seu servidor relay privado.  

# sudo docker run --name hbbr -v hbbr:/root -td --net=host rustdesk/rustdesk-server hbbr -k _

4 - Verifique os logs em execução para confirmar se o hbbr está rodando usando seu par de chaves.

# docker logs hbbr

INFO [src/common.rs:121] **Private key comes from id_ed25519**
NFO [src/relay_server.rs:581] Key: XXXXXXXXXXXXXXXXXXXXX
INFO [src/relay_server.rs:60] #blacklist(blacklist.txt): 0
INFO [src/relay_server.rs:75] #blocklist(blocklist.txt): 0
INFO [src/relay_server.rs:81] Listening on tcp :21117

Dependendo do seu sistema operacional, você pode querer bloquear/permitir IPs usando um firewall.

No nosso caso, executando o Ubuntu, queremos permitir qualquer conexão TCP para as portas 21117 e 21119.

# sudo ufw allow proto tcp from any to any port 21117,21119

Habilite o firewall

# sudo ufw enable

Verifique o status

# ufw status

Status: active

To                         Action      From
--                         ------      ----
21117,21119/tcp            ALLOW       Anywhere
21117,21119/tcp (v6)       ALLOW       Anywhere (v6)

Configure o RustDesk Pro para Geo Localização usando o Console Web

Registre-se e baixe o arquivo de banco de dados GeoLite2 City

Para usar a geolocalização, o hbbs precisa acessar o banco de dados MaxMind GeoLite2 City. O banco de dados é gratuito e você pode se registrar para baixar o arquivo e obter uma chave API.

Comece criando uma conta (se você ainda não tem uma) acessando o site. Vá para Download Databases e baixe o GeoLite2 City. Escolha o arquivo gzip e você deve ter o arquivo mmdb ao descompactá-lo.

image

Se você instalou o RustDesk Pro usando o script de instalação em uma máquina Linux, o arquivo mmdb precisa ser movido para /var/lib/rustdesk-server/.

Para instalações Docker, o arquivo deve estar no volume que você mapeou ao implantar o contêiner mapeado para /root.

Obtenha uma chave API para automatizar o processo - servidores Linux

Você precisa atualizar este arquivo regularmente e podemos usar um cronjob para fazer isso. Você precisará de uma chave API para acessar o link de download, que é gratuito.

Vá para Manage License Keys (Gerenciar Chaves de Licença) e gere uma nova chave de licença.
image
image

Você pode automatizar o processo de download de algumas maneiras, mas pode adicionar o seguinte comando ao seu crontab, substituindo {Your Access Key} pela chave API obtida na etapa anterior.

/usr/bin/curl -L --silent 'https://download.maxmind.com/app/geoip_download?edition_id=GeoLite2-City&license_key={Your Access Key}&suffix=tar.gz' | /bin/tar -C '/var/lib/rustdesk-server/' -xvz --keep-newer-files --strip-components=1 --wildcards '*GeoLite2-City.mmdb'

Altere as configurações no Console Web do RustDesk Pro

Adicione os endereços IP ou nomes DNS dos seus servidores relay (DNS é suportado a partir da versão 1.1.11) aos Servidores Relay (Relay Servers). A porta não é necessária, a porta 21117 é usada explicitamente.
image

Adicione uma Substituição Geográfica (Geo Override) adicionando o endereço IP do servidor e as coordenadas onde o servidor está localizado.
image

Clique em Recarregar Geo (Reload Geo) e sua lista deve ficar semelhante a esta.
image

Para confirmar os resultados, verifique os logs do hbbs ao clicar em Recarregar Geo (Reload Geo), você deve ver uma mensagem mostrando os endereços IP do servidor relay e suas coordenadas.

Se você estiver executando o RustDesk Pro em uma máquina Linux, use o comando RUST_LOG=debug ./hbbs para visualizar os logs. Se você estiver executando em um contêiner Docker, use docker logs hbbs.

RUST_LOG=debug ./hbbs

INFO [src/common.rs:130] GEOIP_FILE: ./GeoLite2-City.mmdb
INFO [src/common.rs:159] override 1xx.xxx.xxx.x7: -1.xx 5x.xxx
[src/common.rs:159] override 1xx.xxx.xxx.xx8: -3.xxx 5x.xxxx
[src/common.rs:159] override 7xx.xxx.xxxx.xx1: 6.xxx 5x.xxxx
GEOIP_FILE loaded, #overrides 3
INFO [src/common.rs:119] relay-servers=["1xx.xxx.xxx.x7", "1xx.xxx.xxx.xx8", "7xx.xxx.xxx.xx1"]
NFO [src/rendezvous_server.rs:1467] parsed relay servers: [("1xx.xxxx.xxx.xx7", Some((-1x, xxx))), ("1xx.xxx.xxx.xx8", Some((-3x, xxx))), ("7xx.xxx.xxx.xx1", Some((6x, xxx)))]

Você também pode confirmar as solicitações de relay diretamente em suas instâncias hbbr, simplesmente verificando os logs do contêiner.

# docker logs hbbr

INFO [src/relay_server.rs:436] Relayrequest 0593e64e-4fe8-4a59-a94f-b3420ab043eb from [::ffff:100.100.123.233]:52038 got paired
INFO [src/relay_server.rs:442] Both are raw