syw1516 commited on
Commit
43a222e
·
verified ·
1 Parent(s): e2d5617

Update scripts/openclaw-entrypoint.sh

Browse files
Files changed (1) hide show
  1. scripts/openclaw-entrypoint.sh +86 -78
scripts/openclaw-entrypoint.sh CHANGED
@@ -1,4 +1,3 @@
1
-
2
  #!/usr/bin/env bash
3
  set -euo pipefail
4
 
@@ -9,106 +8,115 @@ OPENCLAW_GATEWAY_PORT="${OPENCLAW_GATEWAY_PORT:-7860}"
9
 
10
  BACKUP_ENABLED="${OPENCLAW_BACKUP_ENABLED:-true}"
11
  HF_TOKEN="${HF_TOKEN:-${HUGGINGFACE_HUB_TOKEN:-}}"
12
- BACKUP_DATASET_REPO="${OPENCLAW_BACKUP_DATASET_REPO:-}"
13
 
14
  mkdir -p /var/log/openclaw
15
  mkdir -p "${OPENCLAW_STATE_DIR}"/{workspace,agents/main/agent,agents/main/sessions,logs,identity}
16
 
17
  log_info() {
18
- echo "[$(date -u +%Y-%m-%dT%H:%M:%SZ)] [ENTRYPOINT] $1" | tee -a /var/log/openclaw/gateway.stdout.log
19
  }
20
 
21
  restore_if_exists() {
22
- if [[ -z "${HF_TOKEN}" ]] || [[ -z "${BACKUP_DATASET_REPO}" ]]; then
23
- log_info "未配置备份,跳过恢复步骤"
24
- return 0
25
- fi
26
- log_info "检查备份数据..."
27
- RESTORE_TEMP=$(mktemp -d)
28
- if huggingface-cli download "${BACKUP_DATASET_REPO}" --repo-type dataset --token "${HF_TOKEN}" --local-dir "${RESTORE_TEMP}" 2>/dev/null; then
29
- log_info "找到备份,开始恢复数据..."
30
- [[ -d "${RESTORE_TEMP}/workspace" ]] && cp -r "${RESTORE_TEMP}/workspace/"* "${OPENCLAW_WORKSPACE_DIR}/" 2>/dev/null || true
31
- [[ -d "${RESTORE_TEMP}/agents" ]] && cp -r "${RESTORE_TEMP}/agents/"* "${OPENCLAW_STATE_DIR}/agents/" 2>/dev/null || true
32
- [[ -d "${RESTORE_TEMP}/identity" ]] && cp -r "${RESTORE_TEMP}/identity/"* "${OPENCLAW_STATE_DIR}/identity/" 2>/dev/null || true
33
- log_info "数据恢复完成"
34
- else
35
- log_info "未找到备份或下载失败,跳过恢复"
36
- fi
37
- rm -rf "${RESTORE_TEMP}"
38
  }
39
 
40
  backup_on_start() {
41
- if [[ "${BACKUP_ENABLED}" != "true" ]]; then
42
- return 0
43
- fi
44
- if [[ -z "${HF_TOKEN}" ]] || [[ -z "${BACKUP_DATASET_REPO}" ]]; then
45
- log_info "未配置备份,跳过启动备份"
46
- return 0
47
- fi
48
- log_info "执行启动备份..."
49
- BACKUP_TEMP=$(mktemp -d)
50
- cp -r "${OPENCLAW_WORKSPACE_DIR}" "${BACKUP_TEMP}/" 2>/dev/null || true
51
- cp -r "${OPENCLAW_STATE_DIR}/agents" "${BACKUP_TEMP}/" 2>/dev/null || true
52
- cp -r "${OPENCLAW_STATE_DIR}/identity" "${BACKUP_TEMP}/" 2>/dev/null || true
53
- echo "{\"backup_time\": \"$(date -u +%Y-%m-%dT%H:%M:%SZ)\", \"trigger\": \"startup\"}" > "${BACKUP_TEMP}/backup_info.json"
54
- if huggingface-cli upload "${BACKUP_DATASET_REPO}" "${BACKUP_TEMP}/" --repo-type dataset --token "${HF_TOKEN}" --commit-message "Auto-backup $(date -u +%Y-%m-%dT%H:%M:%SZ)" 2>/dev/null; then
55
- log_info "启动备份完成"
56
- else
57
- log_info "启动备份失败(继续启动)"
58
- fi
59
- rm -rf "${BACKUP_TEMP}"
60
  }
