Disclaimer: This work is based on the work of: https://github.com/oznu/docker-guacamole and heavily influenced by other forks
A Docker Container for Apache Guacamole, a client-less remote desktop gateway. It supports standard protocols like VNC, RDP, and SSH over HTML5.
This image will run on most platforms that support Docker. Goal is to test and confirm the following:
- Docker for Windows, Linux, Mac
- Synology DSM
- Raspberry Pi 3
- Raspberry Pi4 ARM64v8 on an 64bit OS
This container runs the guacamole web client, the guacd server and a postgres database.
Latest
- x64 build now passes and initial testing looks good
- postgresql 13
- VNC, RDP, and ssh have been tested (only)
- built-in authentication has been tested (only)
- tested Windows 10 and Ubuntu 20.04
armhf
- 32-bit Raspbian OS support, should work on Pi 2 and later
- build is in a "hack-me-up" state to get it to pass
- postgresql 9.6
- VNC and SSH have been tested
- RDP is not working currently; the dockerhub image oznu/armhf has working RDP; cloned at doritoes/guacamole:armhflegacy
- built-in authentication has been tested (only)
- tested on 32-bit OS on Pi 3B
arm64
- 64-bit Raspberry Pi OS support, should work on Pi 2B rev 1.2 and later (a22042 Q3 2016 2 Model B with BCM2837)
- postgresql 11
- VNC, RDP, and ssh have been tested (only)
- built-in authentication has been tested (only)
- tested on 64-bit Raspberry Pi OS on Pi 4B and Pi 3B
docker run \
-p 8080:8080 \
-v </path/to/config>:/config \
doritoes/guacamole
This image will also allow you to run Apache Guacamole on a Raspberry Pi or other Docker-enabled ARMv5/6/7/8 devices by using the armhf
tag.
Tested on Raspberry Pi 3B
Rebuilt but RDP not working due to upstream bug in freerdp
docker run \
-p 8080:8080 \
-v </path/to/config>:/config \
doritoes/guacamole:armhf
Legacy image from oznu/guacamole with working RDP
docker run \
-p 8080:8080 \
-v </path/to/config>:/config \
doritoes/guacamole:armhflegacy
This image will also allow you to run Apache Guacamole on a Raspberry Pi 2B or later, or other Docker-enabled ARMv5/6/7/8 devices by using the arm64v8
tag.
Tested on Raspberry Pi 3B and 4B
docker run \
-p 8080:8080 \
-v </path/to/config>:/config \
doritoes/guacamole:arm64v8
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"
oznu/guacamole
Currently the available extensions are:
- auth-ldap - LDAP Authentication
- auth-duo - Duo two-factor authentication
- auth-header - HTTP header authentication
- auth-cas - CAS Authentication
- auth-openid - OpenID Connect authentication
- auth-totp - TOTP two-factor authentication
- auth-quickconnect - Ad-hoc connections extension
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: "2"
services:
guacamole:
image: doritoes/guacamole
container_name: guacamole
volumes:
- postgres:/config
ports:
- 8080:8080
volumes:
postgres:
driver: local
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.