• This repository has been archived on 14/Nov/2023
  • Stars
    star
    99
  • Rank 343,239 (Top 7 %)
  • Language
  • License
    Apache License 2.0
  • Created over 9 years ago
  • Updated over 7 years ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

Docker image for Guacamole - the clientless remote desktop gateway.

What is Guacamole?

Guacamole is a clientless remote desktop gateway. It supports standard protocols like VNC and RDP. 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.

How to use this image

Using this image will require an existing, running Docker container with the guacd image, and another Docker container providing either a PostgreSQL or MySQL database.

The name of the database and all associated credentials are specified with environment variables given when the container is created. All other configuration information is generated from the Docker links.

Beware that you will need to initialize the database manually. Guacamole will not automatically create its own tables, but SQL scripts are provided to do this.

Once the Guacamole image is running, Guacamole will be accessible at http://[address of container]:8080/guacamole/. The instructions below use the -p 8080:8080 option to expose this port at the level of the machine hosting Docker, as well.

Deploying Guacamole with PostgreSQL authentication

docker run --name some-guacamole --link some-guacd:guacd \
    --link some-postgres:postgres      \
    -e POSTGRES_DATABASE=guacamole_db  \
    -e POSTGRES_USER=guacamole_user    \
    -e POSTGRES_PASSWORD=some_password \
    -d -p 8080:8080 glyptodon/guacamole

Linking Guacamole to PostgreSQL requires three environment variables. If any of these environment variables are omitted, you will receive an error message, and the image will stop:

  1. POSTGRES_DATABASE - The name of the database to use for Guacamole authentication.
  2. POSTGRES_USER - The user that Guacamole will use to connect to PostgreSQL.
  3. POSTGRES_PASSWORD - The password that Guacamole will provide when connecting to PostgreSQL as POSTGRES_USER.

Initializing the PostgreSQL database

If your database is not already initialized with the Guacamole schema, you will need to do so prior to using Guacamole. A convenience script for generating the necessary SQL to do this is included in the Guacamole image.

To generate a SQL script which can be used to initialize a fresh PostgreSQL database as documented in the Guacamole manual:

docker run --rm glyptodon/guacamole /opt/guacamole/bin/initdb.sh --postgres > initdb.sql

Alternatively, you can use the SQL scripts included with guacamole-auth-jdbc.

Once this script is generated, you must:

  1. Create a database for Guacamole within PostgreSQL, such as guacamole_db.
  2. Run the script on the newly-created database.
  3. Create a user for Guacamole within PostgreSQL with access to the tables and sequences of this database, such as guacamole_user.

The process for doing this via the psql and createdb utilities included with PostgreSQL is documented in the Guacamole manual.

Deploying Guacamole with MySQL authentication

docker run --name some-guacamole --link some-guacd:guacd \
    --link some-mysql:mysql         \
    -e MYSQL_DATABASE=guacamole_db  \
    -e MYSQL_USER=guacamole_user    \
    -e MYSQL_PASSWORD=some_password \
    -d -p 8080:8080 glyptodon/guacamole

Linking Guacamole to MySQL requires three environment variables. If any of these environment variables are omitted, you will receive an error message, and the image will stop:

  1. MYSQL_DATABASE - The name of the database to use for Guacamole authentication.
  2. MYSQL_USER - The user that Guacamole will use to connect to MySQL.
  3. MYSQL_PASSWORD - The password that Guacamole will provide when connecting to MySQL as MYSQL_USER.

Initializing the MySQL database

If your database is not already initialized with the Guacamole schema, you will need to do so prior to using Guacamole. A convenience script for generating the necessary SQL to do this is included in the Guacamole image.

To generate a SQL script which can be used to initialize a fresh MySQL database as documented in the Guacamole manual:

docker run --rm glyptodon/guacamole /opt/guacamole/bin/initdb.sh --mysql > initdb.sql

Alternatively, you can use the SQL scripts included with guacamole-auth-jdbc.

Once this script is generated, you must:

  1. Create a database for Guacamole within MySQL, such as guacamole_db.
  2. Create a user for Guacamole within MySQL with access to this database, such as guacamole_user.
  3. Run the script on the newly-created database.

The process for doing this via the mysql utility included with MySQL is documented in the Guacamole manual.

Reporting issues

Please report any bugs encountered by opening a new issue in our JIRA.

More Repositories

1

guacamole-client

The Guacamole project is now Apache Guacamole (http://guacamole.apache.org/). This repository has been repurposed as the base for the Apache Guacamole packages built for Glyptodon Enterprise.
Java
1,078
star
2

guacamole-server

The Guacamole project is now Apache Guacamole (http://guacamole.apache.org/). This repository has been repurposed as the base for the Apache Guacamole packages built for Glyptodon Enterprise.
C
1,014
star
3

guacamole-test-suite

Test suite for implementations of the Guacamole protocol.
Java
23
star
4

guacd-docker

Docker image for guacd - the server-side, native proxy used by the Guacamole web application.
23
star
5

clipboard-permission-manager

Browser extension which allows users to grant JavaScript access to the clipboard on a per-page basis.
JavaScript
22
star
6

guacamole-manual

The base documentation for the entire Guacamole stack.
Python
21
star
7

glyptodon-enterprise-player

Session recording player for Glyptodon Enterprise and Apache Guacamole.
JavaScript
15
star
8

guacamole-auth-json

Guacamole authentication extension which authenticates users by reading their connection data from JSON which has been encrypted and signed with a secret key.
Java
13
star
9

guacamole-auth-callback

An extension for Apache Guacamole which authenticates users against an arbitrary HTTP service.
Java
6
star
10

guacamole-connection-tester

Connection testing extension for Guacamole which verifies the responsiveness of a pool of Guacamole servers.
JavaScript
5
star
11

guacamole-proxy-authrequest

Extension for Apache Guacamole which allows requests for other, proxied web applications to be tied to the authenticated status of the user within Guacamole.
Java
4
star
12

guacamole-framebreak

Apache Guacamole extension which adds framebreaking JavaScript to defend against clickjacking attacks.
JavaScript
4
star
13

dogobase

Simple base web application for use in coding interviews.
Java
2
star
14

mingw-libguac-example

Example application demonstrating basic use of libguac and the Guacamole protocol within Windows applications.
C
2
star
15

guacamole-auth-restrict

Extension for Apache Guacamole which enforces additional restrictions on users and user groups.
Java
2
star
16

guacamole-dev-util

Extension for Apache Guacamole which provides utility functions for testing and development.
JavaScript
1
star