Apache Guacamole 0.9.10-incubating is an archived release, and was originally released on 2016-12-29. The latest release of Apache Guacamole is 1.5.5.
Apache Guacamole is split into two subprojects: "guacamole-client", the HTML5 web application which serves the Guacamole client to users, and "guacamole-server", the remote desktop proxy which the web application communicates with. The source code for each of these may be downloaded below.
You must verify the integrity of any downloaded files using the OpenPGP signatures we provide with each release. The signatures should be verified against the KEYS file, which contains the OpenPGP keys of Apache Guacamole's Release Managers. Checksums of each released file are also provided.
Filename | Signatures / Hashes |
---|---|
guacamole-client-0.9.10-incubating.tar.gz | MD5 SHA PGP |
guacamole-server-0.9.10-incubating.tar.gz | MD5 SHA PGP |
If you do not wish to build Apache Guacamole entirely from source, pre-built versions of the web application (.war) and all extensions are provided here in binary form for convenience. Please note that guacamole-server must still be built and installed from source.
The 0.9.10-incubating release is Apache Guacamole’s first release under the Apache Incubator. It features support for both screen sharing and recording, improved file transfer behavior, and support for LDAP within the Docker images. Local clipboard integration has also been added (for those browsers which support it), as well as audio input for RDP, theming/branding via extensions, and several other improvements.
This release contains changes which break compatibility with past releases. Please see the deprecation / compatibility notes section for more information.
The Guacamole project has been accepted into the Apache
Incubator, and is thus now Apache Guacamole
(incubating). Beyond simply moving the website, this necessitated a number of
changes, including switching to the Apache
License and migrating Guacamole’s
Java API and Maven artifacts from org.glyptodon.guacamole
to
org.apache.guacamole
. If you are simply using the Guacamole web application
as-is, the transition should be fairly seamless, but downstream users of the
APIs will need to update their source to make use of this release.
Guacamole now supports screen sharing for all protocols, even those which do not inherently support it, like RDP and SSH. When granted permission, users can generate temporary share links for their active connections, with those links being invalidated when they disconnect. The degree of access granted by a share link is defined by the “sharing profile” used to generate that link.
All supported protocols (VNC, RDP, SSH, and telnet) can now be configured to record sessions to disk for later playback. These session recordings are actually Guacamole protocol dumps of the graphical updates being sent from the Guacamole server to users of that connection. They can be converted to a normal video stream using the new “guacenc” utility, which is part of the guacamole-server build.
Additionally, text-based protocols (SSH and telnet) can record sessions as
text, using the same two-file format used by the script
and scriptreplay
commands.
The Guacamole web application now handles file transfers via HTTP. This speeds things up considerably, removes limitations on file size imposed by JavaScript, and removes the need for manually initiating the actual download by clicking a link.
File transfer is still handled via the Guacamole protocol. The streams are dynamically intercepted, stripped, and exposed via HTTP by the web application in response to specific REST API requests. This is strictly a frontend change and does not affect the core Guacamole stack and protocol, which continues to handle file transfer as it always has.
RDP’s AUDIO_INPUT
channel is now supported. If your RDP server supports audio
input, corresponding support can be enabled on your RDP connections in
Guacamole.
Audio recording only occurs when an application running within the remote desktop requests access, and then only if that access is granted by the user. The user will be prompted by their browser to allow or deny access.
Use of the numeric keypad was broken in version 0.9.9. This should now be fixed.
New keymaps for RDP have also been contributed, including Dutch, Japanese, and fixes for the existing French layout.
Guacamole will now use the W3C Clipboard
API (document.execCommand()
) to
attempt to read the local clipboard. Few browsers allow this in circumstances
compatible with remote desktop, IE11 among them. If this fails, things continue
to work as they have in past releases (clipboard access via the Guacamole
menu/sidebar).
IE11 will prompt the user to allow clipboard access. Other browsers will typically deny access without any sort of prompt. For Chrome, there is a third-party extension, Clipboard Permission Manager, which allows the user to grant unrestricted access to the W3C Clipboard API on a per-domain basis.
Guacamole’s extension system now supports modification of the HTML structure in addition to the authentication and CSS/JavaScript/translation modification components. This is achieved through specially-formatted HTML “patches”, documented in more detail within the manual.
The Guacamole Docker images have been updated to support LDAP, as well as the concurrency limit properties of the database authentication backend.
Support for role-based access control within LDAP via the standard seeAlso
attribute has been added, allowing access to connections to be dictated on a
per-group basis, rather than strictly per-user.
Guacamole’s administrative interface has also been mildly enhanced, adding a convenient “Clone” button for copying users and their associated permissions (similar to the “Clone” button already available for connections).
Administrators can now restrict the total number of active connections allowed by a Guacamole server. Unlike other existing concurrency limits, this limit ignores connection and user identity; it is a strict absolute limit covering overall use.
For the cases where balancing groups may route users to any one of several desktops, and it is important that users are consistently routed to the same desktop to avoid losing work, administrators can now enable “session affinity” on those balancing groups. Users of those balancing groups will then be directed to the same underlying connection until they logout from Guacamole.
Both SSH and telnet now expose raw text output via the Guacamole protocol’s “pipe streams” (essentially named pipes). Though not leveraged by the Guacamole web application, downstream users of the Guacamole API can grab and handle the data sent along these streams as they see fit using client-side JavaScript.
This latest release of Guacamole also includes fixes for minor usability issues in IE11, failures to render errors properly under certain circumstances, and typos in Guacamole’s French translation.
As of 0.9.10-incubating, the following changes have been made which affect compatibility with past releases:
The MySQL and PostgreSQL schemas have changed to facilitate screen sharing
support. Users of the database authentication will need to run the
upgrade-pre-0.9.10.sql
script specific to their chosen database.
basic-user-mapping
propertyThe basic-user-mapping
property used to specify an alternative location for
user-mapping.xml
is now deprecated. The property will continue to function as
in previous releases, but a warning will be logged advising of its deprecation.
Administrators should instead place their user-mapping.xml
files directly
within GUACAMOLE_HOME
.
lib-directory
and auth-provider
propertiesThe lib-directory
and auth-provider
properties have been deprecated since
the 0.9.7 release, in favor of a self-contained extension format which does not
require their use. From 0.9.7 on, though these properties still functioned as
in 0.9.6 and older, a warning was logged advising of their deprecation.
These properties have now been removed, and configurations which rely on these
properties will need to use the extensions/
directory within
GUACAMOLE_HOME
instead.
org.glyptodon.guacamole
to org.apache.guacamole
As Guacamole is now a project operating under the Apache Incubator, its Java
classes and Maven artifacts have moved from the org.glyptodon.guacamole
package and groupId to org.apache.guacamole
. Downstream developers using
Guacamole’s APIs will need to update their source code accordingly.
The Guacamole extension API (guacamole-ext) been changed to provide for storage of sharing profile data, and to allow for extensions to generate temporary credentials for shared connections. If you have written an extension for Guacamole, you may need to implement additional functions in addition to rebuilding your extension against the latest.
These changes center around the addition of the Shareable
and
SharingProfile
interfaces, and primarily affect implementations of the following interfaces:
The updated guacamole-ext overview within the manual covers these changes, particularly the managing/sharing active connections section.
The libguac API has been extensively modified for the sake of screen sharing.
A new guac_user
structure has been added to represent each user sharing a logical connection,
where that connection is represented by
guac_client
. This
requires a completely new initialization flow for protocol support
implementations, and any plugins which provide additional protocol support for
guacd will need to be updated.
These changes are documented in more detail in the updated libguac overview within the manual.