From 710222e705bf01699ce0fdb6b2b1bfaae3195fc2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sebastian=20Kr=C3=BCger?= Date: Mon, 17 Nov 2025 14:10:29 +0100 Subject: [PATCH] feat: add dedicated terminal service on port 6002 with path stripping --- dev/compose.yaml | 34 +++++++++++++++++++++++++++++++++- 1 file changed, 33 insertions(+), 1 deletion(-) diff --git a/dev/compose.yaml b/dev/compose.yaml index 8b9d50b..f3b66b6 100644 --- a/dev/compose.yaml +++ b/dev/compose.yaml @@ -149,7 +149,7 @@ services: # Watchtower - "com.centurylinklabs.watchtower.enable=${WATCHTOWER_LABEL_ENABLE}" - # Coolify Soketi (WebSocket server) + # Coolify Soketi (WebSocket server for realtime) coolify_soketi: image: quay.io/soketi/soketi:1.0-16-alpine container_name: ${DEV_COMPOSE_PROJECT_NAME}_coolify_soketi @@ -180,6 +180,38 @@ services: # Watchtower - "com.centurylinklabs.watchtower.enable=${WATCHTOWER_LABEL_ENABLE}" + # Coolify Terminal (WebSocket server on port 6002 for terminal) + coolify_terminal: + image: ${DEV_COOLIFY_REALTIME_IMAGE:-ghcr.io/coollabsio/coolify-realtime:1.0.10} + container_name: ${DEV_COMPOSE_PROJECT_NAME}_coolify_terminal + restart: unless-stopped + environment: + - SOKETI_DEFAULT_APP_ID=${DEV_COOLIFY_PUSHER_APP_ID} + - SOKETI_DEFAULT_APP_KEY=${DEV_COOLIFY_PUSHER_APP_KEY} + - SOKETI_DEFAULT_APP_SECRET=${DEV_COOLIFY_PUSHER_APP_SECRET} + healthcheck: + test: ["CMD", "wget", "-qO-", "http://127.0.0.1:6002/ready"] + interval: 5s + timeout: 5s + retries: 10 + networks: + - compose_network + labels: + - "traefik.enable=${DEV_TRAEFIK_ENABLED}" + # Strip /terminal prefix + - "traefik.http.middlewares.${DEV_COMPOSE_PROJECT_NAME}-terminal-strip.stripprefix.prefixes=/terminal" + # HTTPS router + - "traefik.http.routers.${DEV_COMPOSE_PROJECT_NAME}-terminal.rule=Host(`${DEV_COOLIFY_TRAEFIK_HOST}`) && PathPrefix(`/terminal/ws`)" + - "traefik.http.routers.${DEV_COMPOSE_PROJECT_NAME}-terminal.entrypoints=web-secure" + - "traefik.http.routers.${DEV_COMPOSE_PROJECT_NAME}-terminal.tls.certresolver=resolver" + - "traefik.http.routers.${DEV_COMPOSE_PROJECT_NAME}-terminal.priority=100" + - "traefik.http.routers.${DEV_COMPOSE_PROJECT_NAME}-terminal.middlewares=${DEV_COMPOSE_PROJECT_NAME}-terminal-strip" + # Service + - "traefik.http.services.${DEV_COMPOSE_PROJECT_NAME}-terminal.loadbalancer.server.port=6002" + - "traefik.docker.network=${NETWORK_NAME}" + # Watchtower + - "com.centurylinklabs.watchtower.enable=${WATCHTOWER_LABEL_ENABLE}" + # n8n - Workflow automation platform n8n: image: ${DEV_N8N_IMAGE:-docker.n8n.io/n8nio/n8n}