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

150 lines
7.6 KiB
Markdown
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

---
title: Configure Servidor de Relay
weight: 17
---
### RustDesk Pro - Instalar Servidores Relay Adicionais com Geo Localização usando Docker
{{% notice note %}}
[A instalação simples](https://rustdesk.com/docs/pt/self-host/rustdesk-server-pro/installscript/) 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](https://rustdesk.com/docs/pt/self-host/rustdesk-server-oss/install/). 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](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](https://www.maxmind.com/en/account/login).
Vá para `Download Databases` e baixe o GeoLite2 City. Escolha o arquivo gzip e você deve ter o arquivo `mmdb` ao descompactá-lo.
<img width="500" alt="image" src="https://github.com/rustdesk/doc.rustdesk.com/assets/642149/e14318fb-ec52-463c-af77-d08c9479c1b5">
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. <br>
<img width="500" alt="image" src="https://github.com/rustdesk/doc.rustdesk.com/assets/642149/632aeb33-4f5d-4a31-9010-38e01c22d3c9">
<br>
<img width="500" alt="image" src="https://github.com/rustdesk/doc.rustdesk.com/assets/642149/3e178174-5fbf-46b7-a335-01f77125dfad">
Você pode automatizar o [processo de download](https://dev.maxmind.com/geoip/updating-databases) 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. <br>
<img width="500" alt="image" src="https://github.com/rustdesk/doc.rustdesk.com/assets/642149/c4452ba4-5e1d-437a-ae1d-fc0070bfa26c">
Adicione uma `Substituição Geográfica` (Geo Override) adicionando o endereço IP do servidor e as coordenadas onde o servidor está localizado. <br>
<img width="500" alt="image" src="https://github.com/rustdesk/doc.rustdesk.com/assets/642149/41c558e3-423b-4296-90d3-cb0769f4a369">
Clique em `Recarregar Geo` (Reload Geo) e sua lista deve ficar semelhante a esta. <br>
<img width="500" alt="image" src="https://github.com/rustdesk/doc.rustdesk.com/assets/642149/5a0d39a9-4fec-46b4-a7a2-7ed38b6baeb7">
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
```