Apache Guacamole

Apache Guacamole è un gateway clientless per applicazioni di remote desktop, ovvero un’applicazione che consente di utilizzare protocolli di remote desktop direttamente nel browser senza necessità di installare alcun client o plugin. I protocolli supportati sono, tra gli altri, RDP, VNC e SSH.

L’applicazione Guacamole è composta da due parti distinte:

  • una parte server, che è quella che funge da proxy verso gli host finali ai quali ci si vuole connettere, e che per questo deve implementare i diversi protocolli di accesso remoto;
  • una parte web, sotto forma di servlet eseguita da un “servlet container” come Tomcat.

In questo articolo mostrerò come installare Guacamole su un server Debian su cui è stato già installato e configurato Tomcat. Deployment più avanzati, ad esempio dietro un reverse-proxy come NGINX, saranno oggetto di un articolo dedicato.

Installazione di Guacamole server

La parte server di Guacamole va necessariamente installata da sorgenti, dopo essersi assicurati di aver installato tutte le librerie necessarie a soddisfare le dipendenze relative ai protocolli da supportare.

Per quanto riguarda Debian, le librerie di sviluppo da installare sono le seguenti:

  • libcairo2-dev
  • libjpeg62-turbo-dev
  • libpng12-dev (su Buster c’è la versione 1.6)
  • libtool-bin
  • libossp-uuid-dev
  • libavcodec-dev
  • libavutil-dev
  • libswscale-dev
  • freerdp2-dev
  • libpango1.0-dev
  • libssh2-1-dev
  • libtelnet-dev
  • libvncserver-dev
  • libwebsockets-dev
  • libpulse-dev
  • libssl-dev
  • libvorbis-dev
  • libwebp-dev

Non tutte le librerie elencate sopra sono necessarie; alcune servono solo se si vuole supportare il protocollo corrispondente, come ad esempio VNC, Telnet o Kubernetes.

Procediamo quindi all’installazione di tutte le librerie richieste, escludendo i pacchetti raccomandati suggeriti da apt, tramite il comando:

apt-get install --no-install-recommends make libcairo2-dev libjpeg62-turbo-dev libpng-dev libtool-bin libossp-uuid-dev libavcodec-dev libavutil-dev libswscale-dev freerdp2-dev libpango1.0-dev libssh2-1-dev libtelnet-dev libvncserver-dev libwebsockets-dev libpulse-dev libssl-dev libvorbis-dev libwebp-dev libpam-freerdp2-dev

A questo punto possiamo scaricare i sorgenti della componente server di Guacamole per compilarli ed installarli:

tar xzvf guacamole-server-1.1.0.tar.gz
cd guacamole-server-1.1.0/
./configure --with-systemd-dir=/etc/systemd/system/

Il risultato dovrebbe essere qualcosa del genere:

 guacamole-server version 1.1.0
 Library status:
  freerdp2 ............ yes
  pango ............... yes
  libavcodec .......... yes
  libavutil ........... yes
  libssh2 ............. yes
  libssl .............. yes
  libswscale .......... yes
  libtelnet ........... yes
  libVNCServer ........ yes
  libvorbis ........... yes
  libpulse ............ yes
  libwebsockets ....... yes
  libwebp ............. yes
  wsock32 ............. no

 Protocol support:
   Kubernetes .... yes
   RDP ........... yes
   SSH ........... yes
   Telnet ........ yes
   VNC ........... yes

 Services / tools:
   guacd ...... yes
   guacenc .... yes
   guaclog .... yes

 FreeRDP plugins: /usr/lib/x86_64-linux-gnu/freerdp2
    Init scripts: no
    Systemd units: /etc/systemd/system/

 Type "make" to compile guacamole-server.

A questo punto possiamo procedere con la compilazione e, se non si riscontrano errori, la successiva installazione:

make
make install

Se tutto è andato per il verso giusto, nella directory /etc/systemd/system dovreste trovare la service unit che si occupa di avviare il servizio guacd, ovvero la componente server di Guacamole:

ldconfig
systemctl enable guacd
systemctl start guacd

Installazione di Guacamole client

Sebbene anche la componente client di Guacamole possa essere compilata ed installata da sorgenti, il fatto che sia già disponibile come applicazione precompilata pronta da installare sotto Tomcat mi fa optare per saltare la fase di compilazione e procedere direttamente al download e installazione della versione binaria tramite il pacchetto guacamole-1.1.0.war. Sempre dalla pagina di download di Guacamole è possibile scaricare anche le eventuali estensioni che si ritengano opportune.

Una volta scaricato il pacchetto .war, è sufficiente copiarlo nella directory webapps dell’installazione di Tomcat (modificandono eventualmente permessi e proprietario) e poi riavviare il servlet container:

cp guacamole-1.1.0.war /opt/tomcat9/webapps
systemctl restart tomcat

A questo punto entrambe le componenti di Guacamole sono in esecuzione sul sistema, tuttavia la parte client deve ancora essere configurata. La configurazione verrà descritta in un articolo dedicato.

Leave a Reply

Questo sito usa Akismet per ridurre lo spam. Scopri come i tuoi dati vengono elaborati.