Files
danghuangshang/entrypoint.sh
wanikua 46e9296874 feat: 支持连接外部 OpenClaw 服务
新增:
- entrypoint.sh - 启动脚本,支持外部 OpenClaw 模式
- docker-compose.external-claw.yml - 外部 OpenClaw 配置示例
- EXTERNAL_CLAW.md - 完整配置文档
- README.md - 添加外部 OpenClaw 说明

环境变量:
 ENABLE_EXTERNAL_CLAW=true - 启用外部模式
 OPENCLAW_HOST - 外部 OpenClaw 地址
 OPENCLAW_PORT - 外部 OpenClaw 端口
 OPENCLAW_API_TOKEN - API 认证 Token(可选)

特性:
🔌 支持连接已有 OpenClaw 实例
🚫 避免端口冲突和服务冲突
📦 只运行 GUI,不启动内部 Gateway
🐳 提供 Docker Compose 配置示例
2026-03-29 07:52:49 +00:00

89 lines
2.5 KiB
Bash
Executable File
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
#!/bin/sh
# AI Court 入口脚本
# 支持连接外部 OpenClaw 服务
set -e
echo "======================================"
echo " AI Court 启动"
echo "======================================"
# 检查是否使用外部 OpenClaw
if [ "$ENABLE_EXTERNAL_CLAW" = "true" ] || [ "$ENABLE_INTERNAL_CLAW" = "false" ]; then
echo "📡 模式:连接外部 OpenClaw 服务"
echo ""
# 验证外部 OpenClaw 配置
if [ -z "$OPENCLAW_HOST" ]; then
OPENCLAW_HOST="host.docker.internal"
echo "⚠️ OPENCLAW_HOST 未设置,使用默认值:$OPENCLAW_HOST"
fi
if [ -z "$OPENCLAW_PORT" ]; then
OPENCLAW_PORT="18789"
echo "⚠️ OPENCLAW_PORT 未设置,使用默认值:$OPENCLAW_PORT"
fi
echo "外部 OpenClaw 地址http://$OPENCLAW_HOST:$OPENCLAW_PORT"
# 验证连接
echo "正在测试连接..."
if curl -f -s --connect-timeout 5 "http://$OPENCLAW_HOST:$OPENCLAW_PORT/health" > /dev/null 2>&1; then
echo "✅ 成功连接到外部 OpenClaw 服务"
else
echo "❌ 无法连接到外部 OpenClaw 服务"
echo " 请检查:"
echo " - OPENCLAW_HOST 是否正确"
echo " - OPENCLAW_PORT 是否正确"
echo " - 网络是否可达"
echo ""
echo "⚠️ 继续启动 GUI仅 GUI 模式)..."
fi
# 设置环境变量供 GUI 使用
export CLAW_SERVER_URL="http://$OPENCLAW_HOST:$OPENCLAW_PORT"
if [ -n "$OPENCLAW_API_TOKEN" ]; then
export CLAW_API_TOKEN="$OPENCLAW_API_TOKEN"
fi
echo ""
echo "启动 GUI 服务器..."
echo "======================================"
# 只启动 GUI不启动内部 OpenClaw
cd /opt/gui
exec node server/index.js
else
echo "🏠 模式:使用内部 OpenClaw 服务"
echo ""
# 启动内部 OpenClaw Gateway
echo "启动 OpenClaw Gateway..."
openclaw gateway --verbose &
GATEWAY_PID=$!
# 等待 Gateway 启动
echo "等待 Gateway 就绪..."
for i in $(seq 1 30); do
if curl -f -s "http://localhost:18789/health" > /dev/null 2>&1; then
echo "✅ Gateway 已就绪"
break
fi
if [ $i -eq 30 ]; then
echo "❌ Gateway 启动超时"
exit 1
fi
sleep 1
done
echo ""
echo "启动 GUI 服务器..."
echo "======================================"
# 启动 GUI
cd /opt/gui
exec node server/index.js
fi