Guacamole Installation

From blinkenwiki

Server

These are supposed to be the only necessary steps to install Guacamole, but the add-repository step didn't work:

sudo add-apt-repository ppa:guacamole/stable
sudo apt-get install guacamole-tomcat

So, had to install from source. Installation of prerquisites:

Basic stuff:

sudo apt install make

Required stuff:

sudo apt install libcairo2-dev
sudo apt install libjpeg-turbo8-dev
sudo apt install libpng-dev
sudo apt install libtool-bin
sudo apt install libossp-uuid-dev

Optional stuff:

sudo apt install libvncclient1
#sudo apt install freerdp2-dev
sudo apt install libssl-dev
sudo apt install libssh2-1-dev
sudo apt install libpango1.0-dev
sudo apt install libavcodec-dev libavformat-dev libavutil-dev libswscale-dev
sudo apt install libvncserver-dev

Configuring:

./configure --with-init-dir=/etc/init.d --disable-dependency-tracking

Build and install:

make
sudo make install
sudo ldconfig

Client

Install tomcat:

sudo apt install tomcat9
sudo cp ~/Downloads/guacamole-1.3.0.war /var/lib/tomcat9/webapps/
systemctl restart tomcat9

Note: after copying the war file to the webapps directory, and restarting Tomcat, it will un-jar the war file into guacamole-1.3.0. This makes the file accessible at http://localhost:8080/guacamole-1.3.0. To make the URL more convenient, just move the unpacked directory to guacamole and then delete the war file:

mv /var/lib/tomcat9/webapps/guacamole-1.3.0 /var/lib/tomcat9/webapps/guacamole
rm /var/lib/tomcat9/webapps/guacamole-1.3.0.war

The guad daemon must be restarted:

sudo /etc/init.d/guacd start

The Guacamole web will now be available at http://localhost:8080/guacamole.

Xvnc

apt install xterm
apt install tightvncserver

Configure guacd

cd /etc
mkdir guacamole
cd guacamole
mkdir lib
mkdir extensions

Edit guocamole.properties and enter:

# Hostname and port of guacamole proxy
guacd-hostname: localhost
guacd-port:     4822

Edit user-mapping.xml

<user-mapping>
    <!-- Per-user authentication and config information -->
    <authorize username="foo" password="baz">
        <protocol>vnc</protocol>
        <param name="hostname">127.0.0.1</param>
        <param name="port">5901</param>
        <param name="password">nitnarcu</param>
    </authorize>
</user-mapping>