File size: 1,811 Bytes
d6b7dbe 30802fb d6b7dbe 30802fb d6b7dbe 75e0712 d6b7dbe 30802fb d6b7dbe e7dd8ba d6b7dbe ba7c227 d6b7dbe 763101f e7dd8ba 763101f ba7c227 763101f d6b7dbe 30802fb d6b7dbe 3321708 09ae1e3 3321708 d6b7dbe 30802fb 3321708 30802fb d6b7dbe 30802fb d6b7dbe 30802fb 3321708 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 | #!/bin/bash
set -e
PORT=${PORT:-7860}
# 1. 初始化目录
mkdir -p /root/.openclaw/agents/main/sessions
mkdir -p /root/.openclaw/credentials
mkdir -p /root/.openclaw/sessions
# 2. 恢复数据
echo "=== Restore Data ==="
python3 /app/sync.py
# 3. 处理 API 地址
CLEAN_BASE=$(echo "$NVIDIA_API_BASE" | sed "s|/chat/completions||g" | sed "s|/v1/|/v1|g" | sed "s|/v1$|/v1|g")
# 4. 生成配置文件(无 JSON 语法错误)
cat > /root/.openclaw/openclaw.json <<EOF
{
"models": {
"providers": {
"nvidia": {
"baseUrl": "$CLEAN_BASE",
"apiKey": "$NVIDIA_API_KEY",
"api": "openai-completions",
"models": [
{ "id": "$MODEL", "name": "🟢 NVIDIA - $MODEL", "contextWindow": 128000 }
]
},
"openai": {
"baseUrl": "$OPENAI_API_BASE",
"apiKey": "$OPENAI_API_KEY",
"api": "openai-completions",
"models": [
{"id": "gpt-4o-mini","name": "🔵 OpenAI - gpt-4o-mini", "contextWindow": 128000 }
]
}
}
},
"agents": {
"defaults": {
"model": {
"primary": "nvidia/$MODEL"
}
}
},
"commands": {
"restart": true
},
"gateway": {
"mode": "local",
"bind": "lan",
"port": $PORT,
"trustedProxies": ["0.0.0.0/0"],
"auth": {
"mode": "token",
"token": "$OPENCLAW_GATEWAY_PASSWORD"
},
"controlUi": {
"enabled": true,
"allowInsecureAuth": true,
"dangerouslyDisableDeviceAuth": true,
"dangerouslyAllowHostHeaderOriginFallback": true
}
}
}
EOF
# 5. 定时备份(每1小时)
echo "=== Start Backup Loop ==="
(while true; do sleep 3600; python3 /app/sync.py backup; done) &
# 6. 启动 OpenClaw Gateway
echo "=== Starting OpenClaw ==="
exec openclaw gateway run --port $PORT |