File size: 2,310 Bytes
89d226e
73ef895
89d226e
 
73ef895
89d226e
 
a0f823c
89d226e
 
73ef895
89d226e
 
2af8a49
c37c186
4ee7a5e
89d226e
73ef895
89d226e
 
 
e793d5e
 
8d24432
 
d0a6395
 
8d24432
 
f1fb0ec
e8b6073
f1fb0ec
 
 
d0a6395
 
219b572
89d226e
 
 
 
0a53576
d0a6395
 
1e8fef7
 
0a53576
89d226e
4dddbea
9bedf7d
862edcf
a3cab57
cfaf006
3a39604
 
cfaf006
862edcf
3a39604
862edcf
0e9d3a7
b80cf9e
 
9f95f6c
6a4d949
9f95f6c
89d226e
 
 
 
 
 
f1fb0ec
 
 
219b572
f1fb0ec
9f95f6c
 
 
89d226e
e793d5e
a8a758b
89d226e
 
 
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
77
78
79
80
81
82
83
84
85
86
FROM node:22-slim

# Install system dependencies
RUN apt-get update && apt-get install -y git && rm -rf /var/lib/apt/lists/*

# Install OpenClaw globally
RUN npm install -g openclaw@latest

# Create config directory
RUN mkdir -p /root/.openclaw

# Set up environment for Hugging Face Spaces
ENV PORT=7860
ENV OPENCLAW_GATEWAY_MODE=local
ENV OPENCLAW_GATEWAY_PASSWORD=${SETUP_PASSWORD}

# Expose the port (Hugging Face default)
EXPOSE 7860

# Create a startup script that generates config and starts OpenClaw
RUN echo '#!/bin/bash\n\
set -x\n\
\n\
# Check for required environment variables\n\
if [ -z "$GEMINI_API_KEY_1" ]; then\n\
  echo "ERROR: GEMINI_API_KEY_1 is not set. Agent will fail. Exiting."\n\
  exit 1\n\
fi\n\
\n\
# Create critical missing directories\n\
mkdir -p /root/.openclaw/agents/main/agent\n\
mkdir -p /root/.openclaw/agents/main/sessions\n\
mkdir -p /root/.openclaw/credentials\n\
\n\
# Remove auth-profiles.json if it exists to force env var usage\n\
rm -f /root/.openclaw/agents/main/agent/auth-profiles.json\n\
\n\
# Generate minimal config if not exists\n\
if [ ! -f /root/.openclaw/openclaw.json ]; then\n\
  cat > /root/.openclaw/openclaw.json << EOF\n\
{\n\
  "env": {\n\
    "GOOGLE_API_KEY": "${GEMINI_API_KEY_1}",\n\
    "GEMINI_API_KEY": "${GEMINI_API_KEY_1}",\n\
    "GOOGLE_GENERATIVE_AI_API_KEY": "${GEMINI_API_KEY_1}",\n\
    "PALM_API_KEY": "${GEMINI_API_KEY_1}"\n\
  },\n\
  "gateway": {\n\
    "mode": "local",\n\
    "bind": "lan",\n\
    "port": 7860,\n\
    "trustedProxies": ["0.0.0.0/0"],\n\
    "auth": {\n\
      "mode": "token",\n\
      "token": "${SETUP_PASSWORD}"\n\
    },\n\
    "controlUi": {\n\
      "allowInsecureAuth": true\n\
    }\n\
  },\n\
  "agents": {\n\
    "defaults": {\n\
      "model": {\n\
        "primary": "google/gemini-1.5-pro"\n\
      }\n\
    }\n\
  }\n\
}\n\
EOF\n\
fi\n\
\n\
# Fix permissions\n\
chmod 700 /root/.openclaw\n\
chmod 600 /root/.openclaw/openclaw.json\n\
chmod 600 /root/.openclaw/agents/main/agent/auth-profiles.json\n\
\n\
# Fix config if needed\n\
openclaw doctor --fix\n\
\n\
# Start OpenClaw gateway\n\
echo "Starting OpenClaw gateway on port 7860..."\n\
exec openclaw gateway run --port 7860\n\
' > /usr/local/bin/start-openclaw && chmod +x /usr/local/bin/start-openclaw

CMD ["/usr/local/bin/start-openclaw"]