L'application Guacamole se compose de 3 parties :
Si vous être réfractaire au Java, passez votre chemin.
Il faut posséder une Debian Jessie à jour ; les paquets binaires du dépôt Debian n'étant plus maintenu depuis près de 2 ans. Vous devez installer tomcat8 comme décrit dans cette page (ou tomcat7) mais surtout pas tomcat6, cela risque de poser problème.
Installation des paquets nécessaires :
sudo apt install build-essential tomcat8 libpng12-dev libossp-uuid-dev libpulse-dev libcairo2-dev libssl-dev libvncserver-dev libvorbis-dev libtelnet-dev libssh2-1-dev libpango1.0-dev libfreerdp-dev
Téléchargements de sources :
wget --content-disposition -O - http://sourceforge.net/projects/guacamole/files/current/source/guacamole-server-0.9.7.tar.gz/download | tar xfvz - wget --content-disposition -O - http://sourceforge.net/projects/guacamole/files/current/source/guacamole-client-0.9.7.tar.gz/download | tar xfvz - wget --content-disposition http://sourceforge.net/projects/guacamole/files/current/binary/guacamole-0.9.7.war/download
Prévoir un fix concernant les bibliothèques freerdp (points 7, 8, 9).
Ça compile fort :
cd guacamole-server* ./configure --with-init-dir=/etc/init.d make sudo make install sudo mkdir /usr/lib/x86_64-linux-gnu/freerdp/ sudo ln -s /usr/local/lib/freerdp/*.so /usr/lib/x86_64-linux-gnu/freerdp/ sudo ldconfig
Copie du servlet :
sudo cp guacamole-0.9.7.war /var/lib/tomcat8/webapps/guacamole.war
Vous pouvez en lieu et place utiliser maven à partir des sources du client pour compiler le fichier war.
Important, les droits de l'utilisateur tomcat8 sur le fichier user-mapping.xml sont indispensables.
Copie des fichiers de configuration :
sudo mkdir {/etc/guacamole,/usr/share/tomcat8/.guacamole} sudo cp guacamole-client-0.9.7/guacamole/doc/example/{guacamole.properties,user-mapping.xml} /etc/guacamole/ sudo ln -s /etc/guacamole/guacamole.properties /usr/share/tomcat8/.guacamole/guacamole.properties sudo chown tomcat8 /etc/guacamole/user-mapping.xml sudo chmod 600 /etc/guacamole/user-mapping.xml
Le fichier guacamole.properties à éditer ou vérifier avant de redémarrer les services :
# Hostname and port of guacamole proxy guacd-hostname: localhost guacd-port: 4822 # Auth provider class (authenticates user/pass combination, needed if using the provided login screen) # Le chemin vers user-mapping.xml doit être un chein complet et non relatif ! auth-provider: net.sourceforge.guacamole.net.basic.BasicFileAuthenticationProvider basic-user-mapping: /etc/guacamole/user-mapping.xml
Pour le fichier user-mapping.xml, référez-vous à la documentation officielle.
Démarrage des services :
sudo systemctl restart tomcat8.service sudo /etc/init.d/guacd restart
L'url http://fqdn:8080/guacamole doit vous permettre d'accéder à l'application. Toutefois, tout transite en clair sur le réseau et rien n'est sécurisé.
Le reverse proxy en question, je vous épargne la partie liée à TLS qui est indispensable.
location / { proxy_pass http://localhost:8080/guacamole/; proxy_buffering off; proxy_http_version 1.1; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection $http_connection; proxy_cookie_path /guacamole/ /; # Indispensable pour se connecter si changement d'URL }
Rendez-vous sur la page https://fqdn/ et insérez le nom d'utilisateur et votre mot de passe (préférez le hash MD5, ce n'est mieux que rien). Il est également possible de gérer de façon avancée les utilisateurs avec mysql ou pgsql, chose que je ne traite pas ici.