From 8056219f39b3a5c798865b7b3b611a3420af173f Mon Sep 17 00:00:00 2001 From: Bruno Charest Date: Fri, 13 Mar 2026 14:11:13 -0400 Subject: [PATCH] feat: Add container startup script to initialize backend service and conditionally start OpenClaw Gateway, updating docker-compose.yml to use it. --- backend/start-container.sh | 36 ++++++++++++++++++++++++++---------- docker-compose.yml | 1 + 2 files changed, 27 insertions(+), 10 deletions(-) diff --git a/backend/start-container.sh b/backend/start-container.sh index 758fc76..0795849 100644 --- a/backend/start-container.sh +++ b/backend/start-container.sh @@ -7,8 +7,11 @@ echo "🦊 Starting Foxy Dev Team API Container..." export FOXY_HOME="${FOXY_HOME:-/home/foxy/.openclaw}" export OPENCLAW_TYPE="${OPENCLAW_TYPE:-shared}" +# Ensure logs directory exists +mkdir -p "$FOXY_HOME/logs" + if [ "$OPENCLAW_TYPE" = "standalone" ]; then - echo "🔧 OPENCLAW_TYPE is standalone. Setting up OpenClaw..." + echo "🔧 OPENCLAW_TYPE is standalone. Setting up internal OpenClaw Gateway..." # Initialize OpenClaw default configuration if it doesn't exist if [ ! -f "$FOXY_HOME/config.json" ] && [ ! -f "$FOXY_HOME/config.yaml" ]; then @@ -16,29 +19,42 @@ if [ "$OPENCLAW_TYPE" = "standalone" ]; then mkdir -p "$FOXY_HOME/workspace" mkdir -p "$FOXY_HOME/agents" - # Write a simple default config if OpenClaw hasn't been onboarded + # Write a simple default config for Docker environment cat < "$FOXY_HOME/config.json" { "theme": "dark", "logLevel": "info", - "gatewayPort": 20124, - "gatewayHost": "127.0.0.1", + "gatewayPort": 18789, + "gatewayHost": "0.0.0.0", "workspaceDir": "$FOXY_HOME/workspace", "agentsDir": "$FOXY_HOME/agents" } EOF - echo "✅ Default configuration created." + echo "✅ Default configuration created (binding to 0.0.0.0)." else echo "👍 OpenClaw configuration already exists at $FOXY_HOME." + # Optional: ensure gatewayHost is 0.0.0.0 even in existing config if it's internal fi - echo "🚀 Starting OpenClaw Gateway in the background..." - # Starting OpenClaw gateway in the background so it doesn't block FastAPI + echo "🚀 Starting OpenClaw Gateway..." + # Launching the gateway. If 'start' backgrounds itself we might need 'run' or similar. + # We use 'nohup' but we'll check it's alive. if command -v openclaw >/dev/null 2>&1; then - nohup openclaw gateway start > "$FOXY_HOME/logs/gateway.log" 2>&1 & - echo "✅ OpenClaw Gateway started." + # Some versions of openclaw use 'gateway run' or just 'gateway' for foreground + nohup openclaw gateway start --host 0.0.0.0 > "$FOXY_HOME/logs/gateway.log" 2>&1 & + + # Give it a second to start + sleep 2 + + if pgrep -f "openclaw" > /dev/null; then + echo "✅ OpenClaw Gateway started successfully." + else + echo "⚠️ Gateway didn't start with 'start' command, trying direct execution..." + # Fallback for some installations + nohup openclaw gateway > "$FOXY_HOME/logs/gateway.log" 2>&1 & + fi else - echo "❌ 'openclaw' command not found, unable to start gateway!" + echo "❌ 'openclaw' command not found!" fi else echo "🔗 OPENCLAW_TYPE is shared. Assuming OpenClaw Gateway is managed by the host." diff --git a/docker-compose.yml b/docker-compose.yml index f805abb..8ee0672 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -20,6 +20,7 @@ services: restart: unless-stopped ports: - "${API_PORT:-7000}:7000" + - "18789:18789" env_file: - backend/.env environment: