68 lines
No EOL
2.4 KiB
YAML
68 lines
No EOL
2.4 KiB
YAML
services:
|
|
guacd:
|
|
image: guacamole/guacd:latest
|
|
container_name: ${GUACD_NAME}
|
|
restart: always
|
|
cpus: 1.0
|
|
mem_limit: "1024m"
|
|
mem_reservation: "256m"
|
|
restart: unless-stopped
|
|
networks:
|
|
- ${GUAC_INT_NETWORK}
|
|
- ${GUAC_SSH_NETWORK}
|
|
|
|
guacamole:
|
|
image: guacamole/guacamole:latest
|
|
container_name: guacamole
|
|
restart: always
|
|
user: root
|
|
ports:
|
|
- 8080:8080
|
|
cpus: 2.0
|
|
mem_limit: "3072m" # 3 GB
|
|
mem_reservation: "1024m"
|
|
environment:
|
|
- GUACD_HOSTNAME=${GUACD_NAME}
|
|
- MYSQL_HOSTNAME=${GUAC_DB_HOST}
|
|
- MYSQL_PORT=${GUAC_DB_PORT}
|
|
- MYSQL_DATABASE=${GUAC_DB_NAME}
|
|
- MYSQL_USER=${GUAC_DB_USER}
|
|
- MYSQL_PASSWORD=${GUAC_DB_PASS}
|
|
- MYSQL_SSL_MODE=disabled
|
|
- CATALINA_OPTS="-Djava.security.egd=file:/dev/./urandom -Xms1g -Xmx2g"
|
|
ports:
|
|
- "8080:8080"
|
|
depends_on:
|
|
- ${GUACD_NAME}
|
|
#networks:
|
|
- ${GUAC_INT_NETWORK}
|
|
- ${GUAC_EXT_NETWORK}
|
|
labels:
|
|
- "traefik.enable=${GUAC_TRAEFIK_ENABLED}"
|
|
- "traefik.http.routers.guac.rule=Host(`${GUAC_TRAEFIK_HOSTNAME}.${TRAEFIK_DNS_SUFFIX}`)"
|
|
- "traefik.http.routers.guac.entrypoints=${GUAC_TRAEFIK_ENTRYPOINT}"
|
|
- "traefik.http.routers.guac.tls=true"
|
|
- "traefik.http.services.guac.loadbalancer.server.port=${GUAC_TRAEFIK_PORT}"
|
|
- "traefik.http.routers.guac.tls.certresolver=${GUAC_TRAEFIK_RESOLVER}"
|
|
- "traefik.docker.network=${GUAC_EXT_NETWORK}"
|
|
|
|
# Middleware 1: Redirect
|
|
- "traefik.http.middlewares.guac-redirect.redirectregex.regex=^https://([^/]+)/?$$"
|
|
- "traefik.http.middlewares.guac-redirect.redirectregex.replacement=https://$${1}/guacamole/"
|
|
|
|
# Middleware 2: Disable Buffering (Stability Fix)
|
|
- "traefik.http.middlewares.guac-buffer.buffering.maxResponseBodyBytes=0"
|
|
- "traefik.http.middlewares.guac-buffer.buffering.maxRequestBodyBytes=0"
|
|
- "traefik.http.middlewares.guac-buffer.buffering.memRequestBodyBytes=0"
|
|
- "traefik.http.middlewares.guac-buffer.buffering.memResponseBodyBytes=0"
|
|
- "traefik.http.middlewares.guac-buffer.buffering.retryExpression=IsNetworkError() && Attempts() <= 2"
|
|
|
|
# Apply Both
|
|
- "traefik.http.routers.guac.middlewares=guac-redirect,guac-buffer"
|
|
networks:
|
|
${GUAC_INT_NETWORK}:
|
|
internal: true
|
|
${GUAC_EXT_NETWORK}:
|
|
driver: bridge
|
|
${GUAC_SSH_NETWORK}:
|
|
external: true |