guacamole

This commit is contained in:
James Turland 2025-06-27 23:35:50 +01:00
parent 690ea8e042
commit 2f8a30d715
3 changed files with 117 additions and 0 deletions

0
Guacamole/.env Normal file
View File

View File

@ -0,0 +1,100 @@
####################################################################################
# docker-compose file for Apache Guacamole
# created by PCFreak 2017-06-28
#
# https://github.com/boschkundendienst/guacamole-docker-compose
#
# Apache Guacamole is a clientless remote desktop gateway. It supports standard
# protocols like VNC, RDP, and SSH. 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.
####################################################################################
#
#
# The initial login to the guacamole webinterface is:
#
# Username: guacadmin
# Password: guacadmin
#
#####################################################################################
# services
services:
# guacd
guacd:
container_name: guacd
image: guacamole/guacd:latest
networks:
- guacnetwork
restart: always
volumes:
- ./drive:/drive:rw
- ./record:/record:rw
# mysql
mysql:
image: mysql:latest
container_name: mysql
restart: unless-stopped
environment:
MYSQL_ROOT_PASSWORD: root_pass
MYSQL_DATABASE: guacamole_db
MYSQL_USER: guac_user
MYSQL_PASSWORD: guac_pass
volumes:
- ./init:/docker-entrypoint-initdb.d:z
- ./data:/var/lib/mysql
networks:
- guacnetwork
# guacamole
guacamole:
container_name: guacamole
image: guacamole/guacamole:latest
env_file:
- .env # store secrets e.g., password
group_add:
- "1000"
depends_on:
- guacd
- mysql
environment:
- GUACD_HOSTNAME=guacd
- MYSQL_HOSTNAME=mysql
- MYSQL_DATABASE=guacamole_db
- MYSQL_USER=guac_user
- MYSQL_PASSWORD=guac_pass
- MYSQL_ROOT_PASSWORD=rootpass
- RECORDING_SEARCH_PATH=/record
- WEBAPP_CONTEXT=ROOT # removes the need to use /guacamole in the URL
networks:
- proxy
- guacnetwork
volumes:
- ./record:/record:rw
ports:
## enable next line if not using nginx
- 8095:8080/tcp # Guacamole is on :8080/guacamole, not /.
## enable next line when using nginx
# - 8080/tcp
labels:
- "traefik.enable=true"
- "traefik.http.routers.guacamole.entrypoints=http"
- "traefik.http.routers.guacamole.rule=Host(`guacamole.jimsgarage.co.uk`)"
- "traefik.http.middlewares.guacamole-https-redirect.redirectscheme.scheme=https"
- "traefik.http.routers.guacamole.middlewares=guacamole-https-redirect"
- "traefik.http.routers.guacamole-secure.entrypoints=https"
- "traefik.http.routers.guacamole-secure.rule=Host(`guacamole.jimsgarage.co.uk`)"
- "traefik.http.routers.guacamole-secure.tls=true"
- "traefik.http.routers.guacamole-secure.service=guacamole"
- "traefik.http.services.guacamole.loadbalancer.server.port=8080"
- "traefik.docker.network=proxy"
restart: always
# networks
# create a network 'guacnetwork' in mode 'bridged'
networks:
guacnetwork:
driver: bridge
proxy:
external: true

17
Guacamole/prepare.sh Normal file
View File

@ -0,0 +1,17 @@
#!/bin/sh
#
# check if docker is running
if ! (docker ps >/dev/null 2>&1)
then
echo "docker daemon not running, will exit here!"
exit
fi
echo "Preparing folder init and creating ./init/initdb.sql"
mkdir ./init >/dev/null 2>&1
chmod -R +x ./init
docker run --rm guacamole/guacamole /opt/guacamole/bin/initdb.sh --mysql > ./init/initdb.sql
echo "done"
echo "Preparing folder record and set permissions"
mkdir ./record >/dev/null 2>&1
chmod -R 777 ./record
echo "done"