Apache Guacamole

Apache Guacamole is a clientless remote desktop gateway. It supports standard protocols like VNC, RDP, and SSH.

We call it clientless because no plugins or client software are required.

Thanks to HTML5, once Guacamole is installed on a server, all you need to access your desktops is a web browser.


  • Access your computers from anywhere

    Because the Guacamole client is an HTML5 web application, use of your computers is not tied to any one device or location. As long as you have access to a web browser, you have access to your machines.

  • Keep your desktop in the cloud

    Desktops accessed through Guacamole need not physically exist. With both Guacamole and a desktop operating system hosted in the cloud, you can combine the convenience of Guacamole with the resilience and flexibility of cloud computing.

  • Free and open source

    Apache Guacamole is and will always be free and open source software. It is licensed under the Apache License, Version 2.0, and is actively maintained by a community of developers that use Guacamole to access their own development environments.

    We feel this sets us apart from other remote desktop solutions, and gives us a distinct advantage.

  • Built on a well-documented API

    Apache Guacamole is built on its own stack of core APIs which are thoroughly documented, including basic tutorials and conceptual overviews in the online manual. These APIs allow Guacamole to be tightly integrated into other applications, whether they be open source or proprietary.

  • Commercially supported

    For enterprises, dedicated commercial support is also available through third party companies.



Replace RDP, SSH and Team Viewer with free open source web-based client-less remote desktop/server gateway.


Setup Guacamole Remote Desktop Gateway on Ubuntu with one script.

Required dependencies

In order to build guacamole-server, you will need Cairolibjpeglibpng, and the OSSP UUID library. These libraries are strictly required in all cases – Guacamole cannot be built without them.

Library name Features
Cairo Cairo is used by libguac for graphics rendering. Guacamole cannot function without Cairo installed.

Debian / Ubuntu package libcairo2-dev
Fedora / CentOS / RHEL package cairo-devel
libjpeg-turbo libjpeg-turbo is used by libguac to provide JPEG support. Guacamole will not build without this library present:

Debian package libjpeg62-turbo-dev
Ubuntu package libjpeg-turbo8-dev
Fedora / CentOS / RHEL package libjpeg-turbo-devel

If libjpeg-turbo is unavailable on your platform, and you do not wish to build it from source, libjpeg will work as well, though it will not be quite as fast:

Debian / Ubuntu package libjpeg62-dev
Fedora / CentOS / RHEL package libjpeg-devel
libpng libpng is used by libguac to write PNG images, the core image type used by the Guacamole protocol. Guacamole cannot function without libpng.

Debian / Ubuntu package libpng12-dev
Fedora / CentOS / RHEL package libpng-devel
libtool libtool is used during the build process. libtool creates compiled libraries needed for Guacamole.

Debian / Ubuntu package libtool-bin
Fedora / CentOS / RHEL package libtool
OSSP UUID OSSP UUID is used by libguac to assign unique IDs to each Guacamole connection. These unique IDs are the basis for connection sharing support.

Debian / Ubuntu package libossp-uuid-dev
Fedora / CentOS / RHEL package uuid-devel

Optional dependencies

The optional dependencies of Guacamole dictate which parts of guacamole-server will be built. This includes the support for various remote desktop protocols, as well as any additional features of those protocols:

  • VNC support depends on the libvncclient library, which is part of libVNCServer.
  • RDP support depends on a recent version of FreeRDP (1.0 or higher, but please not a non-release version from git).
  • SSH support depends on libssh2OpenSSL and Pango (a font rendering and text layout library, used by Guacamole’s built-in terminal emulator).
  • Telnet depends on libtelnet and Pango.
  • Kubernetes support depends on libwebsocketsOpenSSL, and Pango.

The guacenc utility, provided by guacamole-server to translate screen recordings into video, depends on FFmpeg, and will only be built if at least the libavcodeclibavutil, and libswscale libraries provided by FFmpeg are installed.



Obtaining the source code

You can obtain a copy of the guacamole-server source from the Guacamole project web site. 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 .tar.gz archive which you can extract from the command line:

$ tar -xzf guacamole-server-1.1.0.tar.gz $ cd guacamole-server-1.1.0/ $

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:

$ git clone git://github.com/apache/guacamole-server.git 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.










Leave a Reply

Please log in using one of these methods to post your comment:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Google photo

You are commenting using your Google account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s

This site uses Akismet to reduce spam. Learn how your comment data is processed.