<?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>There is also a PPA which contains the most recent stable build of Guacamole while
                updates to the official Debian and Ubuntu repositories are pending. If you don't
                want to wait for the main repositories to update, users of Ubuntu can just add the
                PPA and install the packages from there:</para>
            <informalexample>
                <indexterm>
                    <primary>PPA</primary>
                </indexterm>
                <screen><prompt>$</prompt> <userinput>sudo add-apt-repository ppa:guacamole/stable</userinput>
<computeroutput>[sudo] password for user: 
You are about to add the following PPA to your system:
 The most recent stable release of Guacamole and its components. The packages
here use the same packaging as the downstream Debian and Ubuntu packages, but
are updated more frequently, usually while the corresponding downstream
packages are under official review.
 More info: https://launchpad.net/~guacamole/+archive/stable
Press [ENTER] to continue or ctrl-c to cancel adding it

gpg: keyring `/tmp/tmpc7ipgi/secring.gpg' created
gpg: keyring `/tmp/tmpc7ipgi/pubring.gpg' created
gpg: requesting key 106BB296 from hkp server keyserver.ubuntu.com
gpg: /tmp/tmpc7ipgi/trustdb.gpg: trustdb created
gpg: key 106BB296: public key "Launchpad PPA for Guacamole" imported
gpg: Total number processed: 1
gpg:               imported: 1  (RSA: 1)
OK</computeroutput>
<prompt>$</prompt> </screen>
            </informalexample>
            <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-privilege <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 automatically 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 servlet 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>telnet 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>libguac-client-telnet</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 OSSP UUID library
                is also needed, for the sake of assigning unique identifiers to each Guacamole
                connection. 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, SSH, and telnet. 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, SSH support depends on
                    <package>libssh2</package>, and telnet depends on <package>libtelnet</package>.
                    <package>Pango</package>, a font rendering and text layout library, is required
                for both SSH and telnet support.</para>
            <para>Optional features of these protocols will be enabled if you have other libraries
                installed.</para>
            <informaltable frame="all">
                <tgroup cols="3">
                    <colspec colname="c1" colnum="1" colwidth="1*"/>
                    <colspec colname="c2" colnum="2" colwidth="1*"/>
                    <colspec colname="c3" colnum="3" colwidth="3.8*"/>
                    <thead>
                        <row>
                            <entry>Library name</entry>
                            <entry>Required?</entry>
                            <entry>Features</entry>
                        </row>
                    </thead>
                    <tbody>
                        <row>
                            <entry>Cairo</entry>
                            <entry>Yes.</entry>
                            <entry>
                                <para>Cairo is used by libguac for graphics rendering. Guacamole
                                    cannot function without Cairo installed.</para>
                            </entry>
                        </row>
                        <row>
                            <entry>libpng</entry>
                            <entry>Yes.</entry>
                            <entry>
                                <para>libpng is used by libguac to write PNG images, the core image
                                    type used by the Guacamole protocol. Guacamole cannot function
                                    without libpng.</para>
                            </entry>
                        </row>
                        <row>
                            <entry>OSSP UUID</entry>
                            <entry>Yes.</entry>
                            <entry>
                                <para>OSSP UUID is used by libguac to assign unique IDs to each
                                    Guacamole connection. These unique IDs are the basis for
                                    connection sharing support.</para>
                            </entry>
                        </row>
                        <row>
                            <entry>FreeRDP</entry>
                            <entry>Only for RDP.</entry>
                            <entry>
                                <para>FreeRDP is required for RDP support. If you do not wish to
                                    build RDP support, this library is not needed.</para>
                            </entry>
                        </row>
                        <row>
                            <entry>Pango</entry>
                            <entry>For SSH or telnet.</entry>
                            <entry>
                                <para>Pango is a text layout library which Guacamole's SSH and
                                    telnet support uses to render text. If you do not wish to build
                                    SSH or telnet support, this library is not needed.</para>
                            </entry>
                        </row>
                        <row>
                            <entry>libssh2</entry>
                            <entry>Only for SSH.</entry>
                            <entry>
                                <para>libssh2 is required for SSH support. If you do not wish to
                                    build SSH support, this library is not needed.</para>
                            </entry>
                        </row>
                        <row>
                            <entry>libtelnet</entry>
                            <entry>Only for telnet.</entry>
                            <entry>
                                <para>libtelnet is required for telnet support. If you do not wish
                                    to build telnet support, this library is not needed.</para>
                            </entry>
                        </row>
                        <row>
                            <entry>libVNCServer</entry>
                            <entry>Only for VNC.</entry>
                            <entry>
                                <para>libVNCServer provides libvncclient which is required for VNC
                                    support. If you do not wish to build VNC support, this library
                                    is not needed.</para>
                            </entry>
                        </row>
                        <row>
                            <entry>libpulse</entry>
                            <entry>No.</entry>
                            <entry>
                                <para>libpulse provides support for PulseAudio, which is used by
                                    Guacamole's VNC support to provide experimental audio. If you
                                    are not going to be using the experimental audio support for
                                    VNC, you do not need this library.</para>
                            </entry>
                        </row>
                        <row>
                            <entry>libssl</entry>
                            <entry>For SSH and for SSL connections to guacd.</entry>
                            <entry>
                                <para>libssl provides support for SSL and TLS - two common
                                    encryption schemes that make up the majority of encrypted web
                                    traffic.</para>
                                <para>If you have libssl installed, guacd will be built with SSL
                                    support, allowing communication between the web application and
                                    guacd to be encrypted. This library is also required for SSH
                                    support for the sake of manipulating public/private keys.</para>
                                <para>Without SSL support, there will be no option to encrypt
                                    communication to guacd, and support for SSH cannot be
                                    built.</para>
                            </entry>
                        </row>
                        <row>
                            <entry>libvorbis</entry>
                            <entry>No.</entry>
                            <entry>
                                <para>libvorbis provides support for Ogg Vorbis - a free and open
                                    standard for sound compression. If installed, libguac will be
                                    built with support for Ogg Vorbis, and protocols supporting
                                    audio will use Ogg Vorbis compression when possible.</para>
                                <para>Otherwise, sound will only be encoded as WAV (uncompressed),
                                    and will only be available if your browser also supports
                                    WAV.</para>
                            </entry>
                        </row>
                    </tbody>
                </tgroup>
            </informaltable>
            <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.9.3.tar.gz</userinput>
