<?xml version="1.0" encoding="UTF-8"?>
<chapter xml:id="installing-guacamole" xmlns="http://docbook.org/ns/docbook" version="5.0"
    xml:lang="en" xmlns:xl="http://www.w3.org/1999/xlink" xmlns:xi="http://www.w3.org/2001/XInclude">
    <title>Installing Guacamole</title>
    <indexterm>
        <primary>installing</primary>
    </indexterm>
    <section xml:id="binary-packages">
        <title>Packages from your distribution</title>
        <indexterm>
            <primary>packages</primary>
        </indexterm>
        <para>Guacamole is included in the repositories of several Linux distributions. If your
            distribution provides Guacamole packages for you, this is the preferred method of
            installing Guacamole. If your distribution does not provide Guacamole packages, or the
            packages provided are too old, you can build Guacamole from source fairly easily.</para>
        <important>
            <para>Be aware that Guacamole is a remote desktop gateway, and cannot access your
                desktop's display without a remote desktop server of some kind to connect to.
                Guacamole does not contain its own VNC or RDP server, and these installation
                procedures will not walk you through the installation of a VNC or RDP server.</para>
            <para>Your distribution of choice will provide documentation for setting up VNC, as will
                the documentation provided by those that created the VNC server you wish to use. If
                you are going to use RDP to connect to Windows computers, Microsoft (and many others
                on the internet) provides documentation describing how to set up remote
                desktop.</para>
        </important>
        <para>Installing Guacamole from your distribution's <package>guacamole</package> package
            will typically install the web application and the proxy <package>guacd</package>, along
            with support for VNC (<package>libguac-client-vnc</package>). If you want support for
            RDP or SSH, you will need to install those packages as well.</para>
        <para>After the Guacamole packages are installed, the web application may still need to be
            deployed to your servlet container. Some packages, like the Debian package called
                <package>guacamole-tomcat</package>, will do this for you, but if your distribution
            provides no such package, you will have to deploy Guacamole yourself.</para>
        <section>
            <title>Debian and Ubuntu</title>
            <para>The Debian repositories contain packages for all of Guacamole's components, and
                Ubuntu has inherited those packages (being Debian-based).</para>
            <para>For users of Debian or any flavor of Ubuntu, installing Guacamole is as simple as
                installing the <package>guacamole-tomcat</package> package, and then editing the
                    <filename>/etc/guacamole/user-mapping.xml</filename> file to add some
                connections. The <package>guacamole-tomcat</package> package will install Tomcat and
                automatically create the necessary symbolic links to deploy Guacamole. If you don't
                want to use Tomcat, or you want to deploy Guacamole manually, you can install the
                    <package>guacamole</package> package instead, and follow the deployment
                instructions provided in this chapter.</para>
            <informalexample>
                <screen><prompt>#</prompt> <userinput>apt-get install guacamole-tomcat</userinput>
<prompt>#</prompt> </screen>
            </informalexample>
            <para>If you install the <package>guacamole-tomcat</package> package, you will be
                prompted for whether you wish to restart Tomcat automatically. Tomcat must be
                restarted after Guacamole is installed or upgraded. If you don't want to do this, or
                you want to do this manually, choose "No" (the default). Choosing "Yes" will restart
                Tomcat for this and future installs of Guacamole.</para>
            <important>
                <para>The Debian and Ubuntu packages will set up <package>guacd</package> such that
                    it runs as its own reduced-privlege <code>guacd</code> user, for the sake of
                    security. Similarly, the <filename>user-mapping.xml</filename> file will only be
                    readable by users in the <code>guacamole-web</code> group, as it will
                    potentially contain sensitive information like passwords in plain text.</para>
                <para>The guacamole-tomcat package will automcatically put the tomcat6 user in the
                        <code>guacamole-web</code> group, but if you are installing Tomcat manually
                    or using another servlet container, <emphasis>you must ensure your servlet
                        container's user is a member of the <code>guacamole-web</code>
                        group</emphasis>. If you do not do this, your serlvet container will not be
                    able to read <filename>user-mapping.xml</filename>, and all attempts to login to
                    Guacamole will fail.</para>
            </important>
            <para>By default, VNC support will be installed as a dependency of the
                    <package>guacamole</package> package. If you want SSH or RDP support, you will
                need to install <package>libguac-client-ssh0</package> or
                    <package>libguac-client-rdp0</package> manually:</para>
            <informalexample>
                <screen><prompt>#</prompt> <userinput>apt-get install libguac-client-ssh0 libguac-client-rdp0</userinput>
<prompt>#</prompt> </screen>
                <para>Recent versions of Debian and Ubuntu have a recent-enough version of FreeRDP
                    and include <package>libguac-client-rdp0</package>, but if you're using an older
                    version of Debian (such as Debian 6.0 a.k.a. "squeeze"), you will have to either
                    do without RDP support or install FreeRDP and
                        <package>guacamole-server</package> manually, without using your
                    distribution's packages.</para>
                <para>Once installed, both Tomcat and <package>guacd</package> will start
                    automatically and on boot.</para>
            </informalexample>
        </section>
        <section>
            <title>Fedora, RHEL, and CentOS</title>
            <para>Fedora has an excellent Guacamole package, <package>guacamole</package>, which
                will automatically install deploy Guacamole to Tomcat. It does not depend on
                    <package>guacd</package>, however, and you thus must install the
                    <package>guacd</package> package manually alongside
                <package>guacamole</package>:</para>
            <informalexample>
                <screen><prompt>#</prompt> <userinput>yum install guacamole guacd</userinput>
