Azioni

Differenze tra le versioni di "Thin client RDP con GNU/Linux e Remmina"

Da MontelLUG WIKI.

(Aggiornata la guida - provvisoria)
 
(4 versioni intermedie di uno stesso utente non sono mostrate)
Riga 1: Riga 1:
Appunti sulla preparazione di un ''thin client'' RDP. Utente Odeeno, ultimo aggiornamento 03/2021 - ''in aggiornamento''. Fasi della configurazione:
+
Mi ritrovo un vecchio Dell Optiplex FX160 fanless inutilizzato, perchè scarso di tutto (cpu, memoria, disco, connettività) e perchè non lo uso più per il progetto per cui l'avevo preso (server casalingo). Utilizzarlo ''stand alone'' è diventato problematico anche per un uso minimale di navigazione, perchè i browser oramai hanno bisogno di risorse per fare qualunque cosa. Però d'altra parte ho bisogno di un PC per lavorare da remoto in ''smart working'': "perchè non utilizzare questo PC utilizzandolo come ''thin client''?" mi son chiesto.
 +
 
 +
Segue perciò una serie di appunti sulla preparazione di un ''thin client'' RDP. Ho deciso di pubblicarli perchè la stessa cosa la può fare chiunque abbia a casa un computer dalle prestazioni scarse, per utilizzarlo come sistema per collegarsi ad altro computer più potente.
 +
 
 +
Utente Odeeno, ultimo aggiornamento 03/2021 - ''in aggiornamento''. Fasi della configurazione:
  
 
== Installare Debian base ==
 
== Installare Debian base ==
 
Primo passo è stato installare un sistema operativo base (senza ambiente grafico). Per mia scelta e conoscenza ho scelto Debian, con un immagine ''net-install'', nella versione ''stable'' per avere la massima stabilità e non dover tendenzialmente doverci rimettere le mani.  
 
Primo passo è stato installare un sistema operativo base (senza ambiente grafico). Per mia scelta e conoscenza ho scelto Debian, con un immagine ''net-install'', nella versione ''stable'' per avere la massima stabilità e non dover tendenzialmente doverci rimettere le mani.  
  
