diff --git a/backend/start-container.sh b/backend/start-container.sh index 03f75bb..cb9fa40 100644 --- a/backend/start-container.sh +++ b/backend/start-container.sh @@ -24,68 +24,37 @@ find "$FOXY_HOME" -type f \( -name "*.json" -o -name "*.yaml" -o -name "*.yml" \ -exec sed -i 's/\/home\/openclaw/\/home\/foxy/g' {} + 2>/dev/null || true echo "✅ Path patching complete." -# ─── Ensure gateway.bind is set to 0.0.0.0 in config ───────────────────────── -# OpenClaw uses openclaw.json as its config file -OCCONFIG="$FOXY_HOME/openclaw.json" - -if [ -f "$OCCONFIG" ]; then - echo "🔧 Ensuring gateway binds to 0.0.0.0 in $OCCONFIG..." - # Replace any 127.0.0.1 binding with 0.0.0.0 so Docker can expose the port - sed -i 's/"bind"[[:space:]]*:[[:space:]]*"loopback"/"bind": "all"/g' "$OCCONFIG" - sed -i 's/"bind"[[:space:]]*:[[:space:]]*"127.0.0.1"/"bind": "0.0.0.0"/g' "$OCCONFIG" - # Also handle the gateway.host key if present - sed -i 's/"host"[[:space:]]*:[[:space:]]*"127.0.0.1"/"host": "0.0.0.0"/g' "$OCCONFIG" -fi - -# ─── Default config if none exists ──────────────────────────────────────────── -if [ ! -f "$OCCONFIG" ]; then - echo "📦 No openclaw.json found. Creating default configuration..." - cat <<'DEFAULTEOF' > "$OCCONFIG" -{ - "gateway": { - "port": 18789, - "bind": "all" - }, - "agents": { - "directory": "/home/foxy/.openclaw/agents" - }, - "workspace": "/home/foxy/.openclaw/workspace" -} -DEFAULTEOF - echo "✅ Default openclaw.json created." -fi - # ─── Gateway startup ───────────────────────────────────────────────────────── if [ "$OPENCLAW_TYPE" = "standalone" ]; then echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━" - echo "🚀 Starting OpenClaw Gateway (standalone)..." + echo "🚀 Starting OpenClaw Gateway (standalone, foreground mode)..." - # Kill any leftover process - pkill -f "openclaw" 2>/dev/null || true - sleep 1 - - # Start gateway — NO --host flag (doesn't exist). - # Binding is controlled via openclaw.json gateway.bind setting. - nohup openclaw gateway start > "$FOXY_HOME/logs/gateway.log" 2>&1 & + # Use 'gateway run' (foreground) instead of 'gateway start' (systemd). + # --bind lan : listen on all interfaces (required for Docker port mapping) + # --port 18789 : explicit port + nohup openclaw gateway run --bind lan --port 18789 > "$FOXY_HOME/logs/gateway.log" 2>&1 & GATEWAY_PID=$! echo "⏱ Waiting for Gateway (PID $GATEWAY_PID) to initialize..." sleep 5 - # Check if process is alive if kill -0 $GATEWAY_PID 2>/dev/null; then echo "✅ OpenClaw Gateway is running (PID $GATEWAY_PID)." - # Check port if netstat -tulpn 2>/dev/null | grep -q 18789; then echo "✅ Port 18789 is listening." else - echo "⚠️ Gateway running but port 18789 not yet open. It may need more time." - echo " Check logs: cat $FOXY_HOME/logs/gateway.log" + echo "⚠️ Port 18789 not yet open. Waiting 5 more seconds..." + sleep 5 + if netstat -tulpn 2>/dev/null | grep -q 18789; then + echo "✅ Port 18789 is now listening." + else + echo "⚠️ Port still not open. Check: cat $FOXY_HOME/logs/gateway.log" + fi fi else echo "❌ OpenClaw Gateway failed to start!" echo "──── Gateway Log ────" - cat "$FOXY_HOME/logs/gateway.log" 2>/dev/null || echo "(no log)" + tail -n 30 "$FOXY_HOME/logs/gateway.log" 2>/dev/null || echo "(no log)" echo "─────────────────────" echo "⚠️ Continuing without Gateway. API will still start." fi