# RDP-FIDO-GATE — instalação e configuração (passo a passo)

Área de Trabalho Remota (RDP) segura com uma **barreira obrigatória de chave física FIDO2/WebAuthn**. A porta RDP
permanece bloqueada pelo firewall o tempo todo e abre **somente para o seu IP, por cerca de 90 segundos**, depois que você toca
a chave. Requer Windows 10 1903+ (WebAuthn + Windows Firewall). Não há serviço hospedado — você
baixa e instala por conta própria.

Dois componentes e suas portas:

| Componente | Onde é executado | Portas |
|-----------|---------------|-------|
| **Gate** | máquina de destino (o PC ao qual você se conecta) | **7440/TCP** — controle + confirmação FIDO; **3389/TCP** — RDP (aberto sob demanda) |
| **Client** | sua máquina | conexões de saída para as portas 7440 e 3389 do host |
| **FIDO Stream** (opcional) | host | **7441/UDP** — vídeo, áudio e entrada do modo de baixa latência; aberta por sessão, somente para o seu IP |

---

## Step 1. Host — instalar o gate

1. Baixe **[RdpFido-Setup.exe](https://accounts.new-imobile.com/updates/RdpFido-Setup.exe)** na máquina de destino, execute-o e escolha **Host** (o Windows pedirá confirmação de administrador). Ele instala o gate; você também pode baixar diretamente **[RdpFidoGate-Setup.msi](https://accounts.new-imobile.com/updates/RdpFidoGate-Setup.msi)**.
2. O instalador habilita a Remote Desktop (com NLA), vincula um certificado TLS à porta do gate **7440** e registra e inicia o serviço do gate. A porta RDP continua funcionando como antes — ela só fecha no momento do registro da primeira chave.
3. A última página do instalador mostra um **código de registro de uso único** (válido por 15 minutos, com botão "Copiar código"), além dos endereços da máquina e da porta do gate.
4. **Anote:** o endereço do host (nome / IP público), a porta **7440** e o **código**. Se o código expirar, execute `RdpFidoGate.exe code` como administrador.

Instalação silenciosa (por exemplo, de um sistema de gerenciamento): `msiexec /i RdpFidoGate-Setup.msi /qn`

Sem supervisão com o instalador combinado: `RdpFido-Setup.exe host`

---

## Step 2. Encaminhamento de portas no roteador (se o host estiver atrás de NAT/um roteador) — OBRIGATÓRIO para acesso pela internet

Se você se conecta **pela internet** e a máquina de destino fica atrás de um roteador doméstico/de escritório, você
precisa **encaminhar duas portas** no roteador para o endereço LAN do host. Sem isso o cliente não alcança
nem o gate nem o RDP.

Encaminhe (Port Forwarding / Virtual Servers / NAT na administração do roteador):

| Porta externa | Protocolo | → IP interno (LAN do host) | Porta interna |
|---------------|----------|--------------------------|---------------|
| **7440** | TCP | `192.168.x.x` (IP LAN do host) | **7440** |
| **3389** | TCP | mesmo IP LAN do host | **3389** |
| **7441** | UDP | mesmo IP LAN do host | **7441** — somente se você usar o FIDO Stream pela internet |

Procedimento:
1. Encontre o IP LAN do host: `ipconfig` → "Endereço IPv4" (ex.: `192.168.1.50`).
2. **Reserve esse endereço** para o host (reserva DHCP por MAC no roteador) — caso contrário ele pode mudar.
3. No roteador: **Port Forwarding / Virtual Servers** → adicione as duas regras da tabela
   (porta externa = porta interna, protocolo TCP, IP interno = LAN do host).
4. Encontre o seu **IP público** (no host abra `https://api.ipify.org`, ou o "WAN IP" do roteador). Se o seu
   IP for **dinâmico**, configure **DDNS** (no roteador ou via no-ip/DuckDNS) e use o nome DDNS em vez do IP.

> Segurança: apenas o gate (7440) escuta externamente. O RDP (3389) fica **fechado** de fora até você
> confirmar com a chave — então ele abre de forma estreita, apenas para o seu IP, por ~90s. Encaminhar a 3389 não
> concede acesso por si só; apenas deixa a "janela" temporária passar pelo roteador.

---

## Step 3. Client — instalar e registrar

1. Instale o cliente: execute **[RdpFido-Setup.exe](https://accounts.new-imobile.com/updates/RdpFido-Setup.exe)** e escolha **Client** (por usuário, sem direitos de administrador), ou diretamente **[RdpFidoClient-Setup.msi](https://accounts.new-imobile.com/updates/RdpFidoClient-Setup.msi)**.
2. **Ativação** via AccountServer: informe o seu e-mail → um código é enviado a você por e-mail → digite-o.
   Período de tolerância de ativação de 14 dias; nível gratuito = até 10 sessões salvas, pago = sem limite.
3. **Adicionar uma sessão:**
   - Endereço: o IP público ou o nome DDNS do host (do Step 2), ou o endereço LAN se você estiver na mesma rede.
   - Porta do gate: **7440**.
   - Protocolo: **RDP (mstsc)** ou **FIDO Stream** — veja o Step 5.
   - Digite o **código de uso único** do Step 1 e **registre sua chave FIDO2** (toque).

---

## Step 4. Conectar

Escolha a sessão → **toque a chave** → o gate a verifica e **abre a 3389 para o seu IP atual por
~90s** → o cliente inicia o `mstsc` e conecta você automaticamente. A cada 30s o gate reaplica o
bloqueio, de modo que a janela permanece estreita e restrita ao IP.

---

## Step 5 (opcional). FIDO Stream — modo de baixa latência para jogos e vídeo

O FIDO Stream é um segundo modo de conexão ao lado do RDP: a tela e o áudio do host e a sua entrada vão por UDP com codificação por hardware, de modo que a latência "clique-a-fóton" em uma LAN fica em torno de 25–45 ms. O mesmo toque na chave o abre; o gate abre a UDP 7441 somente para o seu IP e somente durante a sessão. Nada extra é instalado: o agente do host está dentro do gate, o visualizador dentro do cliente (gate versão 1.15 ou mais recente no host).

1. Nas configurações da sessão escolha **Protocolo: FIDO Stream (jogos, baixa latência)**.
2. Deixe as configurações em **Automático** na primeira tentativa. O que elas significam:
   - **Equilíbrio** — um controle deslizante de **Link ruim** (resolução menor, HEVC, mais correção de erros) até **PCs fracos** (apenas codificador por hardware, preset mais rápido, resolução nativa); **Ajustar o equilíbrio automaticamente** o move em direção ao gargalo atual.
   - **Áudio do host** e **Enviar meu microfone para o host** — som nas duas direções.
   - **Capturar o mouse ao iniciar (para jogos)** — movimento relativo do mouse para jogos de tiro.
   - **Conexão** — **Automática (atravessar o NAT)**, **Este computador chama o host** (requer a 7441/UDP encaminhada para o host) ou **O host chama este computador** (quando o seu PC tem um endereço público).
   - **Codificador (host)** — Automático / NVIDIA NVENC (direto) / Hardware (qualquer GPU) / Software (CPU); **Decodificador** — Automático / Hardware (GPU) / Software (CPU).
3. Conecte-se como de costume: escolha a sessão → toque a chave → a janela do stream se abre.

Teclas de atalho na janela do stream: **Ctrl+Alt+Home** captura/libera o mouse, **Ctrl+Alt+Enter** alterna a tela cheia, **Ctrl+Alt+End** desconecta.

Requisitos: Windows 10 1903+ em ambos os lados; para a menor latência, uma GPU com codificador por hardware no host (NVIDIA, Intel ou AMD). O HEVC é usado somente quando o cliente tem um decodificador por GPU; caso contrário, o stream volta automaticamente para H.264. Diagnóstico no host (como administrador): `RdpFidoGate.exe stream encoders` lista os codificadores disponíveis, `RdpFidoGate.exe stream encoders --bench` mede cada um, `RdpFidoGate.exe stream selftest` executa captura → codificação → decodificação sem rede. Os detalhes são gravados em `gate.log` no host e em `client.log` no cliente.

---

## Verificação e solução de problemas

- A partir do cliente: `Test-NetConnection <public-ip-or-DDNS> -Port 7440` → deve dar
  `TcpTestSucceeded : True`. Se `False` — a porta 7440 não está encaminhada, ou o firewall do host a bloqueia.
- A porta **3389 fica fechada de fora até você confirmar com a chave** — isso é esperado (não a teste antes do toque).
- "A sessão não abre": verifique se 1) o serviço do gate está em execução no host, 2) **ambas** as portas
  estão encaminhadas no roteador para o IP LAN atual do host, 3) o IP público não mudou (use DDNS se for dinâmico).
- Vários hosts atrás de um roteador: use portas externas distintas (ex.: host-2 → externa 7441→7440,
  3390→3389) e digite essas portas externas na sessão do cliente.
- O FIDO Stream não inicia: o gate no host deve ser da versão 1.15 ou mais recente (o cliente informa isso), e para acesso pela internet ou a 7441/UDP está encaminhada para o host ou a sessão usa **O host chama este computador**.

---

## Desinstalação

No host, como administrador: `powershell -ExecutionPolicy Bypass -File Uninstall-Gate.ps1`
(remove o serviço, restaura as regras do firewall). Depois, opcionalmente, remova as regras de encaminhamento de portas no roteador.
