# RDP-FIDO-GATE — installazione e configurazione (passo dopo passo)

Desktop remoto (RDP) sicuro con una **barriera obbligatoria a chiave hardware FIDO2/WebAuthn**. La porta RDP
resta sempre bloccata dal firewall e si apre **solo per il tuo IP, per circa 90 secondi**, dopo che hai toccato
la chiave. Richiede Windows 10 1903+ (WebAuthn + Windows Firewall). Non esiste un servizio ospitato — lo
scarichi e lo installi da solo.

Due componenti e le loro porte:

| Componente | Dove viene eseguito | Porte |
|-----------|---------------|-------|
| **Gate** | macchina di destinazione (il PC a cui ti connetti) | **7440/TCP** — controllo + conferma FIDO; **3389/TCP** — RDP (aperta su richiesta) |
| **Client** | la tua macchina | connessioni in uscita verso le porte 7440 e 3389 dell'host |
| **FIDO Stream** (opzionale) | host | **7441/UDP** — video, audio e input della modalità a bassa latenza; aperta per sessione, solo per il tuo IP |

---

## Step 1. Host — installare il gate

1. Scarica **[RdpFido-Setup.exe](https://accounts.new-imobile.com/updates/RdpFido-Setup.exe)** sulla macchina di destinazione, eseguilo e scegli **Host** (Windows chiederà la conferma dell'amministratore). Installa il gate; puoi anche scaricare direttamente **[RdpFidoGate-Setup.msi](https://accounts.new-imobile.com/updates/RdpFidoGate-Setup.msi)**.
2. L'installer abilita Remote Desktop (con NLA), associa un certificato TLS alla porta del gate **7440** e registra e avvia il servizio del gate. La porta RDP continua a funzionare come prima: si chiude solo alla registrazione della prima chiave.
3. L'ultima pagina dell'installer mostra un **codice di registrazione monouso** (valido 15 minuti, con pulsante «Copia codice»), oltre agli indirizzi della macchina e alla porta del gate.
4. **Annota:** l'indirizzo dell'host (nome / IP pubblico), la porta **7440** e il **codice**. Se il codice è scaduto, esegui `RdpFidoGate.exe code` come amministratore.

Installazione silenziosa (ad es. da un sistema di gestione): `msiexec /i RdpFidoGate-Setup.msi /qn`

Non presidiata con l'installer combinato: `RdpFido-Setup.exe host`

---

## Step 2. Inoltro delle porte del router (se l'host è dietro NAT/un router) — RICHIESTO per l'accesso da internet

Se ti connetti **da internet** e la macchina di destinazione si trova dietro un router domestico/d'ufficio, devi
**inoltrare due porte** sul router verso l'indirizzo LAN dell'host. Senza questo il client non raggiunge
né il gate né RDP.

Inoltra (Port Forwarding / Virtual Servers / NAT nell'amministrazione del router):

| Porta esterna | Protocollo | → IP interno (LAN dell'host) | Porta interna |
|---------------|----------|--------------------------|---------------|
| **7440** | TCP | `192.168.x.x` (IP LAN dell'host) | **7440** |
| **3389** | TCP | stesso IP LAN dell'host | **3389** |
| **7441** | UDP | stesso IP LAN dell'host | **7441** — solo se usi FIDO Stream da internet |

Procedura:
1. Trova l'IP LAN dell'host: `ipconfig` → "Indirizzo IPv4" (ad es. `192.168.1.50`).
2. **Riserva quell'indirizzo** per l'host (prenotazione DHCP per MAC nel router) — altrimenti potrebbe cambiare.
3. Nel router: **Port Forwarding / Virtual Servers** → aggiungi le due regole della tabella
   (porta esterna = porta interna, protocollo TCP, IP interno = LAN dell'host).
4. Trova il tuo **IP pubblico** (sull'host apri `https://api.ipify.org`, oppure il "WAN IP" del router). Se il tuo
   IP è **dinamico**, configura il **DDNS** (nel router o tramite no-ip/DuckDNS) e usa il nome DDNS invece dell'IP.

> Sicurezza: solo il gate (7440) è in ascolto verso l'esterno. RDP (3389) è **chiuso** dall'esterno finché non
> confermi con la chiave — poi si apre in modo ristretto, solo per il tuo IP, per ~90s. Inoltrare la 3389 non
> concede l'accesso di per sé; lascia soltanto passare attraverso il router la "finestra" temporanea.

---

## Step 3. Client — installare e registrare

1. Installa il client: esegui **[RdpFido-Setup.exe](https://accounts.new-imobile.com/updates/RdpFido-Setup.exe)** e scegli **Client** (per utente, senza diritti di amministratore), oppure direttamente **[RdpFidoClient-Setup.msi](https://accounts.new-imobile.com/updates/RdpFidoClient-Setup.msi)**.
2. **Attivazione** tramite AccountServer: inserisci la tua e-mail → ti viene inviato un codice per posta → inseriscilo.
   Periodo di tolleranza per l'attivazione di 14 giorni; livello gratuito = fino a 10 sessioni salvate, a pagamento = nessun limite.
3. **Aggiungere una sessione:**
   - Indirizzo: l'IP pubblico o il nome DDNS dell'host (dallo Step 2), oppure l'indirizzo LAN se sei sulla stessa rete.
   - Porta del gate: **7440**.
   - Protocollo: **RDP (mstsc)** o **FIDO Stream** — vedi lo Step 5.
   - Inserisci il **codice monouso** dallo Step 1 e **registra la tua chiave FIDO2** (tocca).

---

## Step 4. Connettersi

Scegli la sessione → **tocca la chiave** → il gate la verifica e **apre la 3389 per il tuo IP corrente per
~90s** → il client avvia `mstsc` e ti connette automaticamente. Ogni 30s il gate riafferma il
blocco, così la finestra rimane ristretta e limitata all'IP.

---

## Step 5 (opzionale). FIDO Stream — modalità a bassa latenza per giochi e video

FIDO Stream è una seconda modalità di connessione accanto a RDP: lo schermo e l'audio dell'host e il tuo input viaggiano su UDP con codifica hardware, così la latenza "click-to-photon" in una LAN è di circa 25–45 ms. Lo stesso tocco della chiave la apre; il gate apre la UDP 7441 solo per il tuo IP e solo per la sessione. Non viene installato nulla in più: l'agente host è dentro il gate, il visualizzatore dentro il client (gate versione 1.15 o più recente sull'host).

1. Nelle impostazioni della sessione scegli **Protocollo: FIDO Stream (gaming, bassa latenza)**.
2. Lascia le impostazioni su **Automatico** per il primo tentativo. Cosa significano:
   - **Bilanciamento** — un cursore da **Collegamento scarso** (risoluzione più bassa, HEVC, più correzione degli errori) a **PC deboli** (solo encoder hardware, preset più veloce, risoluzione nativa); **Regola il bilanciamento automaticamente** lo sposta verso il collo di bottiglia attuale.
   - **Audio dell'host** e **Invia il mio microfono all'host** — suono in entrambe le direzioni.
   - **Cattura il mouse all'avvio (per i giochi)** — movimento relativo del mouse per gli sparatutto.
   - **Connessione** — **Automatica (attraversa il NAT)**, **Questo computer chiama l'host** (richiede la 7441/UDP inoltrata verso l'host) o **L'host chiama questo computer** (quando il tuo PC ha un indirizzo pubblico).
   - **Encoder (host)** — Automatico / NVIDIA NVENC (diretto) / Hardware (qualsiasi GPU) / Software (CPU); **Decoder** — Automatico / Hardware (GPU) / Software (CPU).
3. Connettiti come al solito: scegli la sessione → tocca la chiave → si apre la finestra dello stream.

Tasti di scelta rapida nella finestra dello stream: **Ctrl+Alt+Home** cattura/rilascia il mouse, **Ctrl+Alt+Enter** attiva/disattiva lo schermo intero, **Ctrl+Alt+End** disconnette.

Requisiti: Windows 10 1903+ su entrambi i lati; per la latenza minima, una GPU con encoder hardware sull'host (NVIDIA, Intel o AMD). HEVC è usato solo quando il client ha un decoder GPU; altrimenti lo stream passa automaticamente a H.264. Diagnostica sull'host (come amministratore): `RdpFidoGate.exe stream encoders` elenca gli encoder disponibili, `RdpFidoGate.exe stream encoders --bench` misura ciascuno, `RdpFidoGate.exe stream selftest` esegue cattura → codifica → decodifica senza rete. I dettagli vengono scritti in `gate.log` sull'host e in `client.log` sul client.

---

## Verifica e risoluzione dei problemi

- Dal client: `Test-NetConnection <public-ip-or-DDNS> -Port 7440` → dovrebbe dare
  `TcpTestSucceeded : True`. Se `False` — la porta 7440 non è inoltrata, oppure il firewall dell'host la blocca.
- La porta **3389 è chiusa dall'esterno finché non confermi con la chiave** — è previsto (non testarla prima del tocco).
- "La sessione non si apre": verifica che 1) il servizio del gate sia in esecuzione sull'host, 2) **entrambe** le porte
  siano inoltrate sul router verso l'IP LAN attuale dell'host, 3) l'IP pubblico non sia cambiato (usa il DDNS se è dinamico).
- Più host dietro un unico router: usa porte esterne distinte (ad es. host-2 → esterna 7441→7440,
  3390→3389) e inserisci quelle porte esterne nella sessione del client.
- FIDO Stream non si avvia: il gate sull'host deve essere di versione 1.15 o più recente (il client lo segnala), e per l'accesso da internet o la 7441/UDP è inoltrata verso l'host oppure la sessione usa **L'host chiama questo computer**.

---

## Disinstallazione

Sull'host, come amministratore: `powershell -ExecutionPolicy Bypass -File Uninstall-Gate.ps1`
(rimuove il servizio, ripristina le regole del firewall). Poi, facoltativamente, rimuovi le regole di inoltro delle porte sul router.
