OpenThinRDP

OpenThinRDP

Il sistema operativo per thin client open source con l'RDP su UDP
per Desktop remoto Windows, RDS e VDI: FreeRDP con il trasporto UDP che la versione ufficiale non ha ancora.

⬇ Scarica la ISO (ultima versione)  ·  Provalo in live, senza installare niente  ·  Sito  ·  English

Menu di avvio: prova in live o installa Form di accesso Impostazioni della postazione

OpenThinRDP trasforma piccoli PC e vecchi thin client in postazioni che si accendono direttamente sul form di
accesso e si collegano a Windows: tramite il broker RDS al desktop o alla VM dell'utente, oppure direttamente a
un host di sessione o a qualsiasi PC Windows con Desktop remoto attivo, in sede o nel cloud (Azure, AWS,
qualsiasi fornitore). Si gestiscono da una cartella condivisa con un piccolo gestore Windows: stato di ogni
postazione, configurazione centrale, logo, aggiornamenti firmati, e lo schermo di qualsiasi postazione nel browser.
Niente agenti, niente server di gestione, nessun servizio cloud da cui dipendere, nessuna licenza per postazione.

Non è openthinclient. OpenThinRDP è un progetto nuovo e indipendente, senza alcun legame con openthinclient: i
nomi si somigliano, nient'altro è in comune. openthinclient è un progetto più vecchio in cui le postazioni si avviano
da rete (PXE) dal suo server di gestione; OpenThinRDP si installa su ogni postazione o gira live da una chiavetta
USB, non ha bisogno di un server ed è costruito attorno a RDP con il trasporto UDP di FreeRDP.

È nato da una migrazione reale da un sistema thin client commerciale, su un parco di Dell OptiPlex 3000 Thin
Client collegati a una VDI Windows 11 su Hyper-V, dove il sistema da cui deriva lavora ogni giorno.

Stato: in produzione ogni giorno. Fa girare tutti i thin client dell'azienda da cui nasce: 14 Dell OptiPlex
3000 Thin Client in ufficio, alle casse, in laboratorio, alle pese e uno schermo a parete in Wi-Fi, con una
VDI Windows 11 su Hyper-V dietro due RD Connection Broker, con accesso Kerberos e NTLM di riserva. Le postazioni
sono state convertite sul posto dal sistema che avevano prima e ricevono ogni versione dalla loro cartella di
gestione (il gestore controlla ogni release di GitHub e la firma di nuovo con la chiave del sito), installata
durante le sessioni e applicata quando la sessione finisce. Gli aggiornamenti di sicurezza di FreeRDP arrivano in OpenThinRDP
entro 7 giorni (la 3.32.2: in quattro ore). La ISO è provata in QEMU/KVM
con Secure Boot a ogni versione e i test di sistema girano a ogni commit
(CI). Cosa è in produzione, cosa è solo
provato e cosa non c'è ancora: docs/status.md. Provatela in live, poi su una postazione,
prima di estenderla.

RDP su UDP che regge anche su una linea pessima

Tutto è partito da una porta di switch guasta che perdeva il 43% dei pacchetti grandi: in TCP il desktop remoto
si bloccava. Abbiamo riprodotto quella linea e poi alzato la perdita su tutti i pacchetti della macchina virtuale
un gradino alla volta (VDI Windows 11, carico a schermo intero che cambia ogni pixel, fotogrammi misurati dal
server):

pacchetti persi in TCP OpenThinRDP in UDP
20% 0,6 fotogrammi al secondo: lo schermo quasi non si muove non misurato (19-21 fps al 50%)
43% di quelli grandi* (la porta guasta) 0-0,1 fps 16-21 fps, 7 minuti di fila
50% non misurato (0,2 fps già al 30%) 19-21 fps, come su una linea pulita
70% non misurato 18-19 fps**
80% non misurato 4 fps, poi il tunnel si arrende

* Le altre righe perdono quella quota di tutti i pacchetti; questa il 43% dei pacchetti grandi e il 5% dei piccoli.
** Al 70% la connessione TCP che RDP tiene accanto al tunnel può chiudere la sessione dopo 20 s senza conferme.
Un solo ambiente (Dell OptiPlex 3000 Thin Client, VDI Windows 11 su Hyper-V), perdita simulata con netem:
metodo e script per avere i vostri numeri.

Per arrivarci è servita una correzione al trasporto UDP di FreeRDP, che abbiamo trovato e segnalato in
#13608 e che ora ne fa parte. Tutti i gradini e i numeri del TCP:
docs/udp.md.

