Git Product home page Git Product logo

compose-guacamole's Introduction

compose-guacamole

Guacamole is a really useful tool, but can be difficult to setup properly. The deployment process can be greatly simplified using docker containers, and orchestrated using docker-compose.

This is a sample configuration for docker-compose that puts together all the components needed to deploy guacamole in a containerized environment. I merely fixed it and updated it to the newer official containers as of November 2017.

This is currently version-pinned to 0.9.12-incubating, since the database Dockerfile requires the client repository to be properly tagged to extract the database schema, and at the time of this writing there wasn't a newer tag.

Usage

Assuming you already have a working Docker installation and docker-compose, setup is really easy.

git clone [email protected]:BrowncoatShadow/compose-guacamole.git
cd docker-compose-guacamole
docker-compose up -d

Give it a few seconds to initialize and then you can access guacamole at http://docker-host:8080/guacamole/. The default username and password are both guacadmin (go to your user preferences to change it, and then create another user for regular use).

You definitely want to open the .env file and change the example database passwords before deploying this to anything resembling a production environment.

Behind the Scenes

docker-compose brings together several components to make this work.

  • guacamole_data - A persistent data volume that stores all the data even if the containers are destroyed.
  • guacamole_db_1 - A MySQL container that acts as the database for all of guacamole's data.
  • guacamole_guacd_1 - The guacamole server daemon (guacd) container that handles all the remote connections that guacamole makes.
  • guacamole_guacamole_1 - The guacamole client web application container that ties everything together and provides the front-end for the user.

The Database Problem

Guacamole does not initialize its own database tables. Per the official documentation, the user is expected to create the database manually and use tools from the client container to generate the needed schema files to initialize the database tables.

That is not very portable for a Docker container, which should be able to be created and destroyed on the fly. This is remedied in this project with a Dockerfile for the database container that fetches the needed schema files and uses environment variables to self-initialize.

compose-guacamole's People

Contributors

rcarmo avatar

Watchers

James Cloos avatar Nati Abebe avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.