<prompt>#</prompt> </screen>
            </informalexample>
            <para>Depending on which protocols you require support for, you will need to install one
                of the <package>libguac-client-*</package> packages to provide support for those
                protocols. Most users will want at least <package>libguac-client-vnc</package>. If
                you want SSH support, or access to RDP servers, you will need to install
                    <package>libguac-client-ssh</package> or <package>libguac-client-rdp</package>
                respectively.</para>
            <informalexample>
                <screen><prompt>#</prompt> <userinput>yum install libguac-client-vnc libguac-client-ssh libguac-client-rdp</userinput>
<prompt>#</prompt> </screen>
            </informalexample>
            <para>Neither RHEL nor CentOS include Guacamole packages in their main repositories,
                however Fedora maintains a repository called EPEL which contains binaries compatible
                with both RHEL and CentOS. The EPEL repository contains the Guacamole packages
                described above. If you wish to install Guacamole on RHEL or CentOS, you should
                either add the EPEL repository and install from that, or build Guacamole from
                source.</para>
            <para>Once everything is installed, you will still need to configure
                    <package>guacd</package> and Tomcat to start automatically on boot (assuming
                this is what you want):</para>
            <informalexample>
                <screen><prompt>#</prompt> <userinput>chkconfig tomcat6 on</userinput>
<computeroutput>Note: forwarding request to 'systemctl enable tomcat6.service'
ln -s '/usr/lib/systemd/system/tomcat6.service'
    '/etc/systemd/system/multi-user.target.wants/tomcat6.service'</computeroutput>
<prompt>#</prompt> <userinput>chkconfig guacd on</userinput>
<prompt>#</prompt></screen>
            </informalexample>
            <para>If you don't want Tomcat and guacd to start automatically, you can start them
                manually instead:</para>
            <informalexample>
                <screen><prompt>#</prompt> <userinput>service tomcat6 start</userinput>
