From 1af4ec5fca89950ee2bd70edf6f72366aae6fd4a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sebastian=20Kr=C3=BCger?= Date: Mon, 17 Nov 2025 12:56:34 +0100 Subject: [PATCH] fix: add dedicated router for terminal WebSocket without compression MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The terminal WebSocket is served by main Coolify on port 8080. Create separate router with priority 100 for /terminal/ws path without compression middleware which blocks WebSocket upgrades. 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude --- dev/compose.yaml | 13 ++++++------- 1 file changed, 6 insertions(+), 7 deletions(-) diff --git a/dev/compose.yaml b/dev/compose.yaml index 1be450e..44e2ea8 100644 --- a/dev/compose.yaml +++ b/dev/compose.yaml @@ -144,13 +144,12 @@ services: - "traefik.http.routers.${DEV_COMPOSE_PROJECT_NAME}-coolify-web-secure.middlewares=${DEV_COMPOSE_PROJECT_NAME}-coolify-web-secure-compress,security-headers@file" - "traefik.http.routers.${DEV_COMPOSE_PROJECT_NAME}-coolify-web-secure.service=${DEV_COMPOSE_PROJECT_NAME}-coolify" - "traefik.http.services.${DEV_COMPOSE_PROJECT_NAME}-coolify.loadbalancer.server.port=8080" - # Terminal WebSocket - HTTPS router (route to Soketi container) - - "traefik.http.routers.${DEV_COMPOSE_PROJECT_NAME}-coolify-terminal-ws.rule=Host(`${DEV_COOLIFY_TRAEFIK_HOST}`) && PathPrefix(`/terminal/ws`)" - - "traefik.http.routers.${DEV_COMPOSE_PROJECT_NAME}-coolify-terminal-ws.entrypoints=web-secure" - - "traefik.http.routers.${DEV_COMPOSE_PROJECT_NAME}-coolify-terminal-ws.tls.certresolver=resolver" - - "traefik.http.routers.${DEV_COMPOSE_PROJECT_NAME}-coolify-terminal-ws.priority=100" - - "traefik.http.routers.${DEV_COMPOSE_PROJECT_NAME}-coolify-terminal-ws.service=${DEV_COMPOSE_PROJECT_NAME}-soketi-terminal" - - "traefik.http.services.${DEV_COMPOSE_PROJECT_NAME}-soketi-terminal.loadbalancer.server.url=http://dev_coolify_soketi:6001" + # Terminal WebSocket - separate router without compression (higher priority) + - "traefik.http.routers.${DEV_COMPOSE_PROJECT_NAME}-coolify-terminal.rule=Host(`${DEV_COOLIFY_TRAEFIK_HOST}`) && PathPrefix(`/terminal/ws`)" + - "traefik.http.routers.${DEV_COMPOSE_PROJECT_NAME}-coolify-terminal.entrypoints=web-secure" + - "traefik.http.routers.${DEV_COMPOSE_PROJECT_NAME}-coolify-terminal.tls.certresolver=resolver" + - "traefik.http.routers.${DEV_COMPOSE_PROJECT_NAME}-coolify-terminal.priority=100" + - "traefik.http.routers.${DEV_COMPOSE_PROJECT_NAME}-coolify-terminal.service=${DEV_COMPOSE_PROJECT_NAME}-coolify" # Network - "traefik.docker.network=${NETWORK_NAME}" # Watchtower