Copy services:
guacdb:
container_name: guacamoledb
image: mariadb:latest
restart: unless-stopped
networks:
- traefik-proxy
environment:
MYSQL_ROOT_PASSWORD: '<root-password>'
MYSQL_DATABASE: 'guacamole_db'
MYSQL_USER: 'guacamole_user'
MYSQL_PASSWORD: '<mysql-user-pass>'
volumes:
- 'guac_mariadb_data:/var/lib/mysql'
guacd:
container_name: guacd
image: guacamole/guacd:latest
restart: unless-stopped
networks:
- traefik-proxy
guacamole:
container_name: guacamole
image: guacamole/guacamole:latest
restart: unless-stopped
networks:
- traefik-proxy
environment:
GUACD_HOSTNAME: "guacd"
MYSQL_HOSTNAME: "guacdb"
MYSQL_DATABASE: "guacamole_db"
MYSQL_USER: "guacamole_user"
MYSQL_PASSWORD: "<mysql-user-pass>"
TOTP_ENABLED: "true"
depends_on:
- guacdb
- guacd
labels:
- "traefik.enable=true"
- "traefik.http.routers.guac.rule=Host(`guacamole.domain.com`)"
- "traefik.http.routers.guac.entrypoints=websecure"
- "traefik.http.routers.guac.tls=true"
- "traefik.http.services.guac.loadbalancer.server.port=8080"
- "traefik.http.routers.guac.tls.certresolver=letsencrypt"
- "traefik.http.routers.guac.tls.domains[0].main=domain.com"
- "traefik.http.routers.guac.tls.domains[0].sans=*.domain.com"
- "traefik.http.middlewares.add-guacamole.addprefix.prefix=/guacamole"
- "traefik.http.routers.guac.middlewares=add-guacamole"
volumes:
guac_mariadb_data:
networks:
traefik-proxy:
external: true