Docker installation of Guacamole Display Broker.

in #utopian-io7 years ago (edited)

Docker installation of Guacamole.

<h3><strong><em>What is Guacacmole? <p dir="auto">Gucamole is a remote desktop management portal whuch uses HTML5 technologies to bring a remote desktop view into the browser with no additional technologies. The effectively means you have remote access to any machine that is configured for you to have access to from any web browser anywhere. Examples of it's use are below. <p dir="auto"><img src="https://images.hive.blog/768x0/https://i.imgur.com/X3eK43B.png" alt="Screen1" srcset="https://images.hive.blog/768x0/https://i.imgur.com/X3eK43B.png 1x, https://images.hive.blog/1536x0/https://i.imgur.com/X3eK43B.png 2x" /><br /> <img src="https://images.hive.blog/768x0/https://i.imgur.com/7amBON6.png" alt="screen2" srcset="https://images.hive.blog/768x0/https://i.imgur.com/7amBON6.png 1x, https://images.hive.blog/1536x0/https://i.imgur.com/7amBON6.png 2x" /><br /> <img src="https://images.hive.blog/768x0/https://i.imgur.com/Hs4pwIT.png" alt="Screen3" srcset="https://images.hive.blog/768x0/https://i.imgur.com/Hs4pwIT.png 1x, https://images.hive.blog/1536x0/https://i.imgur.com/Hs4pwIT.png 2x" /> <h1>Guacacmole Docker Set up Instructions <p dir="auto"><a href="https://hub.docker.com/r/guacamole/guacamole/" target="_blank" rel="nofollow noreferrer noopener" title="This link will take you away from hive.blog" class="external_link">souce listing <h3>Install postgres. <p dir="auto">Set up a persistent volume for postgres or data will be lost on restart. <pre><code>docker create volume dock-postgres_vol <p dir="auto">and then start docker container as follows. <pre><code>docker run --name dock-postgres -v dock-postgres_vol:/var/lib/postgres/data --restart=always -d postgres <p dir="auto">Initialise the database as directed above. <pre><code>docker run --rm guacamole/guacamole /opt/guacamole/bin/initdb.sh --postgres > initdb.sql <p dir="auto">Copy sql file to postgres container. <pre><code>docker cp initdb.sql dock-postgres:/tmp <p dir="auto">Login to container and create initial database. <pre><code>docker exec -it dock-postgres /bin/bash su -c /bin/bash postgres createdb guacamole_db psql guacamole_db < /tmp/initdb.sql <p dir="auto">Create Guacacmole DB user <pre><code>$ psql -d guacamole_db psql (10.1) Type "help" for help. guacamole_db=# CREATE USER guacamole_user WITH PASSWORD '$password'; CREATE ROLE guacamole_db=# GRANT SELECT,INSERT,UPDATE,DELETE ON ALL TABLES IN SCHEMA public TO guacamole_user; GRANT guacamole_db=# GRANT SELECT,USAGE ON ALL SEQUENCES IN SCHEMA public TO guacamole_user; GRANT guacamole_db=# \q <h3>Install Guacd container <pre><code>docker run --name guacd -d guacamole/guacd <h3>Install guacamole container <pre><code> docker run --name guacamole --link guacd:guacd --link dock-postgres:postgres -e POSTGRES_DATABASE=guacamole_db -e POSTGRES_USER=guacamole_user -e POSTGRES_PASSWORD=$password -d -p 8080:8080 guacamole/guacamole <h1>Administer Guacamole. <p dir="auto"><span>Point web browser @ <a href="http://localhost:8080/guacamole" target="_blank" rel="nofollow noreferrer noopener" title="This link will take you away from hive.blog" class="external_link">http://localhost:8080/guacamole <p dir="auto">Login as <strong>guacadmin default password <strong>guacadmin <p dir="auto">create extra users as needed. Create a USER group. Create a Connection in USER group. <p dir="auto">Click on Settings then the tab Connections. <p dir="auto"><img src="https://images.hive.blog/768x0/https://i.imgur.com/ALKrj3c.png" alt="Connections1" srcset="https://images.hive.blog/768x0/https://i.imgur.com/ALKrj3c.png 1x, https://images.hive.blog/1536x0/https://i.imgur.com/ALKrj3c.png 2x" /> <p dir="auto">Click on New Connection and you will be presented with a long form. Give the connection a name and fill out the parameters as needed. Most of the fields you can leave blank unless you are planning to do more sophisticated things like remote applications (see below) <p dir="auto"><img src="https://images.hive.blog/768x0/https://i.imgur.com/EhHip23.png" alt="Long_form" srcset="https://images.hive.blog/768x0/https://i.imgur.com/EhHip23.png 1x, https://images.hive.blog/1536x0/https://i.imgur.com/EhHip23.png 2x" /> <p dir="auto">Assign connection to a user. <p dir="auto"><strong><em>NB. RDP Connections take auth credentials from the windows user on the server being connected to. <p dir="auto">This will by default serve up the complete desktop as if you were connecting via a RDP client only within the browser. Sound, too, will be forwarded. <h2>Note about customisation. <p dir="auto">Login page can be customised using extensions, however adding and extension to a docker is a little more complex. Essentially you have to export a host directory into the container. eg. <pre><code> docker run --name guacamole --link guacd:guacd --link dock-postgres:postgres -e POSTGRES_DATABASE=guacamole_db -e POSTGRES_USER=guacamole_user -e POSTGRES_PASSWORD=$password -v /var/lib/docker/custom/guacamole:/opt/local -e GUACAMOLE_HOME=/opt/local -d -p 8080:8080 guacamole/guacamole <p dir="auto">See the addition of -v for mapping and the environment variable <code>GUACAMOLE_HOME. The mapped directory will be used as a template base for the actual home directory which is in <code>/root/.guacamole inside the container. Thus you need to make a folder on your host share called <code>extensions and drop your custom extension .jar into that. It will then be loaded automatically. <p dir="auto">The example extension can be found <a href="https://sourceforge.net/p/guacamole/discussion/1110834/thread/be2a6785/e7cd/attachment/generic-customize-extension.jar" target="_blank" rel="nofollow noreferrer noopener" title="This link will take you away from hive.blog" class="external_link">here <p dir="auto">And the result looks like this: <p dir="auto"><img src="https://images.hive.blog/768x0/https://i.imgur.com/ULIbKZC.png" alt="ScreenShot" srcset="https://images.hive.blog/768x0/https://i.imgur.com/ULIbKZC.png 1x, https://images.hive.blog/1536x0/https://i.imgur.com/ULIbKZC.png 2x" /> <p dir="auto">and more information on creating a custom extension can be found <a href="https://guacamole.apache.org/doc/gug/guacamole-ext.html" target="_blank" rel="nofollow noreferrer noopener" title="This link will take you away from hive.blog" class="external_link">here and <a href="http://apache-guacamole-general-user-mailing-list.2363388.n4.nabble.com/Branding-the-login-page-td281.html" target="_blank" rel="nofollow noreferrer noopener" title="This link will take you away from hive.blog" class="external_link">here <h1>Adding Remote Apps. <p dir="auto"><a href="https://guacamole.apache.org/doc/gug/configuring-guacamole.html" target="_blank" rel="nofollow noreferrer noopener" title="This link will take you away from hive.blog" class="external_link">source <p dir="auto">By setting up a remote app profile you can export that app via Gucamole so it is the <em>only application available to the user. This means they will not have access to any other program on the system or the ability to break out of the program they are running. In that sense it helps lock down usage and complexity when it comes to user access. <p dir="auto">Remote apps are define in the profile: <blockquote> <p dir="auto"><strong>RemoteApp <blockquote> <p dir="auto">Recent versions of Windows provide a feature called RemoteApp which allows individual applications to be used over RDP, without providing access to the full desktop environment. If your RDP server has this feature enabled and configured, you can configure Guacamole connections to use those individual applications. <div class="table-responsive"><table> <thead> <tr><th>Parameter name<th>Description <tbody> <tr><td>remote-app<td>Specifies the RemoteApp to start on the remote desktop. If supported by your remote desktop server, this application, and only this application, will be visible to the user. Windows requires a special notation for the names of remote applications. <strong>The names of remote applications must be prefixed with two vertical bars. For example, if you have created a remote application on your server for notepad.exe and have assigned it the name "notepad", you would set this parameter to: :pipe:pipe:notepad <tr><td>remote-app-dir<td>The working directory, if any, for the remote application. This parameter has no effect if RemoteApp is not in use. <tr><td>remote-app-args<td>The command-line arguments, if any, for the remote application. This parameter has no effect if RemoteApp is not in use. <p dir="auto">The RemoteApp Tool is a free software package and can be found <a href="http://www.kimknight.net/remoteapptool" target="_blank" rel="nofollow noreferrer noopener" title="This link will take you away from hive.blog" class="external_link">here <p dir="auto">Installing the portable app is probably the best <p dir="auto">Example of set up. <p dir="auto"><img src="https://images.hive.blog/768x0/https://i.imgur.com/8diqTIT.png" alt="Screen1" srcset="https://images.hive.blog/768x0/https://i.imgur.com/8diqTIT.png 1x, https://images.hive.blog/1536x0/https://i.imgur.com/8diqTIT.png 2x" /> <p dir="auto"><img src="https://images.hive.blog/768x0/https://i.imgur.com/KyO6RGs.png" alt="screen2" srcset="https://images.hive.blog/768x0/https://i.imgur.com/KyO6RGs.png 1x, https://images.hive.blog/1536x0/https://i.imgur.com/KyO6RGs.png 2x" /> <p dir="auto">And then in the server connection settings you need to add the command to the remote app. <p dir="auto"><img src="https://images.hive.blog/768x0/https://i.imgur.com/XwLy8ja.png" alt="config1" srcset="https://images.hive.blog/768x0/https://i.imgur.com/XwLy8ja.png 1x, https://images.hive.blog/1536x0/https://i.imgur.com/XwLy8ja.png 2x" /> <hr /> <p dir="auto"><br /><hr /><em>Posted on <a href="https://utopian.io/utopian-io/@veritanuda/docker-installation-of-guacamole-display-broker" target="_blank" rel="nofollow noreferrer noopener" title="This link will take you away from hive.blog" class="external_link">Utopian.io - Rewarding Open Source Contributors<hr /><p>
Sort:  