Per chi è

Non (ancora) per voi: Citrix, VMware/Omnissa Horizon e altri protocolli (OpenThinRDP fa solo RDP), dispositivi
ARM (il Raspberry Pi 4 è in preparazione), PC solo a 32 bit.

Requisiti

Minimo
Dispositivo qualsiasi PC o thin client x86 a 64 bit, UEFI (Secure Boot supportato, non obbligatorio) o BIOS tradizionale: vanno bene anche i vecchi PC d’ufficio e i thin client usati
Driver il kernel Debian 13 completo e tutti i pacchetti firmware di Debian: quello che fa girare Debian 13 fa girare OpenThinRDP
Memoria 2 GB di RAM
Spazio 8 GB per installarlo (eMMC, SSD o disco); nessuno per provarlo in live da una chiavetta
Rete cavo, Wi-Fi o un adattatore Ethernet USB; WPA2/WPA3 personale o Enterprise, e 802.1X sul cavo
TPM 2.0 facoltativo: se c'è, i segreti del dispositivo (password della cartella di gestione, chiave Wi-Fi, chiavi SSH) restano cifrati dentro il TPM (sicurezza); senza, funziona uguale
Lato Windows un broker RDS (host di sessione o raccolta VDI su Hyper-V), oppure qualsiasi PC o server Windows che accetti il Desktop remoto (Pro, Enterprise, Server), in sede o in qualsiasi cloud

Hardware provato e impostazioni del firmware: docs/hardware.md.

Provarlo in cinque minuti

  1. Scaricate openthinrdp-<versione>.iso e scrivetela
    su una chiavetta con qualsiasi programma che scriva immagini (Rufus in modalità DD, balenaEtcher, dd).
  2. Avviate il PC dalla chiavetta. Il menu fa partire da solo il sistema live dopo 10 secondi: gira dalla
    chiavetta e non scrive mai sul disco.
  3. Con la rete, se su GitHub c'è una versione più nuova di quella della ISO chiede se scaricarla o usare quella
    della ISO (senza risposta in 30 secondi scarica la nuova): la ISO non serve riscaricarla a ogni versione. Poi si
    apre la configurazione: impostate il broker (o il nome di un PC Windows) e il dominio, salvate, accedete.
  4. Vi piace? Riavviate e scegliete Install: mostra il disco che sta per cancellare e chiede conferma prima
    di scrivere qualsiasi cosa (confermate per proseguire), poi circa tre minuti. Installa sul primo disco interno, mai
    su un disco USB (nemmeno la chiavetta). Per le installazioni in serie, Unattended install salta la domanda.

Cosa serve al dispositivo: Requisiti.

Cosa fa

Avvio del desktop con i passi reali Fine sessione con conto alla rovescia Aggiornamento in corso

Il gestore: tutto il parco in una finestra

OpenThinRDP-Manager è un unico script PowerShell per Windows 10/11 (in italiano e in inglese, niente da installare)
che lavora sulla cartella condivisa dove le postazioni scrivono il loro stato. Niente server, niente agenti, niente
database: quello che vedete sono i file della cartella.

Gestore: ogni postazione con stato, utente e versione, e le sue impostazioni Gestore, pagina Aggiornamenti: tutte le postazioni su una versione, una postazione pilota sulla più nuova

Tutto quello che fa, pagina per pagina, con i passi per un gruppo pilota e per tornare indietro (in inglese):
docs/manager.md.

Schermi che mostrano solo una pagina web

La stessa immagine fa funzionare gli schermi che non hanno mai bisogno di un desktop Windows: una TV nella hall,
una dashboard in ufficio, un punto informativo, un tabellone in produzione. Con WEB_BUTTON=kiosk e KIOSK_URL:

Impostazioni: docs/configuration.md.

Perché è fatto così

Perché FreeRDP non si aggiorna da solo. Gli aggiornamenti di sicurezza di Debian si installano da soli, ma
FreeRDP è escluso. Primo, l'immagine contiene un FreeRDP compilato con l'UDP, che i pacchetti Debian
sostituirebbero con una versione senza. Secondo, il client di desktop remoto è la parte da cui dipendono gli
utenti: una versione nuova può cambiare il comportamento di sessioni, dispositivi USB, smart card o grafica, e su un
parco di postazioni un difetto ferma tutti nello stesso momento. Per questo FreeRDP arriva con le release di
OpenThinRDP, dopo la prova su postazioni vere, e si può comunque bloccare su una singola postazione
(/etc/openthinrdp/freerdp-pinned).

