services: guacd: image: {{ guacd_image }} container_name: guacd restart: unless-stopped volumes: - /data/guacamole/record:/record - /data/guacamole:/drive networks: - guacamole_internal - {{ docker_network_name }} guacamole-db: image: {{ guacamole_db_image }} container_name: guacamole-db restart: unless-stopped environment: MYSQL_ROOT_PASSWORD: {{ guacamole_db_password }} MYSQL_DATABASE: guacamole_db MYSQL_USER: guacamole MYSQL_PASSWORD: {{ guacamole_db_password }} volumes: - /data/guacamole/mysql:/var/lib/mysql networks: - guacamole_internal guacamole: image: {{ guacamole_image }} container_name: guacamole restart: unless-stopped environment: GUACD_HOSTNAME: guacd MYSQL_HOSTNAME: guacamole-db MYSQL_DATABASE: guacamole_db MYSQL_USER: guacamole MYSQL_PASSWORD: {{ guacamole_db_password }} depends_on: - guacd - guacamole-db labels: traefik.enable: "true" traefik.http.routers.guacamole.rule: "Host(`{{ guacamole_host }}`)" traefik.http.routers.guacamole.entrypoints: websecure traefik.http.routers.guacamole.tls.certresolver: letsencrypt traefik.http.services.guacamole.loadbalancer.server.port: "8080" networks: - guacamole_internal - {{ docker_network_name }} networks: guacamole_internal: driver: bridge {{ docker_network_name }}: external: true