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!