fix: use coolify-realtime image with terminal WebSocket support

- Switch from standard soketi to coolify-realtime:1.0.10 image
- Add SSH volume mount for terminal functionality
- Update health check to verify both ports 6001 and 6002
- Add explicit service link for realtime HTTPS router

This fixes both realtime WebSocket and terminal/ws functionality.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
2025-11-17 13:10:08 +01:00
parent d90f0179df
commit cd47bce06b

View File

@@ -151,17 +151,21 @@ services:
# Coolify Soketi (WebSocket server) # Coolify Soketi (WebSocket server)
coolify_soketi: coolify_soketi:
image: quay.io/soketi/soketi:1.0-16-alpine image: ${DEV_COOLIFY_REALTIME_IMAGE:-ghcr.io/coollabsio/coolify-realtime:1.0.10}
container_name: ${DEV_COMPOSE_PROJECT_NAME}_coolify_soketi container_name: ${DEV_COMPOSE_PROJECT_NAME}_coolify_soketi
restart: unless-stopped restart: unless-stopped
environment: environment:
- APP_NAME=Coolify
- SOKETI_DEBUG=${DEV_COOLIFY_SOKETI_DEBUG:-false}
- SOKETI_DEFAULT_APP_ID=${DEV_COOLIFY_PUSHER_APP_ID} - SOKETI_DEFAULT_APP_ID=${DEV_COOLIFY_PUSHER_APP_ID}
- SOKETI_DEFAULT_APP_KEY=${DEV_COOLIFY_PUSHER_APP_KEY} - SOKETI_DEFAULT_APP_KEY=${DEV_COOLIFY_PUSHER_APP_KEY}
- SOKETI_DEFAULT_APP_SECRET=${DEV_COOLIFY_PUSHER_APP_SECRET} - SOKETI_DEFAULT_APP_SECRET=${DEV_COOLIFY_PUSHER_APP_SECRET}
volumes:
- ${DEV_COOLIFY_DATA_PATH}/ssh:/var/www/html/storage/app/ssh:ro
healthcheck: healthcheck:
test: ["CMD", "wget", "-qO-", "http://127.0.0.1:6001/ready"] test: ["CMD", "wget", "-qO-", "http://127.0.0.1:6001/ready", "&&", "wget", "-qO-", "http://127.0.0.1:6002/ready"]
interval: 5s interval: 5s
timeout: 5s timeout: 2s
retries: 10 retries: 10
networks: networks:
- compose_network - compose_network
@@ -174,6 +178,7 @@ services:
- "traefik.http.routers.${DEV_COMPOSE_PROJECT_NAME}-soketi-web-secure.rule=Host(`realtime.${DEV_COOLIFY_TRAEFIK_HOST}`)" - "traefik.http.routers.${DEV_COMPOSE_PROJECT_NAME}-soketi-web-secure.rule=Host(`realtime.${DEV_COOLIFY_TRAEFIK_HOST}`)"
- "traefik.http.routers.${DEV_COMPOSE_PROJECT_NAME}-soketi-web-secure.tls.certresolver=resolver" - "traefik.http.routers.${DEV_COMPOSE_PROJECT_NAME}-soketi-web-secure.tls.certresolver=resolver"
- "traefik.http.routers.${DEV_COMPOSE_PROJECT_NAME}-soketi-web-secure.entrypoints=web-secure" - "traefik.http.routers.${DEV_COMPOSE_PROJECT_NAME}-soketi-web-secure.entrypoints=web-secure"
- "traefik.http.routers.${DEV_COMPOSE_PROJECT_NAME}-soketi-web-secure.service=${DEV_COMPOSE_PROJECT_NAME}-soketi-web-secure"
# Service # Service
- "traefik.http.services.${DEV_COMPOSE_PROJECT_NAME}-soketi-web-secure.loadbalancer.server.port=6001" - "traefik.http.services.${DEV_COMPOSE_PROJECT_NAME}-soketi-web-secure.loadbalancer.server.port=6001"
# Terminal WebSocket - route /terminal/ws to port 6002 on Soketi # Terminal WebSocket - route /terminal/ws to port 6002 on Soketi