There is a bug when updating from oznu's container (running guacamole 1.2.0 and postgresql 9) to this one. If something does not work, delete the /config folder and relaunch the container. Be careful, by doing so, you will lose your previous setup. I am trying to find a solution still.
2022-01-31 - s6 overlay 3.0.0.2 has been released, that corrects a bug in the management of environment variables. Images 1.4.0
, 1.4.0-s6_v3
and latest
have been updated to this version, as well as updated to Tomcat 9.0.58.
2022-01-29 - I noticed a typo in the Dockerfile that introduced a bug with Postgres JDBC Driver. Fixed in all tags. Issue #2
2022-01-27 - updated to s6 overlay 3.0 and tomcat 9.0.58
2022-01-03 - updated to version 1.4.0
1.4.0
latest
, version 1.4.0, based on tomcat:9.0.58-jre11, using s6 overlay 3.0.0.2 (the fix cited below made it to the master release). Now available for arm64!
1.4.0-s6_v3
updated to s6 overlay 3.0.0.0 and tomcat:9.0.58-jre11 (note: This image is built on a custom build of s6 overlay. It will be renamed as latest when s6 overlay is fixed and I can use the release tarballs.)
1.3.0
, version 1.3.0, based on tomcat:9.0.56-jre11
If Guacamole is useful to you, do not hesitate to support the great work of the Apache Foundation.
On a side note, running the server I use to build these images, researching update info, maintaining the images, takes quite some time and a little money. I'll gladly accept a coffee!
A Docker Container for Apache Guacamole, a client-less remote desktop gateway. It supports standard protocols like VNC, RDP, and SSH over HTML5.
This container runs the guacamole web client, the guacd server and a postgres database.
docker run \
-p 8080:8080 \
-v </path/to/config>:/config \
abesnier/guacamole
The parameters are split into two halves, separated by a colon, the left hand side representing the host and the right the container side.
-p 8080:8080
- Binds the service to port 8080 on the Docker host, required-v /config
- The config and database location, required-e EXTENSIONS
- See below for details.
Extensions can be enabled using the -e EXTENSIONS
variable. Multiple extensions can be enabled using a comma separated list without spaces.
For example:
docker run \
-p 8080:8080 \
-v </path/to/config>:/config \
-e "EXTENSIONS=auth-ldap,auth-duo"
abesnier/guacamole
Currently the available extensions are:
- [1.3.0] [1.4.0] auth-ldap - LDAP Authentication
- [1.3.0] [1.4.0] auth-duo - Duo two-factor authentication
- [1.3.0] [1.4.0] auth-header - HTTP header authentication
- [1.3.0] [1.4.0] auth-cas - CAS Authentication
- [1.3.0] [1.4.0] auth-openid - OpenID Connect authentication
- [1.3.0] [1.4.0] auth-totp - TOTP two-factor authentication
- [1.3.0] [1.4.0] auth-quickconnect - Ad-hoc connections extension
- [1.3.0] [1.4.0] auth-saml - SAML Authentication
- [1.4.0] auth-sso - SSO Authentication metapackage, contains classes for CAS, OpenID and SAML authentication (see links above)
- [1.4.0] auth-json - Encrypted JSON Authentication
You should only enable the extensions you require, if an extensions is not configured correctly in the guacamole.properties
file it may prevent the system from loading. See the official documentation for more details.
The default username is guacadmin
with password guacadmin
.
Mapped volumes behave differently when running Docker for Windows and you may encounter some issues with PostgreSQL file system permissions. To avoid these issues, and still retain your config between container upgrades and recreation, you can use the local volume driver, as shown in the docker-compose.yml
example below. When using this setup be careful to gracefully stop the container or data may be lost.
version: "3"
services:
guacamole:
image: abesnier/guacamole
container_name: guacamole
volumes:
- postgres:/config
ports:
- 8080:8080
volumes:
postgres:
driver: local
If the docker seems to not start properly, check the logs with docker logs <container_name>
.
If you see lines like this one: postgres: could not access the server configuration file "/config/postgres/postgresql.conf": No such file or directory
, this means that the configuration volume could not be mounted properly.
If that is the case, make sure to start the container as root. This will force the creation of the config folder.
docker run \
-p 8080:8080 \
-u root \
-v </path/to/config>:/config \
abesnier/guacamole
or in docker-compose.yml:
version: "3"
services:
guacamole:
image: abesnier/guacamole
container_name: guacamole
user: root
volumes:
- </path/to/config>:/config
ports:
- 8080:8080
Well, I must admit, I managed to break a few things here and there nevertheless... The easiest way to correct issues is to stop the container, delete the config folder, and restart the container.
But this has the side effect of deleting your stored users and connections as well.
You can backup and restore the database with the following command (assuming your container is named guacamole
):
Backup: docker exec -it guacamole bash -c "pg_dump -U guacamole -F t guacamole_db > guacamole_db_backup.tar"
This creates a guacamole_db_backup.tar
in your config
directory that you need to save somewhere else.
Now stop the container, delete the config folder, and restart the container.
To restore the database, copy the backup file in your mounted config folder, and run docker exec -it guacamole bash -c "pg_restore -d guacamole_db guacamole_db_backup.tar -c -U guacamole"
. You can now login to Guacamole with your user data and should find your connections as you left them.
Have a look at the Github repo, and the Issuespage.
If you believe the issue is with Guacamole and not the docker image, have a lok at the mailing list for general support, and if you believe there is a bug, use the bug tracker to report it.
And of course, don't forget to look at the official documentation.
Copyright (C) 2017-2020 oznu
Copyright (C) 2021 abesnier
Apache Guacamole is released under the Apache License version 2.0.
Extensions uses thrid-party modules. To consult the licensing for each module, download the extension from https://guacamole.apache.org/releases/1.4.0/, extract it, and check the content of the bundled
directory.
This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.
This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.