VNC via HTTP con Guacamole: vediamolo su Ubuntu!
Posted on : 26-07-2010 | By : daniele | In : Java, Linux, Medium, Review
Tags: guacamole, How-To, Java, Ubuntu
5
Come promesso scrivo qualche riga su un’applicazione che ho provato qualche mese fa e mi ha stupito veramente veramente tanto: Guacamole. No ragazzi, non parlo della (buonissima peraltro) salsa messicana!
Guacamole è un viewer VNC scritto in HTML5 e Javascript, che fa uso di piccolo proxy, server side scritto in Java. Per questo avrete necessità di deployarla all’interno di un qualsiasi servlet container. Io ho sempre utilizzato Apache Tomcat.
Utilizzandola avrete la possibilità di accedere al server sul quale è installata da un comunissimo browser compliant con gli standard HTML5; da lì, avrete il “possesso” completo della vostra macchina, come se foste in console e…beh, al diavolo il proxy HTTP che vi blocca le connessioni SSH (tanto per fare un piccolo riferimento al mio post precedente)!
Cmq, mi sembra superfluo continuare le spiegazioni (anche perchè non c’è molto altro da dire). Io proporrei di vederlo all’opera…voi che dite?
Il contesto
Due righe per spiegare dove e come proveremo Guacamole. Anzitutto l’OS: trattasi di una fantastica GNU/Linux Ubuntu Lucid Lynx 10.04 LTS; direi il capolavoro di Canonical. Quindi il servlet container scelto che, come detto, è Apache Tomcat in versione 6.0.24. In ultimo la versione della jdk: una 1.60_20 per piattaforma 64bit. Ok ora sappiamo tutto. Andiamo a provare Guacamole!
Installare Guacamole su Ubuntu 10.04
Anzitutto ci occorrerà installare un VNC server. Guacamole, come detto, utilizza un proxettino che si metterà in contatto con il questo VNC server e otterrà la view della vostra console che poi verrà ri-renderizzata in HTML5 e Javascript.
Io come VNC server ho utilizzato X11VNC. Perchè è semplice da installare (basta un apt-get install); perchè il deamon lo gestisci via xinetd (che comunque installeremo) e a me questa cosa piace; ma soprattutto perchè è consigliato dagli stessi creatori di Guacamole! Vediamo come installarlo:
e configuriamo xinetd per gestire X11VNC: creiamo il file /etc/xinetd.d/x11vnc che contenga:
{
port = 5900
only_from = localhost
type = UNLISTED
socket_type = stream
protocol = tcp
wait = no
user = root
server = /usr/bin/x11vnc
server_args = -inetd -display :0 -o /var/log/x11vnc.log -24to32 -scr always -xkb
disable = no
}
Delle stringhe inserite qua sopra, la più rilevante è quella relativa ai server_args. Su Ubuntu questa è la configurazione ottimale, tuttavia ho già verificato che su altre distro c’è qualcosa da modificare (tipo Debian Lenny…). Ovviamente le modifiche dipendono direttamente da come viene configurato e gestito l’X server dalle varie distro. Diciamo che anche nella situazione peggiore, una googlata e un po’ di dimestichezza con l’X server dovrebbe risolvervi il problema.
Notate inoltre che il server VNC sarà in listening solo su localhost (istruzione “only_from”). Ovviamente, dato che il traffico VNC serve solo a guacamole che, nel nostro caso perlomeno, risiederà sulla stessa macchina server, non occorre esporre troppo il servizio.
Diciamo che le altre voci dovrebbero essere semplici da capire. Come semplice da capire è che il server VNC andrà in listening sulla porta 5900 e utilizzeremo il display :0.
In ogni modo ora X11VNC e xinetd sono installati e configurati. Un piccolo restart
e siamo apposto. Ora occupiamoci di Guacamole.
Chi non è nuovo di questo blog, sa che quando voglio installare un’applicativo che andrà in run da utente non privilegiato, io anzitutto creo un utente apposito e sfrutto la sua $HOME per installare l’applicazione che dovrà gestire. Apache Tomcat è un classico software che gira da utente non privilegiato. Di conseguenza creo l’utente “tomcat” che lo gestirà
root@ubuntu ~# useradd -g tomcat -d /home/tomcat -m -s /bin/bash tomcat
e divento utente tomcat.
tomcat@ubuntu ~$
Tutto quello che accadrà da ora in poi sarà completamente “responsabilità” del nuovo utente
Siamo pronti per procurarci (prima di tutto) il software che ci serve. Quindi, prima di continuare la vostra lettura, assicurative di scaricare:
- la JDK a questo indirizzo: http://java.sun.com/javase/downloads/widget/jdk6.jsp
- Apache Tomcat a questo: http://tomcat.apache.org/download-60.cgi
- Guacamole sulla sua pagina Sourceforge: http://sourceforge.net/projects/guacamole/
Mettiamo tutto in una directory di proprietà dell’utente “tomcat” che chiameremo “pkg” e diamo i giusti permessi.
Come prima cosa installiamo la JDK e mettiamola nel $PATH dell’utente tomcat. Anzitutto diamo al .bin appena scaricato i permessi di eseguibilità
e quindi runniamo l’eseguibile
Creiamo un link simbolico per la dir della jdk. Questo ci darà due vantaggi:
- semplificare la path
- effettuare tutti i settings relativi alla messa in PATH della JavaVM utilizzando un percorso che non cambierà mai a prescindere le versioni della JDK che cambierete nel tempo.
Quindi modifichiamo il .bashrc dell’utente inserendo queste due righe:
export PATH="$JAVA_HOME/bin:$PATH"
e ricarichiamo le impostazioni utente
Se ora diamo un colpetto di which dovremo vedere che java viene correttamente identificato
/home/tomcat/java/bin/java
A questo punto passiamo a Tomcat. Spacchettiamo il .tar.gz che abbiamo scaricato (ricordo che stiamo provando con la versione 6.0.24) e spostiamolo nella home dell’utente.
tomcat@ubuntu ~/pkg $ mv apache-tomcat6.0.24 ..
Ora, sempre nella dir ~/pkg spacchettiamo anche Guacamole:
All’interno della directory spacchettata troverete i seguenti files:
- guacamole.war: è il compilato dell’applicazione che deployeremo più tardi all’interno di Tomcat
- guacamole.xml: l’xml del contesto. Poche modifiche ed è già bello e pronto
- guacamole-users.xml: è il file xml che definisce l’autenticazione HTTP per accedere a guacamole. Anche questo provvederemo a modificarlo
- guacamole-src.tar: per chiunque ne senta il bisogno…ecco il sorgente!
- LICENSE.txt: la tua copia della licenza con cui è rilasciato Guacamole. Che è la GPL3.
Cominciamo l’installazione. Anzitutto copiamo il file guacamole.war all’interno della folder “webapps” del vostro tomcat.
Quindi copiamo il file guacamole-users.xml nella folder di conf di tomcat. Se aprite questo file, inoltre, vi accorgerete che la password è settata a “changeme”. Beh lo dice la parola stessa…modificatela!
Ora tocca al file di contesto. Apriamolo e modifichiamo la docBase del Context, specificando la path assoluta di dove si trova il nostro file .war. In poche parole sostituiamo questa riga qui:
con questa qui
Richiudetelo e spostatelo nella folder Catalina/localhost da creare all’interno della directory “conf”. Così
tomcat@ubuntu ~$ cp pkg/guacamole.xml apache-tomcat6.0.24/conf/Catalina/localhost
Ok signori. Abbiamo finito. Startiamo tomcat
tomcat@ubuntu ~/apache-tomcat6.0.24/bin $ ./catalina.sh start
e visitiamo la paginetta http://localhost:8080/guacamole. Inseriamo user e password specificati nel file guacamole-users.xml e… UALA’! Il VNC via HTTP è servito!
