61
 
62
  init_config() {
63
- local config_file="${OPENCLAW_STATE_DIR}/openclaw.json"
64
- log_info "初始化 OpenClaw 配置..."
65
- cat > "${config_file}" <<'EOFCONFIG'
66
  {
67
- "meta": {
68
- "lastTouchedVersion": "2026.5.6"
69
- },
70
- "gateway": {
71
- "mode": "local",
72
- "bind": "lan",
73
- "auth": {
74
- "mode": "token",
75
- "token": "CUSTOM_GATEWAY_TOKEN_PLACEHOLDER"
76
- },
77
- "controlUi": {
78
- "allowedOrigins": ["*"],
79
- "dangerouslyDisableDeviceAuth": true,
80
- "allowInsecureAuth": true
81
- },
82
- "devicePairing": {
83
- "required": false
84
- }
85
- },
86
- "agents": {
87
- "defaults": {
88
- "model": {
89
- "primary": "PLACEHOLDER_MODEL"
90
- }
91
- }
92
- }
 
 
 
 
 
 
 
 
93
  }
94
  EOFCONFIG
95
 
96
- sed -i "s/CUSTOM_GATEWAY_TOKEN_PLACEHOLDER/${OPENCLAW_GATEWAY_TOKEN:-}/" "${config_file}"
97
- sed -i "s/PLACEHOLDER_MODEL/${RAW_MODEL:-z-ai\/glm4.7}/" "${config_file}"
98
- log_info "配置初始化完成"
99
  }
100
 
101
  main() {
102
- log_info "===== OpenClaw 启动 ====="
103
- log_info "状态目录: ${OPENCLAW_STATE_DIR}"
104
- log_info "工作区目录: ${OPENCLAW_WORKSPACE_DIR}"
105
 
106
- init_config
107
- restore_if_exists
108
- backup_on_start
109
 
110
- log_info "启动 OpenClaw 网关..."
111
- exec openclaw gateway --bind lan --port "${OPENCLAW_GATEWAY_PORT}" --token "${OPENCLAW_GATEWAY_TOKEN}"
112
  }
113
 
114
  main "$@"
 
 
 
1
  #!/usr/bin/env bash
2
  set -euo pipefail
3
 
 
8
 
9
  BACKUP_ENABLED="${OPENCLAW_BACKUP_ENABLED:-true}"
10
  HF_TOKEN="${HF_TOKEN:-${HUGGINGFACE_HUB_TOKEN:-}}"
11
+ BACKUP_DATASET_REPO="${BACKUP_DATASET_REPO:-}"
12
 
13
  mkdir -p /var/log/openclaw
14
  mkdir -p "${OPENCLAW_STATE_DIR}"/{workspace,agents/main/agent,agents/main/sessions,logs,identity}
15
 
16
  log_info() {
17
+ echo "[$(date -u +%Y-%m-%dT%H:%M:%SZ)] [ENTRYPOINT] $1" | tee -a /var/log/openclaw/gateway.stdout.log
18
  }
19
 
20
  restore_if_exists() {
21
+ if [[ -z "${HF_TOKEN}" ]] || [[ -z "${BACKUP_DATASET_REPO}" ]]; then
22
+ log_info "未配置备份,跳过恢复步骤"
23
+ return 0
24
+ fi
25
+ log_info "检查备份数据..."
26
+ RESTORE_TEMP=$(mktemp -d)
27
+ if huggingface-cli download "${BACKUP_DATASET_REPO}" --repo-type dataset --token "${HF_TOKEN}" --local-dir "${RESTORE_TEMP}" 2>/dev/null; then
28
+ log_info "找到备份,开始恢复数据..."
29
+ [[ -d "${RESTORE_TEMP}/workspace" ]] && cp -r "${RESTORE_TEMP}/workspace/"* "${OPENCLAW_WORKSPACE_DIR}/" 2>/dev/null || true
30
+ [[ -d "${RESTORE_TEMP}/agents" ]] && cp -r "${RESTORE_TEMP}/agents/"* "${OPENCLAW_STATE_DIR}/agents/" 2>/dev/null || true
31
+ [[ -d "${RESTORE_TEMP}/identity" ]] && cp -r "${RESTORE_TEMP}/identity/"* "${OPENCLAW_STATE_DIR}/identity/" 2>/dev/null || true
32
+ log_info "数据恢复完成"
33
+ else
34
+ log_info "未找到备份或下载失败,跳过恢复"
35
+ fi
36
+ rm -rf "${RESTORE_TEMP}"
37
  }
