Skip to content

Guacamole

Access you machines via HTTP. Good for bastion hosts.

docker-compose.yml

YAML
version: '3'
services:
  guacdb:
    container_name: guacamoledb
    image: mariadb:11.3.2-jammy
    restart: unless-stopped
    environment:
      MYSQL_ROOT_PASSWORD: 'MariaDBRootPass'
      MYSQL_DATABASE: 'guacamole_db'
      MYSQL_USER: 'guacamole_user'
      MYSQL_PASSWORD: 'MariaDBUserPass'
    volumes:
      - './db-data:/var/lib/mysql'
  guacd:
    container_name: guacd
    image: guacamole/guacd:1.5.4
    restart: unless-stopped
  guacamole:
    container_name: guacamole
    image: guacamole/guacamole:1.5.4
    restart: unless-stopped
    ports:
      - 8080:8080
    environment:
      GUACD_HOSTNAME: "guacd"
      MYSQL_HOSTNAME: "guacdb"
      MYSQL_DATABASE: "guacamole_db"
      MYSQL_USER: "guacamole_user"
      MYSQL_PASSWORD: "MariaDBUserPass"
#      TOTP_ENABLED: "true"
    depends_on:
      - guacdb
      - guacd

init admin user

Bash
docker-compose up -d
Bash
docker run --rm guacamole/guacamole /opt/guacamole/bin/initdb.sh --mysql > initdb.sql
Bash
docker cp initdb.sql guacamoledb:/initdb.sql
Bash
docker exec -it guacamoledb bash
Bash
cat /initdb.sql | mariadb -u root -p guacamole_db
exit
  • Restart
Bash
docker-compose down && docker-compose up -d
  • Creds

guacadmin/guacadmin

Gucamole proxy agent

YAML
services:
  guacd:
    image: guacamole/guacd:1.5.5
    restart: always
    container_name: guacamole_agent
    ports:
      - 4822:4822

https://guacamole.apache.org/doc/gug/ - docs