Perché l'UDP da una pull request non ancora unita. In TCP un server carico o una linea con perdite fanno
restare indietro lo schermo; in UDP Windows abbassa invece la qualità. Nelle nostre prove la pull request è solida,
e l'unico modo perché venga unita è che qualcuno la usi e segnali. TRANSPORT=tcp è a un'impostazione di
distanza, e l'immagine segue il codice di FreeRDP mentre cambia.

Perché una cartella condivisa e non un server di gestione. Ogni rete Windows ha già una condivisione e
qualcuno che ne gestisce i permessi. Le postazioni leggono e scrivono solo file lì: niente da installare,
aggiornare o licenziare lato server, e le impostazioni sono file di testo che si leggono, si confrontano e si
salvano.

Perché Debian. Stabile, aggiornamenti di sicurezza per anni, tutti i driver e i firmware, e sopra un kiosk
che si può leggere: tutta la parte client sono pochi script in rootfs/opt/openthinrdp.

Confronto

OpenThinRDP Dell ThinOS IGEL OS Stratodesk NoTouch ThinStation
Costo gratuito incluso nei thin client Dell abbonamento per postazione licenza per postazione gratuito
Sorgente aperto (Apache 2.0) chiuso chiuso chiuso aperto
Gira su PC e thin client x86-64, UEFI o BIOS thin client Dell molti dispositivi x86-64 PC x86-64, Raspberry Pi PC x86
Protocolli solo RDP Citrix, Omnissa/VMware, Microsoft e altri Citrix, Omnissa/VMware, Microsoft e altri molti molti (immagine da costruire)
Gestione cartella condivisa + strumento Windows, nessun server Wyse Management Suite server UMS NoTouch Center file di configurazione su un server di rete
Aggiornamenti firmati, da GitHub o dalla vostra cartella firmware del produttore del produttore del produttore si ricostruisce l'immagine
Installazione ISO, live o installazione automatica preinstallato installatore o preinstallato installatore si costruisce, poi PXE o USB

Se servono Citrix o Horizon, il supporto di un produttore o hardware certificato, i sistemi commerciali sono la
scelta giusta. OpenThinRDP è per le reti basate su Desktop remoto Windows che vogliono un client libero, gratuito
e semplice da gestire, e per chi vuole mettere al lavoro il trasporto UDP di FreeRDP. I nomi dei prodotti sono
marchi dei rispettivi proprietari; il confronto riflette informazioni pubbliche e la nostra comprensione,
correzioni benvenute.

Ognuno più nel dettaglio, e Linux Mint o Ubuntu con Remmina: docs/alternatives.md (in inglese).
Le domande che si fanno per prime (hardware, driver, UDP, Azure, PXE, 802.1X): docs/faq.it.md.

I prossimi passi

Le idee che vorremmo realizzare, più o meno in quest'ordine. Diteci in una issue quali vi servono, o mandate una
pull request:

Costruire la propria immagine

Con il vostro logo, broker, impostazioni e chiavi già dentro (Linux con Docker o Podman):

cp -r image/site.example image/site      # poi modificare site.conf, build.conf, aggiungere il logo
image/build.sh                           # -> out/openthinrdp-<versione>.iso

Vedi docs/building.md.

Documentazione

La documentazione è in inglese nella cartella docs.

Struttura

Cartella Contenuto
rootfs/ tutto quello che si installa sul thin client (/opt/openthinrdp, regole udev, unità systemd)
image/ la costruzione della ISO (live-build in un container), la compilazione di FreeRDP e la cartella del sito di esempio
management/windows/ il gestore Windows (PowerShell, nessuna installazione)
management/publish/ costruzione e firma dei pacchetti di aggiornamento
tests/ test che girano in un container Debian

Contribuire

Issue e pull request sono benvenute, anche in italiano. Per tutto ciò che riguarda connessioni o dispositivi,
descrivete l'hardware e il lato Windows (broker, versione dell'host di sessione). I problemi di sicurezza vanno segnalati in privato,
vedi SECURITY.md. Come contribuire: CONTRIBUTING.md; regole di convivenza:
CODE_OF_CONDUCT.md.

Licenza

Apache License 2.0, vedi LICENSE. OpenThinRDP usa FreeRDP (Apache 2.0), il visore noVNC dello schermo remoto
(incluso senza modifiche, MPL 2.0 e BSD, rootfs/opt/openthinrdp/novnc) e pacchetti Debian con le loro
licenze. Windows e Desktop remoto sono marchi di Microsoft; il progetto non è affiliato a Microsoft né ai
produttori citati.