Your contribution cannot be approved because it does not follow the Utopian Rules.

  • Contributions on repositories that have not received any program code updates for longer than 6 months, will be automatically rejected.


Chat with us on Discord.Need help? Write a ticket on https://support.utopian.io.

[utopian-moderator]

Well there is no official github project for guacamole so I just picked the one that seemed closest. Of course if there was not such a requirement to tie it to a git hub it could be a stand-alone thing.

So how do you suggest I proceed? Remove the contribution and place it elsewhere or what ? It would be pointless to clone another repo just for one submission and does not help anyone.

Any help would be appreciated.

For this project isn´t worth talking about, because your repository no longer has updates for a long time.
Take a tutorial on another subject.
Hope this helps.



Chat with us on Discord.Need help? Write a ticket on https://support.utopian.io.

It is not my repository I was unable to submit a generic tutorial post without allocating it to a repository, so explain again how am am i supposed to submit a tutorial on a project that is not hosted on github ?

Are you saying that generic tutorials are of no value and that there should not be a way of submitting them to the benefit of all ?

You will need to make it clearer because so far you have just given boiler-plate answers to what cannot be an unusual situation.

Thank you for your time.

This Vizuri/guacamole-docker repository no longer receives updates for a long time, so you can't do tutorials for this repository.
Please read the rules.



Chat with us on Discord.Need help? Write a ticket on https://support.utopian.io.

This Vizuri/guacamole-docker repository no longer receives updates for a long time, so you can't do tutorials for this repository.

Yes I understand but you are still missing the point. IF there is no github repo and IF a tutorial covers more than one project where exactly can you place a generic tutorial? The system for submission requires that you associate it with a github project so what can you do if none exist?