Non spiego come fare, perché non è oggetto di questa guida: l'unica opzione specifica che ho scelto è stata l'installazione automatico degli aggiornamenti di sicurezza. Come scritto, non serve installare alcun ambiente grafico in questa fase: nella fase di ''tasksel'' ho optato solo per l'installazione delle utilità di base ed il ''server ssh'', che può tornar utile per il resto dell'installazione o per necessità di manutenzione.
+
Non spiego come fare, perché non è oggetto di questa guida: l'unica opzione specifica che ho scelto è stata l'installazione in automatico degli aggiornamenti di sicurezza. Come scritto, non serve installare alcun ambiente grafico in questa fase: nella fase di ''tasksel'' ho optato solo per l'installazione delle utilità di base ed il ''server ssh'', che può tornar utile per il resto dell'installazione o per necessità di manutenzione: [[How-to login in SSH con una chiave criptografica|(vedere questa guida se di interesse)]].
  
 
Il sistema è ridotto al minimo, ma non sono state fatte particolari scelte di ottimizzazione o semplificazione: es. moduli installati, kernel, driver specifici, ecc... Il primo test vien fatto allo scopo che funzioni, poi verranno fatte le ottimizzazioni (che tra l'altro potrebbero dipendere dalla distribuzione scelta).
 
Il sistema è ridotto al minimo, ma non sono state fatte particolari scelte di ottimizzazione o semplificazione: es. moduli installati, kernel, driver specifici, ecc... Il primo test vien fatto allo scopo che funzioni, poi verranno fatte le ottimizzazioni (che tra l'altro potrebbero dipendere dalla distribuzione scelta).
Riga 10: Riga 14:
 
Terminata l'installazione e riavviato il sistema ho creato un nuovo utente, non amministratore, che poi sarà utilizzato per l'avvio del ''thin-client'':
 
Terminata l'installazione e riavviato il sistema ho creato un nuovo utente, non amministratore, che poi sarà utilizzato per l'avvio del ''thin-client'':
  
<code> sudo adduser thiny </code>  
+
<code> sudo adduser thiny </code>
 +
 
 +
Consigliabile poi impostare il sistema affinché abbia un IP fisso della scheda di rete:
 +
 
 +
<code> sudo nano /etc/network/interfaces </code>
 +
 
 +
dove vanno aggiunte queste righe (gli IP vanno personalizzati):
 +
 
 +
  iface enp2s0 inet static
 +
  address 192.168.1.65
 +
  netmask 255.255.255.0
 +
  gateway 192.168.1.1
 +
 
 +
 
 +
Poi ho impostato GRUB (il boot manager) affinchè parta senza attendere:
 +
 
 +
<code> sudo nano /etc/default/grub </code>
 +
 
 +
Impostare:
  
 +
  GRUB_TIMEOUT=0
 +
 +
 +
Impostato il tempo di attesa a zero, salvo, chiudo e do:
 +
 +
<code> sudo update-grub </code>
  
 
== Installare un windows manager basilare ==
 
== Installare un windows manager basilare ==
Riga 30: Riga 58:
  
 
== Configurazione di Remmina ==
 
== Configurazione di Remmina ==
Come scritto Remmina, è stato scelto per una comodità nella configurazione. Su altro computer è installato il programma ed è presente una configurazione pronta, funzionante ed ottimizzata del programma che è stata copiata nella cartella /home/thiny/configurazione-di-esempio.remmina
+
Come scritto Remmina, è stato scelto per una comodità nella configurazione. Creo un link alla cartella usata da Remmina per salvare le proprie configurazioni: ci troviamo nella cartella /home/thiny
In caso di necessità di cambiamenti, configurazioni di dispositivi USB, reti, utente, webcam, smartcard ed altro, la configurazione verrà provata e testata su altro PC e copiata (anche via ssh) sulla cartella su indicata per il successivo riavvio.   
+
 
 +
<code> ln -sd .local/share/remmina/ remmina_confs </code>
 +
 
 +
Su altro computer è installato il programma ed è presente una configurazione pronta, funzionante ed ottimizzata del programma che è stata copiata nella cartella /home/thiny/remmina_confs/configurazione-di-esempio.remmina  
 +
 
 +
In caso di necessità di cambiamenti nelle configurazioni di dispositivi USB, reti, utente, webcam, smartcard ed altro, la configurazione verrà provata e testata su altro PC e copiata (anche via ssh) sulla cartella su indicata per il successivo riavvio.   
 +
 
 +
Creo poi un link al file di configurazione che mi interessa: questo mi agevola se poi dovessi scegliere una configurazione di default diversa:
 +
 
 +
<code> ln -s remmina_confs/configurazione-di-esempio.remmina remmina_confs/auto_start.remmina </code>
  
 
== Setup per l'avvio automatico ==
 
== Setup per l'avvio automatico ==
Vogliamo infine che il sistema faccia partire automaticamente Remmina all'avvio: non interessa far fare all'utente il login sul sistema Debian. Deve presentarsi direttamente la schermata per l'inserimento di utente e password di login sul desktop remoto.
+
Vogliamo infine che il sistema faccia partire automaticamente Remmina all'avvio di Openbox: non interessa poi far fare all'utente il login sul sistema Debian. Deve presentarsi direttamente la schermata per l'inserimento di utente e password di login sul desktop remoto per iniziare a lavorare.
 +
 
 +
=== Autostart di Openbox ===
  
 
Facciamo partire automaticamente Openbox al login dell'utente thiny, senza necessità di digitare startx:  
 
Facciamo partire automaticamente Openbox al login dell'utente thiny, senza necessità di digitare startx:  
Riga 42: Riga 81:
 
Inserire alla fine del file questo testo:
 
Inserire alla fine del file questo testo:
  
<code> [[ -z $DISPLAY && $XDG_VTNR -eq 1 ]] && startx </code>
+
  [[ -z $DISPLAY && $XDG_VTNR -eq 1 ]] && startx
 +
 
  
 
Modificare xinitrc affinché faccia partire Openbox:
 
Modificare xinitrc affinché faccia partire Openbox:
Riga 50: Riga 90:
 
Commentare alla fine:
 
Commentare alla fine:
  
<code> # . /etc/X11/xsession </code>
+
  # . /etc/X11/xsession
 +
 
  
 
aggiungere:
 
aggiungere:
  
<code> exec openbox-session </code>
+
  exec openbox-session
  
Provare a fare il login con l'utente thiny e dovrebbe partire immediatamente Openbox (schermata nera con il puntatore del mouse). E' poi possibile aggiungere alcune righe al file di configurazione di Openbox per evitare screensaver, spegnimento dello schermo, risparmio energetico: vogliamo inoltre che parta automaticamente Remmina, utilizzando il nostro file di configurazione:
+
 
 +
Provare a fare il login con l'utente thiny e dovrebbe partire immediatamente Openbox (schermata nera con il puntatore del mouse).  
 +
 
 +
E' poi possibile aggiungere alcune righe al file di configurazione di Openbox per evitare screensaver, spegnimento dello schermo, risparmio energetico: vogliamo inoltre che parta automaticamente Remmina, utilizzando il nostro file di configurazione:
  
 
<code> sudo nano /etc/xdg/openbox/autostart </code>
 
<code> sudo nano /etc/xdg/openbox/autostart </code>
Riga 62: Riga 106:
 
aggiungere:
 
aggiungere:
  
<code>
+
  xset s off
xset s off
+
  xset s noblank
xset s noblank
+
  xset -dpms
xset -dpms
+
  remmina -k -c /home/thiny/remmina_confs/auto_start.remmina &
remmina -k -c /home/thiny/configurazione-di-esempio.remmina &
+
 
</code>
+
 
 +
Nuovo test di login per verificare se parte regolarmente. L'opzione -k non è strettamente necessaria nella fase di test: serve a far partire Remmina in modalità Kiosk (pensata appunto per i ''thin client'') che in sostanza non consente all'utilizzatore di apportare modifiche alla configurazione: può esser aggiunto al termine del lavoro. Per evitare modifiche alla configurazione andrebbero anche modificati i permessi di scrittura alla cartella delle configurazioni remmina_confs.
  
Test di login per verificare se parte regolarmente.
+
=== Autologin senza password ===
  
Infine vogliamo che l'utente thiny faccia l'autologin all'avvio, senza password. In Debian è in uso Systemd, aggiungiamo un servizio:
+
Infine vogliamo che l'utente ''thiny'' non debba neanche preoccuparsi di fare il login al prompt di avvio: deve presentarsi subito il login al desktop remoto.  
  
<code> sudo nano /etc/systemd/system/xinit-login.service </code>
+
In Debian è in uso Systemd, modifichiamo il seguente servizio:
  
Con questo contenuto:
+
<code> sudo nano /etc/systemd/system/getty.tty1.service </code>
  
<code>
+
Trovare:
[Unit]
 
After=systemd-user-sessions.service
 
  
[Service]
+
  ExecStart=-/sbin/agetty -o '-p -- \\u' --noclear %I $TERM
ExecStart=/bin/su thiny -l -c /usr/bin/startx -- VT08
 
  
[Install]
 
WantedBy=multi-user.target
 
</code>
 
  
Infine abilitiamo il servizio con:
+
Sostituire con:
  
<code> sudo systemctl enable xinit-login.service </code>
+
  ExecStart=-/sbin/agetty -a thiny --noclear %I $TERM
  
 +
 +
Infine riavviamo: abbiamo finito.
  
 
== Altro ==
 
== Altro ==
Per lo spegnimento non è stato impostato nulla di automatico. L'utente, una volta disconnesso, si troverà sulla schermata di Openbox: farà ''disconnetti'' e poi premerà il pulsante di spegnimento; il sistema riceve il segnale di arresto e procede in automatico.
+
Per lo spegnimento non è stato impostato nulla di automatico. L'utente, una volta disconnesso dal desktop remoto, si troverà sulla schermata nera di Openbox: farà ''disconnetti'' e poi premerà il pulsante di spegnimento; il sistema riceve il segnale di arresto e procede in automatico.
 +
 
 +
Potrebbe esser impostato uno sfondo personalizzato di Openbox, ma non verrà trattato in questa guida.
  
Suggerimenti sono graditi nella mailing list del LUG.
+
Suggerimenti sono graditi nella [https://mail.montellug.it/mailman/listinfo/montellug mailing list del LUG].

Versione attuale delle 21:23, 30 mar 2021

Mi ritrovo un vecchio Dell Optiplex FX160 fanless inutilizzato, perchè scarso di tutto (cpu, memoria, disco, connettività) e perchè non lo uso più per il progetto per cui l'avevo preso (server casalingo). Utilizzarlo stand alone è diventato problematico anche per un uso minimale di navigazione, perchè i browser oramai hanno bisogno di risorse per fare qualunque cosa. Però d'altra parte ho bisogno di un PC per lavorare da remoto in smart working: "perchè non utilizzare questo PC utilizzandolo come thin client?" mi son chiesto.

Segue perciò una serie di appunti sulla preparazione di un thin client RDP. Ho deciso di pubblicarli perchè la stessa cosa la può fare chiunque abbia a casa un computer dalle prestazioni scarse, per utilizzarlo come sistema per collegarsi ad altro computer più potente.

Utente Odeeno, ultimo aggiornamento 03/2021 - in aggiornamento. Fasi della configurazione:

Installare Debian base

Primo passo è stato installare un sistema operativo base (senza ambiente grafico). Per mia scelta e conoscenza ho scelto Debian, con un immagine net-install, nella versione stable per avere la massima stabilità e non dover tendenzialmente doverci rimettere le mani.

Non spiego come fare, perché non è oggetto di questa guida: l'unica opzione specifica che ho scelto è stata l'installazione in automatico degli aggiornamenti di sicurezza. Come scritto, non serve installare alcun ambiente grafico in questa fase: nella fase di tasksel ho optato solo per l'installazione delle utilità di base ed il server ssh, che può tornar utile per il resto dell'installazione o per necessità di manutenzione: (vedere questa guida se di interesse).

Il sistema è ridotto al minimo, ma non sono state fatte particolari scelte di ottimizzazione o semplificazione: es. moduli installati, kernel, driver specifici, ecc... Il primo test vien fatto allo scopo che funzioni, poi verranno fatte le ottimizzazioni (che tra l'altro potrebbero dipendere dalla distribuzione scelta).

Terminata l'installazione e riavviato il sistema ho creato un nuovo utente, non amministratore, che poi sarà utilizzato per l'avvio del thin-client:

sudo adduser thiny

Consigliabile poi impostare il sistema affinché abbia un IP fisso della scheda di rete:

sudo nano /etc/network/interfaces

dove vanno aggiunte queste righe (gli IP vanno personalizzati):

 iface enp2s0 inet static
 address 192.168.1.65 
 netmask 255.255.255.0
 gateway 192.168.1.1


Poi ho impostato GRUB (il boot manager) affinchè parta senza attendere:

sudo nano /etc/default/grub

Impostare:

 GRUB_TIMEOUT=0


Impostato il tempo di attesa a zero, salvo, chiudo e do:

sudo update-grub

Installare un windows manager basilare

Naturalmente è necessario avere un server grafico: quelli installabili nella fase di installazione non ci interessano. La scelta è ricaduta su un Window Manager minimale, senza alcun programma specifico installato: Openbox

sudo apt install openbox xserver-xorg x11-xserver-utils xinit xdg-utils

Non ci serve un gestore grafico di login. Anche in questo caso si può ottimizzare, per ridurre all'essenziale i programmi installati: in questa fase ho optato per installare tutte le dipendenze, anche raccomandate. Al termine è stato fatto un test per accertarmi che Openbox partisse:

startx

Installare Remmina

Successivamente è necessario installare un software che consenta di collegarsi con il desktop remoto, nel caso specifico mi interessa RDP. La scelta ricade sull'ottimo Remmina

sudo apt install remmina

Anche in questo caso: è possibile scegliere software ottimizzati, minimali come xrdp o l'ottimo freerdp, ma per una questione di facilità di configurazione (dopo riportata) ho scelto Remmina. Anche in questo caso potevano esser installati solo i moduli essenziali per RDP di Remmina, ma sono stati installate tutte le dipendenze raccomandate. L'ottimizzazione in caso verrà fatta in seguito.

Configurazione di Remmina

Come scritto Remmina, è stato scelto per una comodità nella configurazione. Creo un link alla cartella usata da Remmina per salvare le proprie configurazioni: ci troviamo nella cartella /home/thiny

ln -sd .local/share/remmina/ remmina_confs

Su altro computer è installato il programma ed è presente una configurazione pronta, funzionante ed ottimizzata del programma che è stata copiata nella cartella /home/thiny/remmina_confs/configurazione-di-esempio.remmina

In caso di necessità di cambiamenti nelle configurazioni di dispositivi USB, reti, utente, webcam, smartcard ed altro, la configurazione verrà provata e testata su altro PC e copiata (anche via ssh) sulla cartella su indicata per il successivo riavvio.

Creo poi un link al file di configurazione che mi interessa: questo mi agevola se poi dovessi scegliere una configurazione di default diversa:

ln -s remmina_confs/configurazione-di-esempio.remmina remmina_confs/auto_start.remmina

Setup per l'avvio automatico

Vogliamo infine che il sistema faccia partire automaticamente Remmina all'avvio di Openbox: non interessa poi far fare all'utente il login sul sistema Debian. Deve presentarsi direttamente la schermata per l'inserimento di utente e password di login sul desktop remoto per iniziare a lavorare.

Autostart di Openbox

Facciamo partire automaticamente Openbox al login dell'utente thiny, senza necessità di digitare startx:

sudo nano /home/thiny/.profile

Inserire alla fine del file questo testo:

 -z $DISPLAY && $XDG_VTNR -eq 1  && startx


Modificare xinitrc affinché faccia partire Openbox:

sudo nano /etc/X11/xinit/xinitrc

Commentare alla fine:

 # . /etc/X11/xsession


aggiungere:

 exec openbox-session


Provare a fare il login con l'utente thiny e dovrebbe partire immediatamente Openbox (schermata nera con il puntatore del mouse).

E' poi possibile aggiungere alcune righe al file di configurazione di Openbox per evitare screensaver, spegnimento dello schermo, risparmio energetico: vogliamo inoltre che parta automaticamente Remmina, utilizzando il nostro file di configurazione:

sudo nano /etc/xdg/openbox/autostart

aggiungere:

 xset s off
 xset s noblank
 xset -dpms
 remmina -k -c /home/thiny/remmina_confs/auto_start.remmina &


Nuovo test di login per verificare se parte regolarmente. L'opzione -k non è strettamente necessaria nella fase di test: serve a far partire Remmina in modalità Kiosk (pensata appunto per i thin client) che in sostanza non consente all'utilizzatore di apportare modifiche alla configurazione: può esser aggiunto al termine del lavoro. Per evitare modifiche alla configurazione andrebbero anche modificati i permessi di scrittura alla cartella delle configurazioni remmina_confs.

Autologin senza password

Infine vogliamo che l'utente thiny non debba neanche preoccuparsi di fare il login al prompt di avvio: deve presentarsi subito il login al desktop remoto.

In Debian è in uso Systemd, modifichiamo il seguente servizio:

sudo nano /etc/systemd/system/getty.tty1.service

Trovare:

 ExecStart=-/sbin/agetty -o '-p -- \\u' --noclear %I $TERM


Sostituire con:

 ExecStart=-/sbin/agetty -a thiny --noclear %I $TERM


Infine riavviamo: abbiamo finito.

Altro

Per lo spegnimento non è stato impostato nulla di automatico. L'utente, una volta disconnesso dal desktop remoto, si troverà sulla schermata nera di Openbox: farà disconnetti e poi premerà il pulsante di spegnimento; il sistema riceve il segnale di arresto e procede in automatico.

Potrebbe esser impostato uno sfondo personalizzato di Openbox, ma non verrà trattato in questa guida.

Suggerimenti sono graditi nella mailing list del LUG.