AiBOT007 commited on
Commit
2c79a7e
·
verified ·
1 Parent(s): 5bd484d

Create start_openclaw.sh

Browse files
Files changed (1) hide show
  1. start_openclaw.sh +142 -0
start_openclaw.sh ADDED
@@ -0,0 +1,142 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ #!/usr/bin/env bash
2
+
3
+ set -Eeuo pipefail
4
+
5
+ OPENCLAW_HOME="/root/.openclaw"
6
+ SYNC_SCRIPT="/app/sync.py"
7
+ BACKUP_INTERVAL="${BACKUP_INTERVAL:-3600}"
8
+
9
+ log() {
10
+ echo "$1"
11
+ }
12
+
13
+ # 退出时尽量做一次备份
14
+ cleanup() {
15
+ log "[ENTRYPOINT] received exit signal, running final backup..."
16
+ python3 "$SYNC_SCRIPT" backup || log "[ENTRYPOINT] final backup failed"
17
+ }
18
+ trap cleanup EXIT TERM INT
19
+
20
+ # 1. 补全目录
21
+ mkdir -p "$OPENCLAW_HOME/agents/main/sessions"
22
+ mkdir -p "$OPENCLAW_HOME/credentials"
23
+ mkdir -p "$OPENCLAW_HOME/sessions"
24
+
25
+ # 2. 恢复
26
+ log "[ENTRYPOINT] restoring state..."
27
+ python3 "$SYNC_SCRIPT" restore || log "[ENTRYPOINT] no backup restored or restore failed"
28
+
29
+ # 3. 处理 API 地址
30
+ CLEAN_BASE="${OPENAI_API_BASE:-}"
31
+ CLEAN_BASE="${CLEAN_BASE%/chat/completions}"
32
+ CLEAN_BASE="${CLEAN_BASE%/}"
33
+ if [[ "$CLEAN_BASE" != */v1 ]]; then
34
+ CLEAN_BASE="${CLEAN_BASE}/v1"
35
+ fi
36
+
37
+ log "[ENTRYPOINT] using API base: $CLEAN_BASE"
38
+
39
+ # 4. 生成配置文件
40
+ cat > "$OPENCLAW_HOME/openclaw.json" <<EOF
41
+ {
42
+ "gateway": {
43
+ "mode": "local",
44
+ "bind": "lan",
45
+ "port": $PORT,
46
+ "trustedProxies": ["0.0.0.0/0"],
47
+ "auth": {
48
+ "mode": "token",
49
+ "token": "$OPENCLAW_GATEWAY_PASSWORD"
50
+ },
51
+ "controlUi": {
52
+ "enabled": true,
53
+ "allowInsecureAuth": true,
54
+ "dangerouslyDisableDeviceAuth": true,
55
+ "dangerouslyAllowHostHeaderOriginFallback": true
56
+ }
57
+ },
58
+ "logging": {
59
+ "level": "debug",
60
+ "consoleLevel": "debug",
61
+ "consoleStyle": "pretty",
62
+ "redactSensitive": "tools"
63
+ },
64
+ "session": {
65
+ "dmScope": "per-channel-peer"
66
+ },
67
+ "models": {
68
+ "providers": {
69
+ "nvidia": {
70
+ "baseUrl": "$OPENAI_API_BASE",
71
+ "apiKey": "$OPENAI_API_KEY",
72
+ "api": "openai-completions",
73
+ "models": [
74
+ { "id": "$MODEL", "name": "$MODEL", "contextWindow": 128000 }
75
+ ]
76
+ }
77
+ }
78
+ },
79
+ "agents": {
80
+ "defaults": {
81
+ "model": {
82
+ "primary": "nvidia/$MODEL"
83
+ }
84
+ }
85
+ },
86
+ "commands": {
87
+ "restart": true
88
+ },
89
+ "tools": {
90
+ "agentToAgent": {
91
+ "enabled": true,
92
+ "allow": ["assistant", "coder", "designer"]
93
+ },
94
+ "allow": ["exec", "read", "write", "edit", "process", "bash", "sessions_spawn", "sessions_send", "sessions_list", "message"],
95
+ "deny": ["gateway", "cron"],
96
+ "elevated": {
97
+ "enabled": true,
98
+ "allowFrom": {
99
+ "discord": ["*"],
100
+ "feishu": ["*"]
101
+ }
102
+ }
103
+ },
104
+ "channels": {
105
+ "feishu": {
106
+ "enabled": true,
107
+ "dmPolicy": "open",
108
+ "groupPolicy": "open",
109
+ "allowFrom": ["*"],
110
+ "accounts": {
111
+ "main": {
112
+ "appId": "$FEISHU_APP_ID",
113
+ "appSecret": "$FEISHU_APP_SECRET",
114
+ "botName": "OpenClaw AI",
115
+ "encryptKey": "$FEISHU_ENCRYPT_KEY"
116
+ }
117
+ }
118
+ }
119
+ }
120
+ }
121
+ EOF
122
+
123
+ chmod 600 "$OPENCLAW_HOME/openclaw.json"
124
+
125
+ # 5. 启动定时备份
126
+ (
127
+ while true; do
128
+ sleep "$BACKUP_INTERVAL"
129
+ log "[ENTRYPOINT] periodic backup..."
130
+ python3 "$SYNC_SCRIPT" backup || log "[ENTRYPOINT] periodic backup failed"
131
+ done
132
+ ) &
133
+
134
+ BACKUP_PID=$!
135
+
136
+ # 6. 预检查
137
+ log "[ENTRYPOINT] running doctor..."
138
+ openclaw doctor --fix || log "[ENTRYPOINT] warning: openclaw doctor failed"
139
+
140
+ # 7. 运行主进程
141
+ log "[ENTRYPOINT] starting gateway on port $PORT"
142
+ exec openclaw gateway run --port "$PORT"