38
 
39
  backup_on_start() {
40
+ if [[ "${BACKUP_ENABLED}" != "true" ]]; then
41
+ return 0
42
+ fi
43
+ if [[ -z "${HF_TOKEN}" ]] || [[ -z "${BACKUP_DATASET_REPO}" ]]; then
44
+ log_info "未配置备份,跳过启动备份"
45
+ return 0
46
+ fi
47
+ log_info "执行启动备份..."
48
+ BACKUP_TEMP=$(mktemp -d)
49
+ cp -r "${OPENCLAW_WORKSPACE_DIR}" "${BACKUP_TEMP}/" 2>/dev/null || true
50
+ cp -r "${OPENCLAW_STATE_DIR}/agents" "${BACKUP_TEMP}/" 2>/dev/null || true
51
+ cp -r "${OPENCLAW_STATE_DIR}/identity" "${BACKUP_TEMP}/" 2>/dev/null || true
52
+ echo "{\"backup_time\": \"$(date -u +%Y-%m-%dT%H:%M:%SZ)\", \"trigger\": \"startup\"}" > "${BACKUP_TEMP}/backup_info.json"
53
+ if huggingface-cli upload "${BACKUP_DATASET_REPO}" "${BACKUP_TEMP}/" --repo-type dataset --token "${HF_TOKEN}" --commit-message "Auto-backup $(date -u +%Y-%m-%dT%H:%M:%SZ)" 2>/dev/null; then
54
+ log_info "启动备份完成"
55
+ else
56
+ log_info "启动备份失败(继续启动)"
57
+ fi
58
+ rm -rf "${BACKUP_TEMP}"
59
  }
60
 
61
  init_config() {
62
+ local config_file="${OPENCLAW_STATE_DIR}/openclaw.json"
63
+ log_info "初始化 OpenClaw 配置..."
64
+ cat > "${config_file}" <<'EOFCONFIG'
65
  {
66
+ "meta": {
67
+ "lastTouchedVersion": "2026.5.6"
68
+ },
69
+ "gateway": {
70
+ "mode": "local",
71
+ "bind": "lan",
72
+ "auth": {
73
+ "mode": "token",
74
+ "token": "CUSTOM_GATEWAY_TOKEN_PLACEHOLDER"
75
+ },
76
+ "controlUi": {
77
+ "allowedOrigins": ["*"],
78
+ "dangerouslyDisableDeviceAuth": true,
79
+ "allowInsecureAuth": true
80
+ },
81
+ "devicePairing": {
82
+ "required": false
83
+ }
84
+ },
85
+ "agents": {
86
+ "defaults": {
87
+ "model": {
88
+ "primary": "PLACEHOLDER_MODEL"
89
+ }
90
+ }
91
+ },
92
+ "channels": {
93
+ "weixin": {
94
+ "enabled": true,
95
+ "corpId": "wwdf06e4da02f37a0b",
96
+ "agentId": "1000003",
97
+ "secret": "2eVuCjsM83lXJ12nxoJG5uch677ZkOLHxew4zTPGGc8"
98
+ }
99
+ }
100
  }
101
  EOFCONFIG
102
 
103
+ sed -i "s/CUSTOM_GATEWAY_TOKEN_PLACEHOLDER/${OPENCLAW_GATEWAY_TOKEN:-}/" "${config_file}"
104
+ sed -i "s/PLACEHOLDER_MODEL/${RAW_MODEL:-z-ai\/glm4.7}/" "${config_file}"
105
+ log_info "配置初始化完成"
106
  }
107
 
108
  main() {
109
+ log_info "===== OpenClaw 启动 ====="
110
+ log_info "状态目录: ${OPENCLAW_STATE_DIR}"
111
+ log_info "工作区目录: ${OPENCLAW_WORKSPACE_DIR}"
112
 
113
+ init_config
114
+ restore_if_exists
115
+ backup_on_start
116
 
117
+ log_info "启动 OpenClaw 网关..."
118
+ exec openclaw gateway --bind lan --port "${OPENCLAW_GATEWAY_PORT}" --token "${OPENCLAW_GATEWAY_TOKEN}"
119
  }
120
 
121
  main "$@"
122
+