Wednesday, July 29, 2015

Setup guacamole server on Slackware

I encountered the need to access some ssh/telnet/vns server through a client-less HTML5 web app.

Gooling gave me the best product and it is free, the guacamole server.  Looking at the building requirement of it at, I found Slackware by default does not come with all the components needed.  Follow the build procedure in the document, I started with building guacamole-server.

Building guacamole-server

I tried to build all the dependency in except for PulseAudio.  After look through the supported list of needed libraries, FreeRDP, libssh2, have build script at SlackBuilds.org, and libtelnet does not.  After installed FreeRDP and libssh2, I wrote build script for libtelnet, it built and installed without problem.

After I had all the libraries installed, I downloaded the server code guacamole-server-0.9.7.tar.gz.  The package does not come with a ready to use configure command, and have to use autoreconf -fi to bootstrap it.  The configure failed for not finding OSSP UUID library.  Slackware already comes with a uuid library from the util-linux package and it is better than the OSSP one.  So I developed a patched to use the uuid library from util-linux and it works without problem.

Building guacamole-client

The guacamole-client needs to be run under a Java Servlet server.  Luckily, SlackBuilds.org has all I need.  After installed the latest jdk, apache-ant, commons-daemon, apache-tomcat with sbopkg, I had a tomcat server up and running.  I still need to configured /etc/tomcat/tomcat-users.xml to allow to to use the manager GUI. I added the following line to it (of course the user name and password are not the real one I am using ^_^):
<user password="manager" roles="manager-gui" username="manager">
</user>
Guacamole-client needs Apache Maven to build, and SlackBuilds.org has a script for maven.  After installed maven, and with the command mvn package guacamole-client was built and a war file was created in guacamole/target/guacamole-0.9.7.war.  I made it install to /usr/share/lib/guacamole/guacamole-0.9.7.war and had it symbolic links to /var/lib/tomcat/webapps/guacamole.war.  Now I could saw it from Tomcat's manger GUI, accessing it with url http://localhost:8080/guacamole I got a blank screen :(, that was not good.  I have the impression that it should be very easy to setup, now it failed on me.  After reading the documentation again, and again, I realized I failed to setup a user-mapping.xml in /etc/guacamole/.  After follow the example, voila! it showed me the login page, after logged in, I was presented with the entries I had setup earlier in user-mapping.xml.  Links with remote servers are working great!

I am preparing SlackBuilds.org scipts to submit, should not wait too long for them to show up.