Guacamole
What is Guacamole?
Guacamole is an HTML5 remote desktop gateway.
Guacamole provides access to desktop environments using remote desktop protocols like VNC and RDP. A centralized server acts as a tunnel and proxy, allowing access to multiple desktops through a web browser.
No browser plugins are needed, and no client software needs to be installed. The client requires nothing more than a web browser supporting HTML5 and AJAX.
Installing Guacamole on Amahi
Dependencies
- tomcat6
- libvncserver
- freerdp (This is official on the Guacamole site. Fedora 14 will not support Freerdp 1.0 or higher, thus RDP protocol in Guacamole is not available. Leave freerdp out of the code below if you are running Fedora 14.)
- libvorbis
In terminal, as root, install dependencies with the following:
bash code |
---|
$ su Password: # yum install tomcat6 libvncserver freerdp libvorbis
|
Preparing Amahi
Login to your Amahi Dashboard and choose "Set Up" in the upper right. Now select the "Apps" tab. Click on "Webapps" and on the page that comes up choose the "New Web App" button at the bottom. Fill in the name (guacamole) and leave everything else as it is.
Downloading the Binary Packages
Go to http://guac-dev.org/ and choose from the table the binary packages for your system. For Fedora 14, I chose the Fedora 15 packages and they worked flawlessly.
Installing Guacamole
In terminal, change directories to where the packages downloaded and execute the following as root:
bash code |
---|
# tar -xzf guacamole-0.8.0-fedora-15-i386.tar.gz # cd guacamole-0.8.0-fedora-15-i386/ # rpm -i *.rpm
|
- Be aware that you may have to adjust the above code to match the file name you downloaded.
Setting up MySQL Authentication
Download the MySQL Authentication Module http://sourceforge.net/projects/guacamole/files/current/extensions/guacamole-auth-mysql-0.8.0.tar.gz/download
Deploying Guacamole
To deploy Guacamole, you must make two symbolic links: one effectively copying the web application (now located at /var/lib/guacamole/guacamole.war) into the directory Tomcat monitors for web application deployment, and the other effectively copying the configuration file, guacamole.properties, into the Tomcat's classpath, such that Guacamole can find it once it runs. This must be done as root:
bash code |
---|
# ln -s /var/lib/guacamole/guacamole.war /var/lib/tomcat6/webapps # ln -s /etc/guacamole/guacamole.properties /usr/share/tomcat6/lib
|
Restart Tomcat
bash code |
---|
service tomcat6 restart
|
Start Guacamole's service
bash code |
---|
service guacd start
|
Now configure the tomcat6 and guacd services to run automatically
bash code |
---|
# chkconfig tomcat6 on # # chkconfig guacd on
|
Configuring Guacamole and Amahi
Create Symbolic links between guacamole in Tomcat and Amahi's webapp directory
bash code |
---|
# ln -s /var/lib/tomcat6/webapps/guacamole/admin.xhtml /var/hda/web-apps/guacamole/html # ln -s /var/lib/tomcat6/webapps/guacamole/agpl-3.0-standalone.html /var/hda/web-apps/guacamole/html # ln -s /var/lib/tomcat6/webapps/guacamole/client.xhtml /var/hda/web-apps/guacamole/html # ln -s /var/lib/tomcat6/webapps/guacamole/guacamole-common-js /var/hda/web-apps/guacamole/html # ln -s /var/lib/tomcat6/webapps/guacamole/images /var/hda/web-apps/guacamole/html # ln -s /var/lib/tomcat6/webapps/guacamole/index.xhtml /var/hda/web-apps/guacamole/html # ln -s /var/lib/tomcat6/webapps/guacamole/layouts /var/hda/web-apps/guacamole/html # ln -s /var/lib/tomcat6/webapps/guacamole/META-INF /var/hda/web-apps/guacamole/html # ln -s /var/lib/tomcat6/webapps/guacamole/scripts /var/hda/web-apps/guacamole/html # ln -s /var/lib/tomcat6/webapps/guacamole/styles /var/hda/web-apps/guacamole/html # ln -s /var/lib/tomcat6/webapps/guacamole/WEB-INF /var/hda/web-apps/guacamole/html
|
Create .htaccess file in /var/hda/web-apps/guacamole/html
bash code |
---|
# cd /var/hda/web-apps/guacamole/html # gedit .htaccess
|
This is the text for the .htaccess file:
RewriteEngine On RewriteCond %{SERVER_PORT} 80 RewriteRule (.*) http://%{HTTP_HOST}:8080/guacamole [R,L]
Make sure the owner of the file is apache and the group is users.
bash code |
---|
# chown apache .htaccess # chgrp users .htaccess
|
In /etc/httpd/conf.d/####-guacamole.conf, change "AllowOverride AuthConfig" to "AllowOverride FileInfo Limit Options Indexes"
Port Forwarding
If you want Guacamole's web interface to be accessible outside of your LAN you will have to forward a random, unused port (1111, for example) to port 8080 in your router. Then when you access Guacamole from outside your LAN you will need to add "/guacamole" to the end of your url. (serverblahblah.yourhda.com:1111/guacamole) If you do not add "/guacamole" to your url, you will see a blank page since you did not specify which application in Tomcat you wanted to access.