Elysiadev11 commited on
Commit
78e7c64
Β·
verified Β·
1 Parent(s): 972d2b7

Create start-openclaw.sh

Browse files
Files changed (1) hide show
  1. start-openclaw.sh +128 -0
start-openclaw.sh ADDED
@@ -0,0 +1,128 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ #!/bin/bash
2
+
3
+ # ─────────────────────────────────────────────────────────────
4
+ # πŸ“ PATH: start-openclaw.sh (root HF Space repo)
5
+ # Upload/edit file ini di:
6
+ # https://huggingface.co/spaces/mark421/OpenClaw-ai/blob/main/start-openclaw.sh
7
+ # ─────────────────────────────────────────────────────────────
8
+
9
+ set -e
10
+
11
+ # ── 1. Buat direktori yang dibutuhkan ──────────────────────────
12
+ mkdir -p /root/.openclaw/agents/main/sessions
13
+ mkdir -p /root/.openclaw/credentials
14
+ mkdir -p /root/.openclaw/sessions
15
+ mkdir -p /root/.openclaw/browsers
16
+
17
+ # ── 2. Restore backup dari HF Dataset (kalau ada) ─────────────
18
+ python3 /app/sync.py restore
19
+
20
+
21
+ # ── DNS Fix untuk Chromium di Docker ─────────────────────────
22
+ # HF Spaces Docker kadang DNS-nya tidak resolve dari Chromium
23
+ echo "nameserver 8.8.8.8" >> /etc/resolv.conf
24
+ echo "nameserver 8.8.4.4" >> /etc/resolv.conf
25
+ echo ">>> DNS fixed."
26
+ # ── 3. Install Playwright Chromium pakai CLI bawaan OpenClaw ──
27
+ # (bukan python playwright β€” harus pakai node_modules openclaw)
28
+ export PLAYWRIGHT_BROWSERS_PATH=/root/.openclaw/browsers
29
+
30
+ CHROMIUM_PATH=$(find /root/.openclaw/browsers -name "chrome" -type f 2>/dev/null | head -1)
31
+
32
+ if [ -z "$CHROMIUM_PATH" ]; then
33
+ echo ">>> Chromium not found in backup, installing..."
34
+ node $(npm root -g)/openclaw/node_modules/playwright-core/cli.js install chromium || \
35
+ node /usr/local/lib/node_modules/openclaw/node_modules/playwright-core/cli.js install chromium || true
36
+ CHROMIUM_PATH=$(find /root/.openclaw/browsers -name "chrome" -type f 2>/dev/null | head -1)
37
+ else
38
+ echo ">>> Chromium restored from backup: $CHROMIUM_PATH"
39
+ fi
40
+
41
+ echo ">>> Chromium path: $CHROMIUM_PATH"
42
+
43
+ # ── 4. Bersihkan OPENAI_API_BASE ──────────────────────────────
44
+ CLEAN_BASE=$(echo "$OPENAI_API_BASE" \
45
+ | sed "s|/chat/completions||g" \
46
+ | sed "s|/v1/|/v1|g" \
47
+ | sed "s|/v1$|/v1|g")
48
+
49
+ # ── 5. Generate openclaw.json ──────────────────────────────────
50
+ cat > /root/.openclaw/openclaw.json <<EOF
51
+ {
52
+ "models": {
53
+ "providers": {
54
+ "nvidia": {
55
+ "baseUrl": "$CLEAN_BASE",
56
+ "apiKey": "$OPENAI_API_KEY",
57
+ "api": "openai-completions",
58
+ "models": [
59
+ { "id": "$MODEL", "name": "$MODEL", "contextWindow": 128000 }
60
+ ]
61
+ }
62
+ }
63
+ },
64
+ "agents": {
65
+ "defaults": {
66
+ "model": { "primary": "nvidia/$MODEL" }
67
+ }
68
+ },
69
+ "commands": {
70
+ "restart": true
71
+ },
72
+ "browser": {
73
+ "enabled": true,
74
+ "headless": true,
75
+ "noSandbox": true,
76
+ "chromiumArgs": [
77
+ "--no-sandbox",
78
+ "--disable-setuid-sandbox",
79
+ "--disable-dev-shm-usage",
80
+ "--disable-gpu",
81
+ "--dns-prefetch-disable",
82
+ "--ignore-certificate-errors"
83
+ ],
84
+ "executablePath": "$CHROMIUM_PATH",
85
+ "defaultProfile": "openclaw",
86
+ "ssrfPolicy": {
87
+ "dangerouslyAllowPrivateNetwork": true
88
+ },
89
+ "profiles": {
90
+ "openclaw": {
91
+ "cdpPort": 18800
92
+ }
93
+ }
94
+ },
95
+ "gateway": {
96
+ "mode": "local",
97
+ "bind": "lan",
98
+ "port": $PORT,
99
+ "trustedProxies": ["0.0.0.0/0"],
100
+ "auth": { "mode": "token", "token": "$OPENCLAW_GATEWAY_PASSWORD" },
101
+ "http": {
102
+ "endpoints": {
103
+ "chatCompletions": { "enabled": true }
104
+ }
105
+ },
106
+ "controlUi": {
107
+ "enabled": true,
108
+ "allowInsecureAuth": true,
109
+ "dangerouslyDisableDeviceAuth": true,
110
+ "dangerouslyAllowHostHeaderOriginFallback": true
111
+ }
112
+ }
113
+ }
114
+ EOF
115
+
116
+ echo ">>> openclaw.json generated."
117
+
118
+ # ── 6. Backup otomatis setiap 1 jam ───────────────────────────
119
+ (while true; do
120
+ sleep 3600
121
+ echo ">>> Running scheduled backup..."
122
+ python3 /app/sync.py backup
123
+ done) &
124
+
125
+ # ── 7. Jalankan OpenClaw ───────────────────────────────────────
126
+ openclaw doctor --fix
127
+
128
+ exec openclaw gateway run --port $PORT