<computeroutput>Redirecting to /bin/systemctl start tomcat6.service</computeroutput>
<prompt>#</prompt> <userinput>service guacd start</userinput>
<computeroutput>Starting guacd: SUCCESS
guacd[6229]: INFO:  Guacamole proxy daemon (guacd) version 0.7.0
guacd[6229]: INFO:  Unable to bind socket to host ::1, port 4822: Address family not supported by
protocol
guacd[6229]: INFO:  Successfully bound socket to host 127.0.0.1, port 4822
guacd[6229]: INFO:  Exiting and passing control to PID 6230
guacd[6230]: INFO:  Exiting and passing control to PID 6231</computeroutput>
<prompt>#</prompt></screen>
            </informalexample>
            <para>At this point, all you need to do is edit the
                    <filename>/etc/guacamole/user-mapping.xml</filename> file to add some
                connections. You do not need to restart Tomcat after editing this file; it will be
                reloaded automatically by Guacamole.</para>
        </section>
        <section>
            <title>Other distributions</title>
            <para>If you distribution isn't listed above, there is still a chance your distribution
                provides Guacamole packages. A search for "guacamole" in your distribution's package
                manage should answer that question quickly. If no package is provided, your only
                option is to build Guacamole from source.</para>
            <para>Building Guacamole from source is not hard. In most cases, all you need to do is
                download the latest source for <package>guacamole-server</package>, and the latest
                guacamole.war from the Guacamole project website, build
                    <package>guacamole-server</package>, and then deploy
                    <filename>guacamole.war</filename>.</para>
            <para>The method for installing Guacamole is fairly constant across platforms, and the
                instructions given here should apply almost universally (and in the case that they
                don't, you probably already know what you need to do).</para>
        </section>
    </section>
    <section xml:id="building-guacamole-from-source">
        <title>Building Guacamole from source</title>
        <indexterm>
            <primary>compiling</primary>
            <secondary>Guacamole</secondary>
        </indexterm>
        <para>Building the components of Guacamole from source is not difficult, providing you have
            the necessary tools installed already. The source for the entirety of Guacamole is
            available from the Guacamole project web site in convenient source archives, each named
            after the component they contain. Each archive also contains a file named
                <filename>README</filename> which lists detailed instructions for building and
            installing. </para>
        <para>Guacamole is separated into two pieces: <package>guacamole-server</package>, which
            provides the <package>guacd</package> proxy and related libraries, and
                <package>guacamole-client</package>, which provides the client to be served by your
            servlet container. In most cases, the only source you will need to build is
                <package>guacamole-server</package>, and downloading the latest
                <filename>guacamole.war</filename> from the project website will be sufficient to
            provide the client. Building <package>guacamole-client</package> is really only
            necessary when you wish to modify the source or when you want to try the latest
            unreleased changes.</para>
        <para>To compile the C components, you will need a C compiler (such as
                <package>gcc</package>) and the libraries that each component depends on. Note that
            many Linux distribution separates library packages into binary and "development"
            packages; you will need to install the development packages. These will usually end in a
            "-dev" or "-devel" suffix.</para>
        <section xml:id="compiling-guacamole-server">
            <title><package>guacamole-server</package></title>
            <indexterm>
                <primary><package>libguac</package></primary>
                <secondary>compiling</secondary>
            </indexterm>
            <indexterm>
                <primary>guacd</primary>
                <secondary>compiling</secondary>
            </indexterm>
            <indexterm>
                <primary>VNC support</primary>
                <secondary>compiling</secondary>
            </indexterm>
            <indexterm>
                <primary>RDP support</primary>
                <secondary>compiling</secondary>
            </indexterm>
            <indexterm>
                <primary>SSH support</primary>
                <secondary>compiling</secondary>
            </indexterm>
            <indexterm>
                <primary><package>libguac-client-vnc</package></primary>
                <secondary>compiling</secondary>
            </indexterm>
            <indexterm>
                <primary><package>libguac-client-rdp</package></primary>
                <secondary>compiling</secondary>
            </indexterm>
            <indexterm>
                <primary><package>libguac-client-ssh</package></primary>
                <secondary>compiling</secondary>
            </indexterm>
            <indexterm>
                <primary><package>guacamole-server</package></primary>
                <secondary>compiling</secondary>
            </indexterm>
            <para><package>guacamole-server</package> contains all the native, server-side
                components required by Guacamole to connect to remote desktops. It provides a common
                C library, <package>libguac</package>, which all other native components depend on,
                as well as separate libraries for each supported protocol, and a proxy daemon,
                    <package>guacd</package>, the heart of Guacamole.</para>
            <para><package>guacd</package> is the proxy daemon that runs on your Guacamole server,
                accepting connections from the Guacamole web application on behalf of remote users.
                It effectively translates between common remote desktop protocols like VNC or RDP by
                dynamically loading protocol support plugins. Building <package>guacd</package>
                creates an executable called <filename>guacd</filename> which can be run manually
                or, if you wish, automatically when your computer starts up.</para>
            <para>In order to build <package>guacamole-server</package>, you will need
                    <package>Cairo</package>, a graphics library, and <package>libpng</package>, the
                official PNG library. These libraries are strictly required <emphasis>in all
                    cases</emphasis>. Guacamole cannot be built without them. The other dependencies
                of <package>guacamole-server</package> are optional. Which libraries you will need
                to install depends on what support you need.</para>
            <para>Guacamole currently supports VNC, RDP, and SSH. Each protocol corresponds to a
                separate library that will be built with <package>guacamole-server</package> if you
                have its corresponding optional dependencies. VNC support depends on the
                    <package>libvncclient</package> library, which is part of
                    <package>libVNCServer</package>, RDP support depends on a recent version of
                    <package>FreeRDP</package> - 1.0 or higher, and SSH support depends on
                    <package>libssh</package> and <package>Pango</package>, a font rendering and
                text layout library.</para>
            <para>Optional features of these protocols will be enabled if you have other libraries
                installed as well. Currently, the RDP support also provides sound encoded with Ogg
                Vorbis if you have <package>libvorbis</package> installed while building
                    <package>guacamole-server</package>.</para>
            <para>You can obtain a copy of the <package>guacamole-server</package> source from the
                Guacamole project web site if you want the latest released code. These releases are
                stable snapshots of the latest code which have undergone enough testing that the
                Guacamole team considers them fit for public consumption. Source downloaded from the
                project web site will take the form of a <filename>.tar.gz</filename> archive which
                you can extract from the command line:</para>
            <informalexample>
                <screen><prompt>$</prompt> <userinput>tar -xzf guacamole-server-0.8.2.tar.gz</userinput>
<prompt>$</prompt> <userinput>cd guacamole-server-0.8.2/</userinput>
<prompt>$</prompt></screen>
            </informalexample>
            <para>If you want the absolute latest code, and don't care that the code hasn't been as
                rigorously tested as the code in stable releases, you can also clone the unstable
                branch from the Guacamole team's git repository on GitHub:</para>
            <informalexample>
                <screen><prompt>$</prompt> <userinput>git clone <uri>git://github.com/glyptodon/guacamole-server.git</uri> -b unstable</userinput>
<computeroutput>Cloning into 'guacamole-server'...
remote: Counting objects: 6769, done.
remote: Compressing objects: 100% (2244/2244), done.
remote: Total 6769 (delta 3058), reused 6718 (delta 3008)
Receiving objects: 100% (6769/6769), 2.32 MiB | 777 KiB/s, done.
Resolving deltas: 100% (3058/3058), done.</computeroutput>
<prompt>$</prompt></screen>
            </informalexample>
            <para>Once the <package>guacamole-server</package> source has been downloaded and
                extracted, you need to run <filename>configure</filename>. This is a shell script
                automatically generated by GNU Autotools, a popular build system used by the
                Guacamole project for <package>guacamole-server</package>. Running
                    <filename>configure</filename> will determine which libraries are available on
                your system and will select the appropriate components for building depending on
                what you actually have installed.</para>
            <important>
                <para>Source downloaded directly from git will not contain this
                        <filename>configure</filename> script, as autogenerated code is not included
                    in the project's repositories. If you downloaded the code from the project's git
                    repositories directly, you will need to generate <filename>configure</filename>
                    manually:</para>
                <informalexample>
                    <screen><prompt>$</prompt> <userinput>cd guacamole-server/</userinput>
<prompt>$</prompt> <userinput>autoreconf -fi</userinput>
<prompt>$</prompt></screen>
                    <para>Doing this requires GNU Autotools to be installed.</para>
                    <para>Source archives downloaded from the project website contain the
                            <filename>configure</filename> script and all other necessary build
                        files, and thus do not require GNU Autotools to be installed on the build
                        machine.</para>
                </informalexample>
            </important>
            <para>Once you run <filename>configure</filename>, you can see what a listing of what
                libraries were found and what it has determined should be built:</para>
            <informalexample>
                <screen><prompt>$</prompt> <userinput>./configure --with-init-dir=<replaceable>/etc/init.d</replaceable></userinput>
<computeroutput>checking for a BSD-compatible install... /usr/bin/install -c
checking whether build environment is sane... yes
...

------------------------------------------------
guacamole-server version 0.8.0
------------------------------------------------

   Library status:

     freerdp ............. yes
     pango ............... yes
     libssh .............. yes
     libVNCServer ........ yes
     libvorbisenc ........ yes

   Protocol support:

      RDP ....... yes
      SSH ....... yes
      VNC ....... yes

   Init scripts: /etc/init.d

Type "make" to compile guacamole-server.
</computeroutput>
<prompt>$</prompt></screen>
            </informalexample>
            <para><indexterm>
                    <primary><package>guacd</package></primary>
                    <secondary>startup script</secondary>
                </indexterm>The <option>--with-init-dir=/etc/init.d</option> shown above prepares
                the build to install a startup script for <package>guacd</package> into the
                    <filename>/etc/init.d</filename> directory, such that we can later easily
                configure <package>guacd</package> to start automatically on bot. If you do not wish
                guacd to start automatically at boot, leave off the <option>--with-init-dir</option>
                option. If the directory containing your distribution's startup scripts differs from
                the common <filename>/etc/init.d</filename>, replace
                    <filename>/etc/init.d</filename> with the proper directory here. You may need to
                consult your distribution's documentation, or do a little digging in
                    <filename>/etc</filename>, to determine the proper location.</para>
            <para>Here, <filename>configure</filename> has found everything, including all optional
                libraries, and will build all protocol support, even support for Ogg Vorbis sound in
                RDP. If you are missing some libraries, some of the
                    "<computeroutput>yes</computeroutput>" answers above will read
                    "<computeroutput>no</computeroutput>". If a library which is strictly required
                is missing, the script will fail outright, and you will need to install the missing
                dependency. If, after running <filename>configure</filename>, you find support for
                something you wanted is missing, simply install the corresponding dependencies and
                run <filename>configure</filename> again.</para>
            <para>Once <filename>configure</filename> is finished, just type
                    "<userinput>make</userinput>", and it will <package>guacamole-server</package>
                will compile:</para>
            <informalexample>
                <screen><prompt>$</prompt> <userinput>make</userinput>
<computeroutput>Making all in src/libguac
make[1]: Entering directory `/home/zhz/guacamole/guacamole-server/src/libguac'
...
make[1]: Leaving directory `/home/zhz/guacamole/guacamole-server/src/protocols/vnc'
make[1]: Entering directory `/home/zhz/guacamole/guacamole-server'
make[1]: Nothing to be done for `all-am'.
make[1]: Leaving directory `/home/zhz/guacamole/guacamole-server'</computeroutput>
<prompt>$</prompt></screen>
            </informalexample>
            <para>Quite a bit of output will scroll up the screen as all the components are
                compiled. Once everything finishes, all you have left to do is type "<userinput>make
                    install</userinput>" to install the components that were built, and then
                    "<userinput>ldconfig</userinput>" to update your system's cache of installed
                libraries:</para>
            <informalexample>
                <screen><prompt>#</prompt> <userinput>make install</userinput>
<computeroutput>Making install in src/libguac
make[1]: Entering directory `/home/zhz/guacamole/guacamole-server/src/libguac'
make[2]: Entering directory `/home/zhz/guacamole/guacamole-server/src/libguac'
...
----------------------------------------------------------------------
Libraries have been installed in:
   /usr/local/lib

If you ever happen to want to link against installed libraries
in a given directory, LIBDIR, you must either use libtool, and
specify the full pathname of the library, or use the `-LLIBDIR'
flag during linking and do at least one of the following:
   - add LIBDIR to the `LD_LIBRARY_PATH' environment variable
     during execution
   - add LIBDIR to the `LD_RUN_PATH' environment variable
     during linking
   - use the `-Wl,-rpath -Wl,LIBDIR' linker flag
   - have your system administrator add LIBDIR to `/etc/ld.so.conf'

See any operating system documentation about shared libraries for
more information, such as the ld(1) and ld.so(8) manual pages.
----------------------------------------------------------------------
make[2]: Nothing to be done for `install-data-am'.
make[2]: Leaving directory `/home/zhz/guacamole/guacamole-server/src/protocols/vnc'
make[1]: Leaving directory `/home/zhz/guacamole/guacamole-server/src/protocols/vnc'
make[1]: Entering directory `/home/zhz/guacamole/guacamole-server'
make[2]: Entering directory `/home/zhz/guacamole/guacamole-server'
make[2]: Nothing to be done for `install-exec-am'.
make[2]: Nothing to be done for `install-data-am'.
make[2]: Leaving directory `/home/zhz/guacamole/guacamole-server'
make[1]: Leaving directory `/home/zhz/guacamole/guacamole-server'</computeroutput>
<prompt>#</prompt> <userinput>ldconfig</userinput>
<prompt>#</prompt>   </screen>
            </informalexample>
            <para>At this point, everything is installed, but <package>guacd</package> is not
                running. You will need to run guacd in order to use Guacamole once the client
                components are installed as well.</para>
            <para>Beware that even after installing <package>guacd</package> and its startup script,
                you will likely still have to activate the service for it to start automatically.
                Doing this varies by distribution, but each distribution will have documentation
                describing how to do so.</para>
        </section>
        <section xml:id="compiling-guacamole-client">
            <title><package>guacamole-client</package></title>
            <indexterm>
                <primary><filename>guacamole.war</filename></primary>
                <secondary>compiling</secondary>
            </indexterm>
            <indexterm>
                <primary><package>guacamole-client</package></primary>
                <secondary>compiling</secondary>
            </indexterm>
            <para><package>guacamole-client</package> contains all Java and Maven components of
                Guacamole (<package>guacamole</package>, <package>guacamole-common</package>,
                    <package>guacamole-ext</package>, and <package>guacamole-common-js</package>).
                These components ultimately make up the web application that will serve the HTML5
                Guacamole client to users that connect to your server. This web application will
                connect to <package>guacd</package>, part of <package>guacamole-server</package>, on
                behalf of connected users in order to serve them any remote desktop they are
                authorized to access.</para>
            <para>Normally, you don't need to build <package>guacamole-client</package> manually, as
                it is written in Java and is cross-platform. The easiest way to obtain the latest
                version of <package>guacamole-client</package> is to simply download the latest
                    <filename>guacamole.war</filename> (the compiled form of
                    <package>guacamole-client</package>) from the Guacamole project web site.</para>
            <para>To compile <package>guacamole-client</package>, all you need is Apache Maven and a
                copy of the Java JDK. Most, if not all, Linux distributions will provide packages
                for these.</para>
            <para>You can obtain a copy of the <package>guacamole-client</package> source from the
                Guacamole project web site if you want the latest released code. These releases are
                stable snapshots of the latest code which have undergone enough testing that the
                Guacamole team considers them fit for public consumption. Source downloaded from the
                project web site will take the form of a <filename>.tar.gz</filename> archive which
                you can extract from the command line:</para>
            <informalexample>
                <screen><prompt>$</prompt> <userinput>tar -xzf guacamole-client-0.8.2.tar.gz</userinput>
<prompt>$</prompt> <userinput>cd guacamole-client-0.8.2/</userinput>
<prompt>$</prompt></screen>
            </informalexample>
            <para>As with <package>guacamole-server</package>, if you want the absolute latest code,
                and don't care that the code hasn't been as rigorously tested as the code in stable
                releases, you can also clone the unstable branch from the Guacamole team's git
                repository on GitHub:</para>
            <informalexample>
                <screen><prompt>$</prompt> <userinput>git clone <uri>git://github.com/glyptodon/guacamole-client.git</uri> -b unstable</userinput>
<computeroutput>Cloning into 'guacamole-client'...
remote: Counting objects: 12788, done.
remote: Compressing objects: 100% (4183/4183), done.
remote: Total 12788 (delta 3942), reused 12667 (delta 3822)
Receiving objects: 100% (12788/12788), 3.23 MiB | 799 KiB/s, done.
Resolving deltas: 100% (3942/3942), done.</computeroutput>
<prompt>$</prompt></screen>
            </informalexample>
            <para>Unlike <package>guacamole-server</package>, even if you grab the code from the git
                repositories, you won't need to run anything before building. There are no scripts
                that need to be generated before building - all Maven needs is the
                    <filename>pom.xml</filename> file provided with the source.</para>
            <para>To build <package>guacamole-client</package>, just run "<userinput>mvn
                    package</userinput>". This will invoke Maven to automatically build and package
                all components, producing a single <filename>.war</filename> file, which contains
                the entire web application:</para>
            <informalexample>
                <screen><prompt>$</prompt> <userinput>mvn package</userinput>
<computeroutput>[INFO] Scanning for projects...
[INFO] Reactor build order: 
[INFO]   guacamole-common
[INFO]   guacamole-ext
[INFO]   guacamole-common-js
[INFO]   guacamole
[INFO]   guacamole-client
...
[INFO] ------------------------------------------------------------------------
[INFO] Reactor Summary:
[INFO] ------------------------------------------------------------------------
[INFO] guacamole-common ...................................... SUCCESS [4.467s]
[INFO] guacamole-ext ......................................... SUCCESS [1.479s]
[INFO] guacamole-common-js ................................... SUCCESS [3.680s]
[INFO] guacamole ............................................. SUCCESS [3.729s]
[INFO] guacamole-client ...................................... SUCCESS [0.008s]
[INFO] ------------------------------------------------------------------------
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESSFUL
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 13 seconds
[INFO] Finished at: Mon Jul 08 00:44:42 PDT 2013
[INFO] Final Memory: 43M/354M
[INFO] ------------------------------------------------------------------------</computeroutput>
<prompt>$</prompt></screen>
            </informalexample>
            <para>Once the Guacamole web application is built, there will be a .war file in the
                    <filename>guacamole/target/</filename> subdirectory of the current directory
                (the directory you were in when you ran <application>mvn</application>). This
                    <filename>.war</filename> file contains the entirety of the Guacamole web
                application, including all dependencies. Installing Guacamole means copying this
                    <filename>.war</filename> file into the directory required by your servlet
                container.</para>
            <para>You will probably have to do this as the root user:</para>
            <informalexample>
                <screen><prompt>#</prompt> <userinput>cp guacamole/target/guacamole-0.8.2.war /var/lib/tomcat6/webapps/guacamole.war</userinput>
<prompt>#</prompt></screen>
            </informalexample>
            <para>The Guacamole web application also depends on a configuration file,
                    <filename>guacamole.properties</filename>, to tell it the type of authentication
                to use and how to connect to guacd. A functional example
                    <filename>guacamole.properties</filename> is contained in the
                    <filename>doc/</filename> subdirectory; you can simply copy this somewhere (like
                    <filename>/etc/guacamole</filename>) and then create a symbolic link to in a
                directory called <filename>.guacamole</filename> within the home directory of your
                servlet container. The home directory of your servlet container will be the home
                directory of the user that the servlet container runs as.</para>
            <informalexample>
                <screen><prompt>#</prompt> <userinput>mkdir /etc/guacamole</userinput>
<prompt>#</prompt> <userinput>mkdir <replaceable>/usr/share/tomcat6</replaceable>/.guacamole</userinput>
<prompt>#</prompt> <userinput>cp doc/guacamole.properties /etc/guacamole/guacamole.properties</userinput>
<prompt>#</prompt> <userinput>ln -s /etc/guacamole/guacamole.properties <replaceable>/usr/share/tomcat6</replaceable>/.guacamole/</userinput>
<prompt>#</prompt>           </screen>
            </informalexample>
            <para>You will need to edit <filename>guacamole.properties</filename> to be sure that
                all the settings are valid for your installation.</para>
            <para>If you are using the default authentication method, you will also need to install
                the <filename>user-mapping.xml</filename> file. This file describes the users that
                should be allowed to log into Guacamole, as well as their passwords, and all
                corresponding remote desktop connections they should have access to.</para>
            <para>An example <filename>user-mapping.xml</filename> file is provided in the
                    <filename>doc/</filename> subdirectory. You can simply copy this file to a
                reasonable location (like <filename>/etc/guacamole/user-mapping.xml</filename>) and
                then edit <filename>guacamole.properties</filename> to specify the correct location
                of this file.</para>
            <para>You will need to edit <filename>user-mapping.xml</filename> to add and remove
                users, as well as to remove the "default" users included as examples.</para>
        </section>
    </section>
    <section xml:id="deploying-guacamole">
        <title>Deploying Guacamole</title>
        <indexterm>
            <primary>deploying</primary>
        </indexterm>
        <para>Typically, deploying Guacamole is a one-time process, and needs to be done only when
            Guacamole is initially installed. If done correctly, future upgrades to Guacamole will
            be automatically deployed.</para>
        <para>There are two critical files involved in the deployment of Guacamole:
                <filename>guacamole.war</filename>, which is the file containing the web
            application, and <filename>guacamole.properties</filename>, the main configuration file
            for Guacamole. The recommend way to set up Guacamole involves placing these files in
            standard locations, and then creating symbolic links to them so that Tomcat can find
            them.</para>
        <para>Ultimately, the <filename>guacamole.war</filename> file, or a symbolic link to it,
            must be found by your servler container within the directory it uses for
                <filename>.war</filename> files, and the <filename>guacamole.properties</filename>
            file must be within the <filename>.guacamole</filename> directory in the home directory
            of the user your servlet container runs as. Legacy installations will have
                <filename>guacamole.properties</filename> placed in the classpath of the servlet
            container, but this is officially deprecated, and will be unsupported in future
            releases.</para>
        <para>We recommend placing <filename>guacamole.properties</filename> and any other
            configuration files in <filename>/etc/guacamole</filename>, and
                <filename>guacamole.war</filename> in <filename>/var/lib/guacamole</filename>. You
            will likely have to create each of these directories manually, as root.</para>
        <para>With these files in place, you can create symbolic links in the places Tomcat and
            Guacamole require them, such that future upgrades will only involve placing the new
            files in standard locations. The standard locations involved are the Tomcat
                "<filename>webapps</filename>" directory (below,
                <filename>/var/lib/tomcat6/webapps</filename>, but your installation may be
            different), and the "<filename>.guacamole</filename>" directory, which must be manually
            created within the Tomcat user's home directory.</para>
        <informalexample>
            <screen><prompt>#</prompt> <userinput>ln -s /var/lib/guacamole/guacamole.war <replaceable>/var/lib/tomcat6</replaceable>/webapps</userinput>
<prompt>#</prompt> <userinput>ln -s /etc/guacamole/guacamole.properties <replaceable>/usr/share/tomcat6</replaceable>/.guacamole/</userinput>
<prompt>#</prompt></screen>
        </informalexample>
        <para>If you are using a different servlet container or Tomcat is installed in a different
            location, you will need to replace the directories above with the corresponding
            directories of your install.</para>
        <para>Once Guacamole has been deployed, Tomcat must be restarted (as
                <filename>guacamole.properties</filename> will only be read on servlet container
            start) and the guacd daemon must be started if it isn't running already. After
            restarting Tomcat and starting guacd, Guacamole is successfully installed and
            running.</para>
        <para>The command to restart Tomcat and guacd will vary by distribution. Typically, you can
            do this by running the corresponding init scripts with the "restart" option:</para>
        <informalexample>
            <screen><prompt>#</prompt> <userinput>/etc/init.d/tomcat6 restart</userinput>
<computeroutput>Stopping Tomcat... OK
Starting Tomcat... OK</computeroutput>
<prompt>#</prompt> <userinput>/etc/init.d/guacd start</userinput>
<computeroutput>Starting guacd: SUCCESS
guacd[6229]: INFO:  Guacamole proxy daemon (guacd) version 0.7.0
guacd[6229]: INFO:  Unable to bind socket to host ::1, port 4822: Address family not supported by
protocol
guacd[6229]: INFO:  Successfully bound socket to host 127.0.0.1, port 4822
guacd[6229]: INFO:  Exiting and passing control to PID 6230
guacd[6230]: INFO:  Exiting and passing control to PID 6231</computeroutput>
<prompt>#</prompt></screen>
        </informalexample>
        <para>If you want Guacamole to start on boot, you will need to configure the tomcat6 and
            guacd services to run automatically. Your distribution will provide documentation for
            doing this.</para>
    </section>
    <section xml:id="mod-proxy">
        <title>Using Apache as a frontend (<package>mod_proxy</package>)</title>
        <para>Many users end up serving Guacamole through Apache using <package>mod_proxy</package>,
            a module which allows Apache to be used as a reverse proxy for other servers, such as a
            servlet container like Tomcat. The need to do this can range from simply wanting to use
            port 80, to sharing an SSL certificate with your web server, to security and load
            balancing.</para>
        <para>By default, servlet containers like Tomcat listen on port 8080, which is not the
            standard HTTP port (port 80). If you are using Linux (or another UNIX system), only the
            root user can run programs which listen on ports less than 1024, including port 80, and
            reducing the number of programs that run with root privileges is always a good
            idea.</para>
        <para>If you have an SSL certificate, it may make sense to use Apache for SSL processing and
            save Tomcat from having to do this itself, which may not be as efficient. Again, this
            also makes sense from the perspective of security, as it reduces the number of users
            that require read access to identifying certificates.</para>
        <para>While load balancing won't be covered here, if you are expecting large numbers of
            users, balancing the load on Tomcat across multiple Tomcat instances is a common
            solution.</para>
        <important>
            <para>Beware that, like the rest of this manual, we assume here that you are using
                Tomcat. If you are using a different servlet container, the same principles apply,
                and the Apache configuration examples will still be valid, with the notable
                exception of AJP, which may not be supported by your servlet container.</para>
        </important>
        <section xml:id="ajp-proxy">
            <title>Using AJP</title>
            <para>AJP is the Apache JServ Protocol - a protocol specifically designed for proxy
                communication between a web server like Apache and Tomcat. The AJP protocol is
                intended to be faster than HTTP when it comes to proxying web traffic, and it
                implements features that allow load balancing between multiple servlet
                containers.</para>
            <section>
                <title>Configuring Tomcat for AJP</title>
                <para>To allow AJP connections to Tomcat, you must add a connector to Tomcat's
                        <filename>conf/server.xml</filename>. There may already be an example
                    connector in your <filename>server.xml</filename>, in which case all you need to
                    do is uncomment it, editing the port number as desired:</para>
                <informalexample>
                    <programlisting>&lt;Connector port="8009" protocol="AJP/1.3"
    URIEncoding="UTF-8"
    redirectPort="8443" /></programlisting>
                </informalexample>
                <para>Tomcat must be restarted after the connector is added.</para>
                <para>The <code>URIEncoding="UTF-8"</code> attribute above ensures that connection
                    names, user names, etc. which contain non-latin characters are properly
                    received. If you will be creating connections that have Cyrillic, Chinese,
                    Japanese, etc. characters in the names or parameter values, you should be sure
                    to set this attribute.</para>
            </section>
            <section>
                <title>Forwarding HTTP requests over AJP</title>
                <para>Once the connector is open, and Tomcat is listening on the port specified, you
                    can edit your Apache configuration, adding a location which will proxy the
                    Guacamole web application served via AJP by Tomcat:</para>
                <informalexample>
                    <programlisting>&lt;Location /guacamole/>
    Order allow,deny
    Allow from all
    ProxyPass ajp://<replaceable>HOSTNAME</replaceable>:<replaceable>8009</replaceable>/guacamole/ max=20 flushpackets=on
    ProxyPassReverse ajp://<replaceable>HOSTNAME</replaceable>:<replaceable>8009</replaceable>/guacamole/
&lt;/Location></programlisting>
                </informalexample>
                <para>The most important thing in this entire section is the option
                        <option>flushpackets=on</option>. Most proxies, including
                        <package>mod_proxy</package>, will buffer all data sent over the connection,
                    waiting until the connection is closed before sending that data to the client.
                    As Guacamole's tunnel will stream data to the client over an open connection,
                    buffering this stream breaks Guacamole's communication.</para>
                <para><emphasis>If the option <option>flushpackets=on</option> is not specified,
                        Guacamole will not work</emphasis>.</para>
            </section>
        </section>
        <section xml:id="http-proxy">
            <title>Using HTTP</title>
            <para>If you don't wish to use AJP, the default HTTP connector (or any HTTP connector)
                can be used without any noticable performance hit.</para>
            <section>
                <title>Configuring Tomcat for HTTP</title>
                <para>Tomcat is most likely already configured to listen for HTTP connections on
                    port 8080 as this is the default. In the case that the default HTTP connector
                    has been disabled or removed, you need to add a connector entry to
                        <filename>conf/server.xml</filename>:</para>
                <informalexample>
                    <programlisting>&lt;Connector port="8080" protocol="HTTP/1.1" 
           connectionTimeout="20000"
           URIEncoding="UTF-8"
           redirectPort="8443" /></programlisting>
                </informalexample>
                <important>
                    <para>If you want to edit or add this connector just to change the port used by
                        Tomcat to port 80, you should consider simply proxying the original port
                        through Apache instead. On Linux and UNIX systems, a process must be running
                        with root privileges to listen on any port under 1024, including port 80.
                        Proxying Tomcat through Apache means Tomcat can run as a reduced-privilege
                        user, while Apache can bear the burden of root privileges. Further, as
                        Apache is a native application, it can make system calls to safely drop root
                        privileges once the port is open; a Java application like Tomcat cannot do
                        this.</para>
                </important>
                <para>As with AJP, be sure to specify the <code>URIEncoding="UTF-8"</code> attribute
                    as above to ensure that connection names, user names, etc. are properly
                    received. If you will be creating connections that have Cyrillic, Chinese,
                    Japanese, etc. characters in the names or parameter values, this attribute is
                    required.</para>
            </section>
            <section>
                <title>Forwarding HTTP requests over HTTP</title>
                <para>The configuration necessary to proxy HTTP requests is similar to the
                    configuration required for proxying requests through AJP. In fact, it is
                    completely identical except for the differing protocol names in the URIs given
                    to the proxy directives:</para>
                <informalexample>
                    <programlisting>&lt;Location /guacamole/>
    Order allow,deny
    Allow from all
    ProxyPass http://<replaceable>HOSTNAME</replaceable>:<replaceable>8080</replaceable>/guacamole/ max=20 flushpackets=on
    ProxyPassReverse http://<replaceable>HOSTNAME</replaceable>:<replaceable>8080</replaceable>/guacamole/
&lt;/Location></programlisting>
                </informalexample>
                <para>Again, take note of the option <option>flushpackets=on</option>. This option
                    is absolutely critical as <package>mod_proxy</package> will otherwise buffer all
                    data sent over the connection, rendering Guacamole unusable.</para>
                <para><emphasis>If the option <option>flushpackets=on</option> is not specified,
                        Guacamole will not work</emphasis>.</para>
            </section>
        </section>
        <section xml:id="disable-tunnel-logging">
            <title>Disable logging of tunnel requests</title>
            <para>The Guacamole HTTP tunnel works by transferring a continuous stream of data over
                multiple short-lived streams, each associated with a separate HTTP request. Each
                HTTP request will be logged by Apache if you don not explicitly disable logging of
                those requests.</para>
            <para>Apache provides a means of matching URL patterns and setting environment variables
                based on whether the URL matches. Logging can then be restricted to requests which
                lack this environment variable:</para>
            <informalexample>
                <programlisting>SetEnvIf Request_URI "^<replaceable>/guacamole</replaceable>/tunnel" dontlog
CustomLog  <replaceable>/var/log/apache2/guac.log</replaceable> common env=!dontlog</programlisting>
            </informalexample>
            <para>There is little value in a log file filled with identical tunnel requests.</para>
            <para>Note that if you are serving Guacamole under a path different from
                    <uri>/guacamole/</uri>, you will need to change the value of
                    <parameter>Request_URI</parameter> above accordingly.</para>
        </section>
        <section xml:id="change-web-app-path">
            <title>Proxying under a different path</title>
            <para>If you wish to serve Guacamole through Apache under a different path than it is
                served under Tomcat, the configuration required for Apache will be slightly
                different than the examples above due to cookies.</para>
            <para>When a user logs in to Guacamole, a new session is created, and that session is
                associated with a cookie sent to the user after they successfully log in. This
                cookie is specific to the absolute path of the web application
                    (<uri>/guacamole</uri>). If the path being used for Guacamole under Apache
                differs from that used by Tomcat, the path in the cookie needs to be modified.
                Thankfully, <package>mod_proxy</package> has a directive for this:
                    <parameter>ProxyPassReverseCookiePath</parameter>.</para>
            <informalexample>
                <programlisting>&lt;Location /<replaceable>new-path/</replaceable>>
    Order allow,deny
    Allow from all
    ProxyPass ajp://<replaceable>HOSTNAME</replaceable>:<replaceable>8009</replaceable>/guacamole/ max=20 flushpackets=on
    ProxyPassReverse ajp://<replaceable>HOSTNAME</replaceable>:<replaceable>8009</replaceable>/guacamole/
    ProxyPassReverseCookiePath /guacamole/ <replaceable>/new-path/</replaceable>
&lt;/Location></programlisting>
            </informalexample>
            <para>The configuration shown above is similar to the configuration shown for generic
                AJP proxying, except that the additional
                    <parameter>ProxyPassReverseCookiePath</parameter> directive is given,
                instructing <package>mod_proxy</package> to update the cookie path, changing
                    <uri>/guacamole/</uri> to <uri>/new-path/</uri>, the same path specified when
                the location was declared.</para>
        </section>
    </section>
</chapter>