<prompt>$</prompt> <userinput>cd guacamole-server-0.9.3/</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 Guacamole
                team's git repository on GitHub:</para>
            <informalexample>
                <screen><prompt>$</prompt> <userinput>git clone <uri>git://github.com/glyptodon/guacamole-server.git</uri></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.9.3
------------------------------------------------

   Library status:

     freerdp ............. yes
     pango ............... yes
     libssh2 ............. yes
     libssl .............. yes
     libtelnet ........... yes
     libVNCServer ........ yes
     libvorbis ........... yes
     libpulse ............ yes

   Protocol support:

      RDP ....... yes
      SSH ....... yes
      Telnet .... 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 boot. 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>
            <important>
                <para>SSH and telnet support both require that fonts are installed in order to
                    function - output from the terminal cannot be rendered otherwise. Support for
                    SSH and telnet will build just fine if fonts are not installed, but it will fail
                    to connect when used:</para>
                <informalexample>
                    <screen>Aug 23 14:09:45 my-server guacd[5606]: Unable to get font "monospace"</screen>
                </informalexample>
                <para>If SSH or telnet connections are not working and you see such a message in
                    syslog, install fonts and try again.</para>
            </important>
            <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.9.3.tar.gz</userinput>
<prompt>$</prompt> <userinput>cd guacamole-client-0.9.3/</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 Guacamole team's git repository on GitHub:</para>
            <informalexample>
                <screen><prompt>$</prompt> <userinput>git clone <uri>git://github.com/glyptodon/guacamole-client.git</uri></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.9.3.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 guacamole/doc/example/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 servlet 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 <replaceable>http://HOSTNAME</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>
                <para>Note also the protocol of the URL specified in the
                        <parameter>ProxyPassReverse</parameter> directive. The protocol
                        <emphasis>MUST</emphasis> match the protocol that will be used to connect to
                    to Apache. The example above specifies <replaceable>http</replaceable>, but if
                    you are using HTTPS then the URL specified here will have to reflect
                    this.</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 noticeable 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 <replaceable>http://HOSTNAME</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>
            <para>Be careful when specifying the URL in the <parameter>ProxyPassReverse</parameter>
                directive. The protocol of the URL <emphasis>MUST</emphasis> match the protocol that
                will be used to connect to to Apache, even if it differs from the protocol being
                used to connect to Tomcat.</para>
        </section>
    </section>
</chapter>
