services: guacd: image: guacamole/guacd container_name: guacamole-guacd restart: always volumes: - ${DOCKER_VOLUME_STORAGE:-/mnt/docker-volumes}/guacamole/guacd/drive:/drive:rw - ${DOCKER_VOLUME_STORAGE:-/mnt/docker-volumes}/guacamole/guacd/record:/record:rw #networks: # - proxy postgres: image: postgres:16-alpine container_name: guacamole-db restart: always expose: - 5432 environment: - PGDATA=/var/lib/postgresql/data/guacamole - POSTGRES_DB=guacamole_db - POSTGRES_USER=guacamole_user - POSTGRES_PASSWORD=ChooseYourOwnPasswordHere1234 volumes: - ${DOCKER_VOLUME_STORAGE:-/mnt/docker-volumes}/guacamole/psql/init:/docker-entrypoint-initdb.d:z - ${DOCKER_VOLUME_STORAGE:-/mnt/docker-volumes}/guacamole/psql/data:/var/lib/postgresql/data:Z #networks: # - proxy guacamole: image: guacamole/guacamole container_name: guacamole-ui restart: always depends_on: - guacd - postgres environment: - GUACD_HOSTNAME=guacd - POSTGRESQL_HOSTNAME=postgres - POSTGRESQL_DATABASE=guacamole_db - POSTGRESQL_USER=guacamole_user - POSTGRESQL_PASSWORD=ChooseYourOwnPasswordHere1234 links: - guacd ports: # Guacamole is on :8080/guacamole, not /. # Default login is guacadmin:guacadmin - 8080:8080/tcp expose: - 8080 #networks: # - proxy #labels: # - traefik.enable=true # - traefik.docker.network=proxy # - traefik.http.routers.guacamole.rule=Host(`guacamole.example.com`) && PathPrefix(`/guacamole`) # - traefik.http.services.guacamole.loadbalancer.server.port=8080 # # Optional part for traefik middlewares # - traefik.http.routers.guacamole.middlewares=local-ipwhitelist@file,authelia@docker #networks: # proxy: # external: true