Guacamole is a clientless Remote Desktop gateway. With this tool we can connect to a remote desktop using any modern webbrowser. Here is how I install the latest version (0.9.9) on an LMDE 2 MATE System.
1. Install dependencies:
$ sudo apt-get install libcairo2-dev libjpeg62-turbo-dev libpng12-dev libossp-uuid-dev libfreerdp-dev libpango1.0-dev libssh2-1-dev libtelnet-dev libvncserver-dev libpulse-dev libssl-dev libvorbis-dev libwebp-dev
2. Download source code:
$ wget http://sourceforge.net/projects/guacamole/files/current/source/guacamole-server-0.9.9.tar.gz
3. Extract file and change directory:
$ tar -xzf guacamole-server-0.9.9.tar.gz
$ cd guacamole-server-0.9.9/
4. Configure:
$ ./configure --with-init-dir=/etc/init.d
checking for a BSD-compatible install... /usr/bin/install -c
checking whether build environment is sane... yes
checking for a thread-safe mkdir -p... /bin/mkdir -p
checking for gawk... gawk
...
------------------------------------------------
guacamole-server version 0.9.9
------------------------------------------------
Library status:
freerdp ............. yes
pango ............... yes
libssh2 ............. yes
libssl .............. yes
libtelnet ........... yes
libVNCServer ........ yes
libvorbis ........... yes
libpulse ............ yes
libwebp ............. yes
Protocol support:
RDP ....... yes
SSH ....... yes
Telnet .... yes
VNC ....... yes
Init scripts: /etc/init.d
Type "make" to compile guacamole-server.
5. Make:
$ make
make all-recursive
make[1]: Entering directory '/home/user/guacamole/guacamole-server-0.9.9'
Making all in src/libguac
make[2]: Entering directory '/home/user/guacamole/guacamole-server-0.9.9/src/libguac'
CC libguac_la-audio.lo
...
CCLD libguac-client-vnc.la
make[2]: Leaving directory '/home/user/guacamole/guacamole-server-0.9.9/src/protocols/vnc'
make[2]: Entering directory '/home/user/guacamole/guacamole-server-0.9.9'
make[2]: Leaving directory '/home/user/guacamole/guacamole-server-0.9.9'
make[1]: Leaving directory '/home/user/guacamole/guacamole-server-0.9.9'
6. Create needed directories:
$ sudo mkdir -p /usr/local/share/man
$ sudo mkdir /etc/guacamole
7. Install guacamole-server using checkinstall:
$ sudo apt-get install checkinstall
$ sudo checkinstall
checkinstall 1.6.2, Copyright 2009 Felipe Eduardo Sanchez Diaz Duran
Diese Software wurde unter der GNU GPL veröffentlicht
The package documentation directory ./doc-pak does not exist.
Should I create a default set of package docs? [y]:
Bereite Paket-Dokumentation vor...OK
Bitte geben Sie eine Beschreibung für das Paket ein.
Beenden Sie Ihre Beschreibung mit einer leeren Zeile oder EOF.
>>
*****************************************
**** Debian package creation selected ***
*****************************************
Das Paket wird entsprechend dieser Vorgaben erstellt:
0 - Maintainer: [ root@lpmbox ]
1 - Summary: [ Package created with checkinstall 1.6.2 ]
2 - Name: [ guacamole-server ]
3 - Version: [ 0.9.9 ]
4 - Release: [ 1 ]
5 - License: [ GPL ]
6 - Group: [ checkinstall ]
7 - Architecture: [ amd64 ]
8 - Source location: [ guacamole-server-0.9.9 ]
9 - Alternate source location: [ ]
10 - Requires: [ ]
11 - Provides: [ guacamole-server ]
12 - Conflicts: [ ]
13 - Replaces: [ ]
Geben Sie die betreffende Nummer ein, um die Vorgaben zu ändern:
Installing with make install...
...
====================== Installation erfolgreich ==========================
Copying documentation directory...
./
./doc/
./doc/Doxyfile
./ChangeLog
./LICENSE
./README
./AUTHORS
Kopiere Dateien in das temporäre Verzeichnis...OK
Stripping ELF binaries and libraries...OK
Komprimiere man-Seiten...OK
Erzeuge Datei-Liste...OK
Erstelle Debian-Paket...OK
Installiere Debian-Paket...OK
Lösche temporäre Dateien...OK
Schreibe Sicherungs-Paket...OK
OK
Lösche temporäres Verzeichnis...OK
**********************************************************************
Done. The new package has been installed and saved to
/home/user/guacamole/guacamole-server-0.9.9/guacamole-server_0.9.9-1_amd64.deb
You can remove it from your system anytime using:
dpkg -r guacamole-server
**********************************************************************
8. Make guacd to start automatically at system start:
$ sudo update-rc.d guacd defaults
9. Install Tomcat8:
$ sudo apt-get install tomcat8
10. Download web application package and put it in tomcat8 webapps directory with another name:
$ cd ..
$ wget http://sourceforge.net/projects/guacamole/files/current/binary/guacamole-0.9.9.war
$ sudo cp guacamole-0.9.9.war /var/lib/tomcat8/webapps/guacamole.war
11. Configure guacamole. Edit “/etc/guacamole/user-mapping.xml”. Here is my “user-mapping.xml”:
<user-mapping>
<authorize username="my_username"
password="my_md5hash"
encoding="md5">
<connection name="my_connection_name">
<protocol>vnc</protocol>
<param name="hostname">localhost</param>
<param name="port">5900</param>
</connection>
</authorize>
</user-mapping>
12. To get md5 hash from your password just type following line in terminal:
$ echo -n <your_password> | md5sum
13. Install “lightdm” and set it as default display manager:
$ sudo apt-get install lightdm lightdm-gtk-greeter
14. Configure “/etc/lightdm/lightdm.conf”. Here is my “lightdm.conf”:
[LightDM]
start-default-seat=true
[XDMCPServer]
enabled=true
port=177
[SeatDefaults]
allow-guest=false
user-session=mate
session-wrapper=mate-session
greeter-session=lightdm-gtk-greeter
greeter-hide-users=true
autologin-user=user
autologin-user-timeout=0
15. Download no-authentication package, extract and install it:
$ wget http://sourceforge.net/projects/guacamole/files/current/extensions/guacamole-auth-noauth-0.9.9.tar.gz
$ tar -xzf guacamole-auth-noauth-0.9.9.tar.gz
$ sudo mkdir /etc/guacamole/extensions
$ sudo cp guacamole-auth-noauth-0.9.9/guacamole-auth-noauth-0.9.9.jar /etc/guacamole/extensions/.
16. Configure no-authentication package. Here is my “/etc/guacamole/noauth-config.xml”:
<configs>
<config name="myconfig" protocol="vnc">
<param name="hostname" value="localhost" />
<param name="port" value="5900" />
</config>
</configs>
17. Save following text as “/etc/guacamole/guacamole.properties”:
# Guacamole - Clientless Remote Desktop
# Copyright (C) 2010 Michael Jumper
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU Affero General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU Affero General Public License for more details.
#
# You should have received a copy of the GNU Affero General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
# 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)
auth-provider: net.sourceforge.guacamole.net.basic.BasicFileAuthenticationProvider
basic-user-mapping: /etc/guacamole/user-mapping.xml
18. Add no authentication configuration to “/etc/guacamole/guacamole.properties” by executing following command:
$ sudo bash -c 'printf "\n%s\n%s\n" "# NoAuth properties" "noauth-config: /etc/guacamole/noauth-config.xml" >> /etc/guacamole/guacamole.properties'
19. Create symbolic link to tomcat8 directory:
$ sudo ln -s /etc/guacamole /usr/share/tomcat8/.guacamole
20. Install VNC Server and xinetd:
$ sudo apt-get install vnc4server xinetd
21. Configure xinetd to start vnc4server. Here is my “/etc/xinetd.d/vnc”:
service vnc
{
disable = no
socket_type = stream
protocol = tcp
wait = no
user = nobody
server = /usr/bin/Xvnc4
server_args = -inetd -once -query localhost -geometry 1920x1080 -depth 24 -securitytypes=none
type = UNLISTED
port = 5900
}
22. Restart the system and connect to this system from another computer using a webbrowser by typing in “<ip-address>:8080/guacamole”.

23. That’s it. Happy remote desktopping!