Ciao, navigando ho trovato questa quida utilissima per configurare guacamole, ed è andato tutto ok tranne la fine. Quando avvio il browser, provo a fare il login ma non mi fa entrare, user e password errati. Cosa potrebbe essere il problema?
Ciao, ho seguito la tua guida ed è andata tutta a buon fine, ma non riesco ad autenticami. Provo ad utilizzare le credenziali inserite nel file guacamole-users.xml ma non va.
Ciao, scusa il ritardo nella risposta ma sono stato un po’ impicciato con il lavoro. Una info per aiutarti a risolvere il problema: hai controllato se Tomcat logga qualcosa? e il server VNC? dovresti avere dei logs all’interno di /var/log/x11vnc.log.
Ciao!
Ciao, ho risolto tutto… nella macchina virtuale di prova non ne vuole sapere di andare mentre nel pc in cui lo dovevo usare va tutto liscio.. e sono riuscito a collegarmi scavalcando proxy e firewall.
C’è la possibilità di avviare tomcat all’avvio del pc, piuttosto che avviare il servizio da terminale con ./catalina.sh start ??
Ovviamente si, devi scrivere un init script per la tua Ubuntu, inserirlo in /etc/init.d e poi caricarlo nei runlevel con il comando update-rc.d. Se cerchi su google ne trovi anche di già fatti, gli dai un customizzata e sei pronto!