@better-openclaw/core 1.0.19 → 1.0.21
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.github/dependabot.yml +32 -0
- package/.github/workflows/ci.yml +8 -8
- package/.github/workflows/publish-core.yml +4 -4
- package/SECURITY.md +62 -0
- package/dist/deployers/coolify.cjs +61 -50
- package/dist/deployers/coolify.cjs.map +1 -1
- package/dist/deployers/coolify.d.cts +4 -11
- package/dist/deployers/coolify.d.cts.map +1 -1
- package/dist/deployers/coolify.d.mts +4 -11
- package/dist/deployers/coolify.d.mts.map +1 -1
- package/dist/deployers/coolify.mjs +62 -50
- package/dist/deployers/coolify.mjs.map +1 -1
- package/dist/deployers/dokploy.cjs +106 -29
- package/dist/deployers/dokploy.cjs.map +1 -1
- package/dist/deployers/dokploy.d.cts +2 -1
- package/dist/deployers/dokploy.d.cts.map +1 -1
- package/dist/deployers/dokploy.d.mts +2 -1
- package/dist/deployers/dokploy.d.mts.map +1 -1
- package/dist/deployers/dokploy.mjs +107 -29
- package/dist/deployers/dokploy.mjs.map +1 -1
- package/dist/deployers/index.cjs.map +1 -1
- package/dist/deployers/index.d.cts +2 -2
- package/dist/deployers/index.d.cts.map +1 -1
- package/dist/deployers/index.d.mts +2 -2
- package/dist/deployers/index.d.mts.map +1 -1
- package/dist/deployers/index.mjs.map +1 -1
- package/dist/deployers/strip-host-ports.cjs +138 -0
- package/dist/deployers/strip-host-ports.cjs.map +1 -0
- package/dist/deployers/strip-host-ports.d.cts +62 -0
- package/dist/deployers/strip-host-ports.d.cts.map +1 -0
- package/dist/deployers/strip-host-ports.d.mts +62 -0
- package/dist/deployers/strip-host-ports.d.mts.map +1 -0
- package/dist/deployers/strip-host-ports.mjs +133 -0
- package/dist/deployers/strip-host-ports.mjs.map +1 -0
- package/dist/deployers/strip-host-ports.test.cjs +89 -0
- package/dist/deployers/strip-host-ports.test.cjs.map +1 -0
- package/dist/deployers/strip-host-ports.test.d.cts +1 -0
- package/dist/deployers/strip-host-ports.test.d.mts +1 -0
- package/dist/deployers/strip-host-ports.test.mjs +90 -0
- package/dist/deployers/strip-host-ports.test.mjs.map +1 -0
- package/dist/deployers/types.d.cts +173 -2
- package/dist/deployers/types.d.cts.map +1 -1
- package/dist/deployers/types.d.mts +173 -2
- package/dist/deployers/types.d.mts.map +1 -1
- package/dist/index.d.cts +2 -2
- package/dist/index.d.mts +2 -2
- package/dist/services/definitions/usesend.cjs +4 -4
- package/dist/services/definitions/usesend.cjs.map +1 -1
- package/dist/services/definitions/usesend.mjs +4 -4
- package/dist/services/definitions/usesend.mjs.map +1 -1
- package/package.json +4 -4
- package/src/__snapshots__/composer.snapshot.test.ts.snap +248 -38
- package/src/deployers/coolify.ts +198 -103
- package/src/deployers/dokploy.ts +209 -55
- package/src/deployers/index.ts +1 -0
- package/src/deployers/strip-host-ports.test.ts +100 -0
- package/src/deployers/strip-host-ports.ts +187 -0
- package/src/deployers/types.ts +185 -1
- package/src/index.ts +19 -4
- package/src/services/definitions/usesend.ts +4 -4
- package/tsconfig.tsbuildinfo +1 -0
|
@@ -11,6 +11,16 @@ exports[`compose snapshot tests > creator preset (ffmpeg + remotion + minio + re
|
|
|
11
11
|
CLAUDE_AI_SESSION_KEY: \${CLAUDE_AI_SESSION_KEY}
|
|
12
12
|
CLAUDE_WEB_SESSION_KEY: \${CLAUDE_WEB_SESSION_KEY}
|
|
13
13
|
CLAUDE_WEB_COOKIE: \${CLAUDE_WEB_COOKIE}
|
|
14
|
+
OPENAI_API_KEY: \${OPENAI_API_KEY}
|
|
15
|
+
ANTHROPIC_API_KEY: \${ANTHROPIC_API_KEY}
|
|
16
|
+
GOOGLE_API_KEY: \${GOOGLE_API_KEY}
|
|
17
|
+
XAI_API_KEY: \${XAI_API_KEY}
|
|
18
|
+
DEEPSEEK_API_KEY: \${DEEPSEEK_API_KEY}
|
|
19
|
+
GROQ_API_KEY: \${GROQ_API_KEY}
|
|
20
|
+
OPENROUTER_API_KEY: \${OPENROUTER_API_KEY}
|
|
21
|
+
MISTRAL_API_KEY: \${MISTRAL_API_KEY}
|
|
22
|
+
TOGETHER_API_KEY: \${TOGETHER_API_KEY}
|
|
23
|
+
OLLAMA_API_KEY: \${OLLAMA_API_KEY}
|
|
14
24
|
FFMPEG_SHARED_DIR: /home/node/.openclaw/workspace/media
|
|
15
25
|
MINIO_HOST: minio
|
|
16
26
|
MINIO_PORT: "9000"
|
|
@@ -51,8 +61,8 @@ exports[`compose snapshot tests > creator preset (ffmpeg + remotion + minio + re
|
|
|
51
61
|
MINIO_ROOT_USER: minioadmin
|
|
52
62
|
MINIO_ROOT_PASSWORD: \${MINIO_ROOT_PASSWORD}
|
|
53
63
|
ports:
|
|
54
|
-
- \${
|
|
55
|
-
- \${
|
|
64
|
+
- \${MINIO_EXTERNAL_PORT_0:-9000}:9000
|
|
65
|
+
- \${MINIO_EXTERNAL_PORT_1:-9001}:9001
|
|
56
66
|
volumes:
|
|
57
67
|
- minio-data:/data
|
|
58
68
|
healthcheck:
|
|
@@ -72,7 +82,7 @@ exports[`compose snapshot tests > creator preset (ffmpeg + remotion + minio + re
|
|
|
72
82
|
environment:
|
|
73
83
|
REDIS_PASSWORD: \${REDIS_PASSWORD}
|
|
74
84
|
ports:
|
|
75
|
-
- \${
|
|
85
|
+
- \${REDIS_EXTERNAL_PORT:-6379}:6379
|
|
76
86
|
volumes:
|
|
77
87
|
- redis-data:/data
|
|
78
88
|
healthcheck:
|
|
@@ -91,10 +101,22 @@ exports[`compose snapshot tests > creator preset (ffmpeg + remotion + minio + re
|
|
|
91
101
|
HOME: /home/node
|
|
92
102
|
TERM: xterm-256color
|
|
93
103
|
OPENCLAW_GATEWAY_TOKEN: \${OPENCLAW_GATEWAY_TOKEN}
|
|
104
|
+
OPENCLAW_GATEWAY_HOST: openclaw-gateway
|
|
105
|
+
OPENCLAW_GATEWAY_PORT: "18789"
|
|
94
106
|
BROWSER: echo
|
|
95
107
|
CLAUDE_AI_SESSION_KEY: \${CLAUDE_AI_SESSION_KEY}
|
|
96
108
|
CLAUDE_WEB_SESSION_KEY: \${CLAUDE_WEB_SESSION_KEY}
|
|
97
109
|
CLAUDE_WEB_COOKIE: \${CLAUDE_WEB_COOKIE}
|
|
110
|
+
OPENAI_API_KEY: \${OPENAI_API_KEY}
|
|
111
|
+
ANTHROPIC_API_KEY: \${ANTHROPIC_API_KEY}
|
|
112
|
+
GOOGLE_API_KEY: \${GOOGLE_API_KEY}
|
|
113
|
+
XAI_API_KEY: \${XAI_API_KEY}
|
|
114
|
+
DEEPSEEK_API_KEY: \${DEEPSEEK_API_KEY}
|
|
115
|
+
GROQ_API_KEY: \${GROQ_API_KEY}
|
|
116
|
+
OPENROUTER_API_KEY: \${OPENROUTER_API_KEY}
|
|
117
|
+
MISTRAL_API_KEY: \${MISTRAL_API_KEY}
|
|
118
|
+
TOGETHER_API_KEY: \${TOGETHER_API_KEY}
|
|
119
|
+
OLLAMA_API_KEY: \${OLLAMA_API_KEY}
|
|
98
120
|
volumes:
|
|
99
121
|
- \${OPENCLAW_CONFIG_DIR:-./openclaw/config}:/home/node/.openclaw
|
|
100
122
|
- \${OPENCLAW_WORKSPACE_DIR:-./openclaw/workspace}:/home/node/.openclaw/workspace
|
|
@@ -106,6 +128,10 @@ exports[`compose snapshot tests > creator preset (ffmpeg + remotion + minio + re
|
|
|
106
128
|
entrypoint:
|
|
107
129
|
- node
|
|
108
130
|
- dist/index.js
|
|
131
|
+
restart: no
|
|
132
|
+
depends_on:
|
|
133
|
+
openclaw-gateway:
|
|
134
|
+
condition: service_started
|
|
109
135
|
volumes:
|
|
110
136
|
ffmpeg-shared:
|
|
111
137
|
minio-data:
|
|
@@ -128,13 +154,13 @@ exports[`compose snapshot tests > creator preset (ffmpeg + remotion + minio + re
|
|
|
128
154
|
restart: unless-stopped
|
|
129
155
|
networks:
|
|
130
156
|
- openclaw-network
|
|
131
|
-
|
|
157
|
+
entrypoint: tail -f /dev/null
|
|
132
158
|
profiles:
|
|
133
159
|
- media
|
|
134
160
|
remotion:
|
|
135
161
|
image: remotion-dev/studio:4
|
|
136
162
|
ports:
|
|
137
|
-
- \${
|
|
163
|
+
- \${REMOTION_EXTERNAL_PORT:-3020}:3000
|
|
138
164
|
restart: unless-stopped
|
|
139
165
|
networks:
|
|
140
166
|
- openclaw-network
|
|
@@ -156,6 +182,16 @@ exports[`compose snapshot tests > devops preset (n8n + postgresql + redis + moni
|
|
|
156
182
|
CLAUDE_AI_SESSION_KEY: \${CLAUDE_AI_SESSION_KEY}
|
|
157
183
|
CLAUDE_WEB_SESSION_KEY: \${CLAUDE_WEB_SESSION_KEY}
|
|
158
184
|
CLAUDE_WEB_COOKIE: \${CLAUDE_WEB_COOKIE}
|
|
185
|
+
OPENAI_API_KEY: \${OPENAI_API_KEY}
|
|
186
|
+
ANTHROPIC_API_KEY: \${ANTHROPIC_API_KEY}
|
|
187
|
+
GOOGLE_API_KEY: \${GOOGLE_API_KEY}
|
|
188
|
+
XAI_API_KEY: \${XAI_API_KEY}
|
|
189
|
+
DEEPSEEK_API_KEY: \${DEEPSEEK_API_KEY}
|
|
190
|
+
GROQ_API_KEY: \${GROQ_API_KEY}
|
|
191
|
+
OPENROUTER_API_KEY: \${OPENROUTER_API_KEY}
|
|
192
|
+
MISTRAL_API_KEY: \${MISTRAL_API_KEY}
|
|
193
|
+
TOGETHER_API_KEY: \${TOGETHER_API_KEY}
|
|
194
|
+
OLLAMA_API_KEY: \${OLLAMA_API_KEY}
|
|
159
195
|
POSTGRES_HOST: postgresql
|
|
160
196
|
POSTGRES_PORT: "5432"
|
|
161
197
|
REDIS_HOST: redis
|
|
@@ -197,8 +233,9 @@ exports[`compose snapshot tests > devops preset (n8n + postgresql + redis + moni
|
|
|
197
233
|
POSTGRES_USER: openclaw
|
|
198
234
|
POSTGRES_PASSWORD: \${POSTGRES_PASSWORD}
|
|
199
235
|
POSTGRES_DB: openclaw
|
|
236
|
+
N8N_DB_PASSWORD: \${N8N_DB_PASSWORD}
|
|
200
237
|
ports:
|
|
201
|
-
- \${
|
|
238
|
+
- \${POSTGRESQL_EXTERNAL_PORT:-5432}:5432
|
|
202
239
|
volumes:
|
|
203
240
|
- postgres-data:/var/lib/postgresql/data
|
|
204
241
|
- ./postgres/init-databases.sh:/docker-entrypoint-initdb.d/init-databases.sh:ro
|
|
@@ -218,7 +255,7 @@ exports[`compose snapshot tests > devops preset (n8n + postgresql + redis + moni
|
|
|
218
255
|
environment:
|
|
219
256
|
REDIS_PASSWORD: \${REDIS_PASSWORD}
|
|
220
257
|
ports:
|
|
221
|
-
- \${
|
|
258
|
+
- \${REDIS_EXTERNAL_PORT:-6379}:6379
|
|
222
259
|
volumes:
|
|
223
260
|
- redis-data:/data
|
|
224
261
|
healthcheck:
|
|
@@ -246,7 +283,7 @@ exports[`compose snapshot tests > devops preset (n8n + postgresql + redis + moni
|
|
|
246
283
|
N8N_PORT: "5678"
|
|
247
284
|
WEBHOOK_URL: http://n8n:5678/
|
|
248
285
|
ports:
|
|
249
|
-
- \${
|
|
286
|
+
- \${N8N_EXTERNAL_PORT:-5678}:5678
|
|
250
287
|
volumes:
|
|
251
288
|
- n8n-data:/home/node/.n8n
|
|
252
289
|
healthcheck:
|
|
@@ -260,19 +297,70 @@ exports[`compose snapshot tests > devops preset (n8n + postgresql + redis + moni
|
|
|
260
297
|
restart: unless-stopped
|
|
261
298
|
networks:
|
|
262
299
|
- openclaw-network
|
|
300
|
+
depends_on:
|
|
301
|
+
postgres-setup:
|
|
302
|
+
condition: service_completed_successfully
|
|
303
|
+
postgres-setup:
|
|
304
|
+
image: postgres:17-alpine
|
|
263
305
|
depends_on:
|
|
264
306
|
postgresql:
|
|
265
307
|
condition: service_healthy
|
|
308
|
+
environment:
|
|
309
|
+
PGHOST: postgresql
|
|
310
|
+
PGUSER: \${POSTGRES_USER:-openclaw}
|
|
311
|
+
PGDATABASE: \${POSTGRES_DB:-openclaw}
|
|
312
|
+
PGPASSWORD: \${POSTGRES_PASSWORD}
|
|
313
|
+
N8N_DB_PASSWORD: \${N8N_DB_PASSWORD}
|
|
314
|
+
entrypoint:
|
|
315
|
+
- /bin/sh
|
|
316
|
+
- -c
|
|
317
|
+
command:
|
|
318
|
+
- >-
|
|
319
|
+
echo '=== PostgreSQL database setup ==='
|
|
320
|
+
|
|
321
|
+
FAILED=0
|
|
322
|
+
|
|
323
|
+
echo "Setting up database 'n8n' with user 'n8n'..."
|
|
324
|
+
|
|
325
|
+
psql -c "SELECT 1 FROM pg_roles WHERE rolname='n8n'" | grep -q 1 || psql -c "CREATE ROLE n8n WITH LOGIN PASSWORD
|
|
326
|
+
'$$N8N_DB_PASSWORD'"
|
|
327
|
+
|
|
328
|
+
psql -c "ALTER ROLE n8n WITH LOGIN PASSWORD '$$N8N_DB_PASSWORD'"
|
|
329
|
+
|
|
330
|
+
psql -tc "SELECT 1 FROM pg_database WHERE datname='n8n'" | grep -q 1 || psql -c "CREATE DATABASE n8n OWNER n8n"
|
|
331
|
+
|
|
332
|
+
psql -c "GRANT ALL PRIVILEGES ON DATABASE n8n TO n8n" || FAILED=1
|
|
333
|
+
|
|
334
|
+
echo " Done: n8n"
|
|
335
|
+
|
|
336
|
+
echo '=== All databases ready ==='
|
|
337
|
+
|
|
338
|
+
exit $$FAILED
|
|
339
|
+
restart: "no"
|
|
340
|
+
networks:
|
|
341
|
+
- openclaw-network
|
|
266
342
|
openclaw-cli:
|
|
267
343
|
image: \${OPENCLAW_IMAGE:-ghcr.io/openclaw/openclaw:latest}
|
|
268
344
|
environment:
|
|
269
345
|
HOME: /home/node
|
|
270
346
|
TERM: xterm-256color
|
|
271
347
|
OPENCLAW_GATEWAY_TOKEN: \${OPENCLAW_GATEWAY_TOKEN}
|
|
348
|
+
OPENCLAW_GATEWAY_HOST: openclaw-gateway
|
|
349
|
+
OPENCLAW_GATEWAY_PORT: "18789"
|
|
272
350
|
BROWSER: echo
|
|
273
351
|
CLAUDE_AI_SESSION_KEY: \${CLAUDE_AI_SESSION_KEY}
|
|
274
352
|
CLAUDE_WEB_SESSION_KEY: \${CLAUDE_WEB_SESSION_KEY}
|
|
275
353
|
CLAUDE_WEB_COOKIE: \${CLAUDE_WEB_COOKIE}
|
|
354
|
+
OPENAI_API_KEY: \${OPENAI_API_KEY}
|
|
355
|
+
ANTHROPIC_API_KEY: \${ANTHROPIC_API_KEY}
|
|
356
|
+
GOOGLE_API_KEY: \${GOOGLE_API_KEY}
|
|
357
|
+
XAI_API_KEY: \${XAI_API_KEY}
|
|
358
|
+
DEEPSEEK_API_KEY: \${DEEPSEEK_API_KEY}
|
|
359
|
+
GROQ_API_KEY: \${GROQ_API_KEY}
|
|
360
|
+
OPENROUTER_API_KEY: \${OPENROUTER_API_KEY}
|
|
361
|
+
MISTRAL_API_KEY: \${MISTRAL_API_KEY}
|
|
362
|
+
TOGETHER_API_KEY: \${TOGETHER_API_KEY}
|
|
363
|
+
OLLAMA_API_KEY: \${OLLAMA_API_KEY}
|
|
276
364
|
volumes:
|
|
277
365
|
- \${OPENCLAW_CONFIG_DIR:-./openclaw/config}:/home/node/.openclaw
|
|
278
366
|
- \${OPENCLAW_WORKSPACE_DIR:-./openclaw/workspace}:/home/node/.openclaw/workspace
|
|
@@ -284,6 +372,10 @@ exports[`compose snapshot tests > devops preset (n8n + postgresql + redis + moni
|
|
|
284
372
|
entrypoint:
|
|
285
373
|
- node
|
|
286
374
|
- dist/index.js
|
|
375
|
+
restart: no
|
|
376
|
+
depends_on:
|
|
377
|
+
openclaw-gateway:
|
|
378
|
+
condition: service_started
|
|
287
379
|
volumes:
|
|
288
380
|
grafana-data:
|
|
289
381
|
n8n-data:
|
|
@@ -302,7 +394,7 @@ exports[`compose snapshot tests > devops preset (n8n + postgresql + redis + moni
|
|
|
302
394
|
prometheus:
|
|
303
395
|
image: prom/prometheus:v3.9.1
|
|
304
396
|
ports:
|
|
305
|
-
- \${
|
|
397
|
+
- \${PROMETHEUS_EXTERNAL_PORT:-9090}:9090
|
|
306
398
|
volumes:
|
|
307
399
|
- prometheus-data:/prometheus
|
|
308
400
|
healthcheck:
|
|
@@ -322,13 +414,13 @@ exports[`compose snapshot tests > devops preset (n8n + postgresql + redis + moni
|
|
|
322
414
|
uptime-kuma:
|
|
323
415
|
image: louislam/uptime-kuma:2
|
|
324
416
|
ports:
|
|
325
|
-
- \${
|
|
417
|
+
- \${UPTIME_KUMA_EXTERNAL_PORT:-3001}:3001
|
|
326
418
|
volumes:
|
|
327
419
|
- uptime-kuma-data:/app/data
|
|
328
420
|
healthcheck:
|
|
329
421
|
test:
|
|
330
422
|
- CMD-SHELL
|
|
331
|
-
-
|
|
423
|
+
- curl -sf http://localhost:3001 || exit 1
|
|
332
424
|
interval: 30s
|
|
333
425
|
timeout: 10s
|
|
334
426
|
retries: 3
|
|
@@ -344,13 +436,13 @@ exports[`compose snapshot tests > devops preset (n8n + postgresql + redis + moni
|
|
|
344
436
|
GF_SECURITY_ADMIN_USER: admin
|
|
345
437
|
GF_SECURITY_ADMIN_PASSWORD: \${GF_SECURITY_ADMIN_PASSWORD}
|
|
346
438
|
ports:
|
|
347
|
-
- \${
|
|
439
|
+
- \${GRAFANA_EXTERNAL_PORT:-3150}:3000
|
|
348
440
|
volumes:
|
|
349
441
|
- grafana-data:/var/lib/grafana
|
|
350
442
|
healthcheck:
|
|
351
443
|
test:
|
|
352
444
|
- CMD-SHELL
|
|
353
|
-
-
|
|
445
|
+
- curl -sf http://localhost:3000/api/health || exit 1
|
|
354
446
|
interval: 30s
|
|
355
447
|
timeout: 10s
|
|
356
448
|
retries: 3
|
|
@@ -381,6 +473,16 @@ exports[`compose snapshot tests > full preset (many services) 1`] = `
|
|
|
381
473
|
CLAUDE_AI_SESSION_KEY: \${CLAUDE_AI_SESSION_KEY}
|
|
382
474
|
CLAUDE_WEB_SESSION_KEY: \${CLAUDE_WEB_SESSION_KEY}
|
|
383
475
|
CLAUDE_WEB_COOKIE: \${CLAUDE_WEB_COOKIE}
|
|
476
|
+
OPENAI_API_KEY: \${OPENAI_API_KEY}
|
|
477
|
+
ANTHROPIC_API_KEY: \${ANTHROPIC_API_KEY}
|
|
478
|
+
GOOGLE_API_KEY: \${GOOGLE_API_KEY}
|
|
479
|
+
XAI_API_KEY: \${XAI_API_KEY}
|
|
480
|
+
DEEPSEEK_API_KEY: \${DEEPSEEK_API_KEY}
|
|
481
|
+
GROQ_API_KEY: \${GROQ_API_KEY}
|
|
482
|
+
OPENROUTER_API_KEY: \${OPENROUTER_API_KEY}
|
|
483
|
+
MISTRAL_API_KEY: \${MISTRAL_API_KEY}
|
|
484
|
+
TOGETHER_API_KEY: \${TOGETHER_API_KEY}
|
|
485
|
+
OLLAMA_API_KEY: \${OLLAMA_API_KEY}
|
|
384
486
|
BROWSERLESS_HOST: browserless
|
|
385
487
|
BROWSERLESS_PORT: "3000"
|
|
386
488
|
BROWSERLESS_TOKEN: \${BROWSERLESS_TOKEN}
|
|
@@ -388,7 +490,7 @@ exports[`compose snapshot tests > full preset (many services) 1`] = `
|
|
|
388
490
|
CADDY_HTTP_PORT: "80"
|
|
389
491
|
FFMPEG_SHARED_DIR: /home/node/.openclaw/workspace/media
|
|
390
492
|
GOTIFY_HOST: gotify
|
|
391
|
-
GOTIFY_PORT: "
|
|
493
|
+
GOTIFY_PORT: "80"
|
|
392
494
|
MEILISEARCH_HOST: meilisearch
|
|
393
495
|
MEILISEARCH_PORT: "7700"
|
|
394
496
|
MEILISEARCH_MASTER_KEY: \${MEILISEARCH_MASTER_KEY}
|
|
@@ -460,11 +562,11 @@ exports[`compose snapshot tests > full preset (many services) 1`] = `
|
|
|
460
562
|
TOKEN: \${TOKEN}
|
|
461
563
|
MAX_CONCURRENT_SESSIONS: "5"
|
|
462
564
|
ports:
|
|
463
|
-
- \${
|
|
565
|
+
- \${BROWSERLESS_EXTERNAL_PORT:-3010}:3000
|
|
464
566
|
healthcheck:
|
|
465
567
|
test:
|
|
466
568
|
- CMD-SHELL
|
|
467
|
-
-
|
|
569
|
+
- curl -sf http://localhost:3000/?token=$TOKEN || exit 1
|
|
468
570
|
interval: 30s
|
|
469
571
|
timeout: 10s
|
|
470
572
|
retries: 3
|
|
@@ -475,15 +577,15 @@ exports[`compose snapshot tests > full preset (many services) 1`] = `
|
|
|
475
577
|
caddy:
|
|
476
578
|
image: caddy:2.11.1
|
|
477
579
|
ports:
|
|
478
|
-
- \${
|
|
479
|
-
- \${
|
|
580
|
+
- \${CADDY_EXTERNAL_PORT_0:-80}:80
|
|
581
|
+
- \${CADDY_EXTERNAL_PORT_1:-443}:443
|
|
480
582
|
volumes:
|
|
481
583
|
- caddy-data:/data
|
|
482
584
|
- caddy-config:/config
|
|
483
585
|
healthcheck:
|
|
484
586
|
test:
|
|
485
587
|
- CMD-SHELL
|
|
486
|
-
-
|
|
588
|
+
- curl -sf http://localhost:80 || exit 1
|
|
487
589
|
interval: 30s
|
|
488
590
|
timeout: 10s
|
|
489
591
|
retries: 3
|
|
@@ -496,17 +598,17 @@ exports[`compose snapshot tests > full preset (many services) 1`] = `
|
|
|
496
598
|
environment:
|
|
497
599
|
MEILI_MASTER_KEY: \${MEILI_MASTER_KEY}
|
|
498
600
|
ports:
|
|
499
|
-
- \${
|
|
601
|
+
- \${MEILISEARCH_EXTERNAL_PORT:-7700}:7700
|
|
500
602
|
volumes:
|
|
501
603
|
- meilisearch-data:/meili_data
|
|
502
604
|
healthcheck:
|
|
503
605
|
test:
|
|
504
606
|
- CMD-SHELL
|
|
505
|
-
-
|
|
607
|
+
- curl -sf http://localhost:7700/health || exit 1
|
|
506
608
|
interval: 30s
|
|
507
609
|
timeout: 10s
|
|
508
|
-
retries:
|
|
509
|
-
start_period:
|
|
610
|
+
retries: 5
|
|
611
|
+
start_period: 15s
|
|
510
612
|
restart: unless-stopped
|
|
511
613
|
networks:
|
|
512
614
|
- openclaw-network
|
|
@@ -516,8 +618,8 @@ exports[`compose snapshot tests > full preset (many services) 1`] = `
|
|
|
516
618
|
MINIO_ROOT_USER: minioadmin
|
|
517
619
|
MINIO_ROOT_PASSWORD: \${MINIO_ROOT_PASSWORD}
|
|
518
620
|
ports:
|
|
519
|
-
- \${
|
|
520
|
-
- \${
|
|
621
|
+
- \${MINIO_EXTERNAL_PORT_0:-9000}:9000
|
|
622
|
+
- \${MINIO_EXTERNAL_PORT_1:-9001}:9001
|
|
521
623
|
volumes:
|
|
522
624
|
- minio-data:/data
|
|
523
625
|
healthcheck:
|
|
@@ -538,8 +640,9 @@ exports[`compose snapshot tests > full preset (many services) 1`] = `
|
|
|
538
640
|
POSTGRES_USER: openclaw
|
|
539
641
|
POSTGRES_PASSWORD: \${POSTGRES_PASSWORD}
|
|
540
642
|
POSTGRES_DB: openclaw
|
|
643
|
+
N8N_DB_PASSWORD: \${N8N_DB_PASSWORD}
|
|
541
644
|
ports:
|
|
542
|
-
- \${
|
|
645
|
+
- \${POSTGRESQL_EXTERNAL_PORT:-5432}:5432
|
|
543
646
|
volumes:
|
|
544
647
|
- postgres-data:/var/lib/postgresql/data
|
|
545
648
|
- ./postgres/init-databases.sh:/docker-entrypoint-initdb.d/init-databases.sh:ro
|
|
@@ -559,13 +662,13 @@ exports[`compose snapshot tests > full preset (many services) 1`] = `
|
|
|
559
662
|
environment:
|
|
560
663
|
QDRANT__SERVICE__GRPC_PORT: "6334"
|
|
561
664
|
ports:
|
|
562
|
-
- \${
|
|
665
|
+
- \${QDRANT_EXTERNAL_PORT:-6333}:6333
|
|
563
666
|
volumes:
|
|
564
667
|
- qdrant-data:/qdrant/storage
|
|
565
668
|
healthcheck:
|
|
566
669
|
test:
|
|
567
670
|
- CMD-SHELL
|
|
568
|
-
-
|
|
671
|
+
- bash -c 'echo > /dev/tcp/localhost/6333' || exit 1
|
|
569
672
|
interval: 30s
|
|
570
673
|
timeout: 10s
|
|
571
674
|
retries: 3
|
|
@@ -578,7 +681,7 @@ exports[`compose snapshot tests > full preset (many services) 1`] = `
|
|
|
578
681
|
environment:
|
|
579
682
|
REDIS_PASSWORD: \${REDIS_PASSWORD}
|
|
580
683
|
ports:
|
|
581
|
-
- \${
|
|
684
|
+
- \${REDIS_EXTERNAL_PORT:-6379}:6379
|
|
582
685
|
volumes:
|
|
583
686
|
- redis-data:/data
|
|
584
687
|
healthcheck:
|
|
@@ -594,7 +697,7 @@ exports[`compose snapshot tests > full preset (many services) 1`] = `
|
|
|
594
697
|
searxng:
|
|
595
698
|
image: searxng/searxng:2026.2.23-4964d664f
|
|
596
699
|
ports:
|
|
597
|
-
- \${
|
|
700
|
+
- \${SEARXNG_EXTERNAL_PORT:-8080}:8080
|
|
598
701
|
volumes:
|
|
599
702
|
- searxng-data:/etc/searxng
|
|
600
703
|
healthcheck:
|
|
@@ -623,7 +726,7 @@ exports[`compose snapshot tests > full preset (many services) 1`] = `
|
|
|
623
726
|
N8N_PORT: "5678"
|
|
624
727
|
WEBHOOK_URL: http://n8n:5678/
|
|
625
728
|
ports:
|
|
626
|
-
- \${
|
|
729
|
+
- \${N8N_EXTERNAL_PORT:-5678}:5678
|
|
627
730
|
volumes:
|
|
628
731
|
- n8n-data:/home/node/.n8n
|
|
629
732
|
healthcheck:
|
|
@@ -637,19 +740,70 @@ exports[`compose snapshot tests > full preset (many services) 1`] = `
|
|
|
637
740
|
restart: unless-stopped
|
|
638
741
|
networks:
|
|
639
742
|
- openclaw-network
|
|
743
|
+
depends_on:
|
|
744
|
+
postgres-setup:
|
|
745
|
+
condition: service_completed_successfully
|
|
746
|
+
postgres-setup:
|
|
747
|
+
image: postgres:17-alpine
|
|
640
748
|
depends_on:
|
|
641
749
|
postgresql:
|
|
642
750
|
condition: service_healthy
|
|
751
|
+
environment:
|
|
752
|
+
PGHOST: postgresql
|
|
753
|
+
PGUSER: \${POSTGRES_USER:-openclaw}
|
|
754
|
+
PGDATABASE: \${POSTGRES_DB:-openclaw}
|
|
755
|
+
PGPASSWORD: \${POSTGRES_PASSWORD}
|
|
756
|
+
N8N_DB_PASSWORD: \${N8N_DB_PASSWORD}
|
|
757
|
+
entrypoint:
|
|
758
|
+
- /bin/sh
|
|
759
|
+
- -c
|
|
760
|
+
command:
|
|
761
|
+
- >-
|
|
762
|
+
echo '=== PostgreSQL database setup ==='
|
|
763
|
+
|
|
764
|
+
FAILED=0
|
|
765
|
+
|
|
766
|
+
echo "Setting up database 'n8n' with user 'n8n'..."
|
|
767
|
+
|
|
768
|
+
psql -c "SELECT 1 FROM pg_roles WHERE rolname='n8n'" | grep -q 1 || psql -c "CREATE ROLE n8n WITH LOGIN PASSWORD
|
|
769
|
+
'$$N8N_DB_PASSWORD'"
|
|
770
|
+
|
|
771
|
+
psql -c "ALTER ROLE n8n WITH LOGIN PASSWORD '$$N8N_DB_PASSWORD'"
|
|
772
|
+
|
|
773
|
+
psql -tc "SELECT 1 FROM pg_database WHERE datname='n8n'" | grep -q 1 || psql -c "CREATE DATABASE n8n OWNER n8n"
|
|
774
|
+
|
|
775
|
+
psql -c "GRANT ALL PRIVILEGES ON DATABASE n8n TO n8n" || FAILED=1
|
|
776
|
+
|
|
777
|
+
echo " Done: n8n"
|
|
778
|
+
|
|
779
|
+
echo '=== All databases ready ==='
|
|
780
|
+
|
|
781
|
+
exit $$FAILED
|
|
782
|
+
restart: "no"
|
|
783
|
+
networks:
|
|
784
|
+
- openclaw-network
|
|
643
785
|
openclaw-cli:
|
|
644
786
|
image: \${OPENCLAW_IMAGE:-ghcr.io/openclaw/openclaw:latest}
|
|
645
787
|
environment:
|
|
646
788
|
HOME: /home/node
|
|
647
789
|
TERM: xterm-256color
|
|
648
790
|
OPENCLAW_GATEWAY_TOKEN: \${OPENCLAW_GATEWAY_TOKEN}
|
|
791
|
+
OPENCLAW_GATEWAY_HOST: openclaw-gateway
|
|
792
|
+
OPENCLAW_GATEWAY_PORT: "18789"
|
|
649
793
|
BROWSER: echo
|
|
650
794
|
CLAUDE_AI_SESSION_KEY: \${CLAUDE_AI_SESSION_KEY}
|
|
651
795
|
CLAUDE_WEB_SESSION_KEY: \${CLAUDE_WEB_SESSION_KEY}
|
|
652
796
|
CLAUDE_WEB_COOKIE: \${CLAUDE_WEB_COOKIE}
|
|
797
|
+
OPENAI_API_KEY: \${OPENAI_API_KEY}
|
|
798
|
+
ANTHROPIC_API_KEY: \${ANTHROPIC_API_KEY}
|
|
799
|
+
GOOGLE_API_KEY: \${GOOGLE_API_KEY}
|
|
800
|
+
XAI_API_KEY: \${XAI_API_KEY}
|
|
801
|
+
DEEPSEEK_API_KEY: \${DEEPSEEK_API_KEY}
|
|
802
|
+
GROQ_API_KEY: \${GROQ_API_KEY}
|
|
803
|
+
OPENROUTER_API_KEY: \${OPENROUTER_API_KEY}
|
|
804
|
+
MISTRAL_API_KEY: \${MISTRAL_API_KEY}
|
|
805
|
+
TOGETHER_API_KEY: \${TOGETHER_API_KEY}
|
|
806
|
+
OLLAMA_API_KEY: \${OLLAMA_API_KEY}
|
|
653
807
|
volumes:
|
|
654
808
|
- \${OPENCLAW_CONFIG_DIR:-./openclaw/config}:/home/node/.openclaw
|
|
655
809
|
- \${OPENCLAW_WORKSPACE_DIR:-./openclaw/workspace}:/home/node/.openclaw/workspace
|
|
@@ -661,6 +815,10 @@ exports[`compose snapshot tests > full preset (many services) 1`] = `
|
|
|
661
815
|
entrypoint:
|
|
662
816
|
- node
|
|
663
817
|
- dist/index.js
|
|
818
|
+
restart: no
|
|
819
|
+
depends_on:
|
|
820
|
+
openclaw-gateway:
|
|
821
|
+
condition: service_started
|
|
664
822
|
volumes:
|
|
665
823
|
caddy-config:
|
|
666
824
|
caddy-data:
|
|
@@ -694,6 +852,16 @@ exports[`compose snapshot tests > minimal preset (redis only) 1`] = `
|
|
|
694
852
|
CLAUDE_AI_SESSION_KEY: \${CLAUDE_AI_SESSION_KEY}
|
|
695
853
|
CLAUDE_WEB_SESSION_KEY: \${CLAUDE_WEB_SESSION_KEY}
|
|
696
854
|
CLAUDE_WEB_COOKIE: \${CLAUDE_WEB_COOKIE}
|
|
855
|
+
OPENAI_API_KEY: \${OPENAI_API_KEY}
|
|
856
|
+
ANTHROPIC_API_KEY: \${ANTHROPIC_API_KEY}
|
|
857
|
+
GOOGLE_API_KEY: \${GOOGLE_API_KEY}
|
|
858
|
+
XAI_API_KEY: \${XAI_API_KEY}
|
|
859
|
+
DEEPSEEK_API_KEY: \${DEEPSEEK_API_KEY}
|
|
860
|
+
GROQ_API_KEY: \${GROQ_API_KEY}
|
|
861
|
+
OPENROUTER_API_KEY: \${OPENROUTER_API_KEY}
|
|
862
|
+
MISTRAL_API_KEY: \${MISTRAL_API_KEY}
|
|
863
|
+
TOGETHER_API_KEY: \${TOGETHER_API_KEY}
|
|
864
|
+
OLLAMA_API_KEY: \${OLLAMA_API_KEY}
|
|
697
865
|
REDIS_HOST: redis
|
|
698
866
|
REDIS_PORT: "6379"
|
|
699
867
|
REDIS_PASSWORD: \${REDIS_PASSWORD}
|
|
@@ -723,7 +891,7 @@ exports[`compose snapshot tests > minimal preset (redis only) 1`] = `
|
|
|
723
891
|
environment:
|
|
724
892
|
REDIS_PASSWORD: \${REDIS_PASSWORD}
|
|
725
893
|
ports:
|
|
726
|
-
- \${
|
|
894
|
+
- \${REDIS_EXTERNAL_PORT:-6379}:6379
|
|
727
895
|
volumes:
|
|
728
896
|
- redis-data:/data
|
|
729
897
|
healthcheck:
|
|
@@ -742,10 +910,22 @@ exports[`compose snapshot tests > minimal preset (redis only) 1`] = `
|
|
|
742
910
|
HOME: /home/node
|
|
743
911
|
TERM: xterm-256color
|
|
744
912
|
OPENCLAW_GATEWAY_TOKEN: \${OPENCLAW_GATEWAY_TOKEN}
|
|
913
|
+
OPENCLAW_GATEWAY_HOST: openclaw-gateway
|
|
914
|
+
OPENCLAW_GATEWAY_PORT: "18789"
|
|
745
915
|
BROWSER: echo
|
|
746
916
|
CLAUDE_AI_SESSION_KEY: \${CLAUDE_AI_SESSION_KEY}
|
|
747
917
|
CLAUDE_WEB_SESSION_KEY: \${CLAUDE_WEB_SESSION_KEY}
|
|
748
918
|
CLAUDE_WEB_COOKIE: \${CLAUDE_WEB_COOKIE}
|
|
919
|
+
OPENAI_API_KEY: \${OPENAI_API_KEY}
|
|
920
|
+
ANTHROPIC_API_KEY: \${ANTHROPIC_API_KEY}
|
|
921
|
+
GOOGLE_API_KEY: \${GOOGLE_API_KEY}
|
|
922
|
+
XAI_API_KEY: \${XAI_API_KEY}
|
|
923
|
+
DEEPSEEK_API_KEY: \${DEEPSEEK_API_KEY}
|
|
924
|
+
GROQ_API_KEY: \${GROQ_API_KEY}
|
|
925
|
+
OPENROUTER_API_KEY: \${OPENROUTER_API_KEY}
|
|
926
|
+
MISTRAL_API_KEY: \${MISTRAL_API_KEY}
|
|
927
|
+
TOGETHER_API_KEY: \${TOGETHER_API_KEY}
|
|
928
|
+
OLLAMA_API_KEY: \${OLLAMA_API_KEY}
|
|
749
929
|
volumes:
|
|
750
930
|
- \${OPENCLAW_CONFIG_DIR:-./openclaw/config}:/home/node/.openclaw
|
|
751
931
|
- \${OPENCLAW_WORKSPACE_DIR:-./openclaw/workspace}:/home/node/.openclaw/workspace
|
|
@@ -757,6 +937,10 @@ exports[`compose snapshot tests > minimal preset (redis only) 1`] = `
|
|
|
757
937
|
entrypoint:
|
|
758
938
|
- node
|
|
759
939
|
- dist/index.js
|
|
940
|
+
restart: no
|
|
941
|
+
depends_on:
|
|
942
|
+
openclaw-gateway:
|
|
943
|
+
condition: service_started
|
|
760
944
|
volumes:
|
|
761
945
|
redis-data:
|
|
762
946
|
networks:
|
|
@@ -776,6 +960,16 @@ exports[`compose snapshot tests > researcher preset (qdrant + searxng + browserl
|
|
|
776
960
|
CLAUDE_AI_SESSION_KEY: \${CLAUDE_AI_SESSION_KEY}
|
|
777
961
|
CLAUDE_WEB_SESSION_KEY: \${CLAUDE_WEB_SESSION_KEY}
|
|
778
962
|
CLAUDE_WEB_COOKIE: \${CLAUDE_WEB_COOKIE}
|
|
963
|
+
OPENAI_API_KEY: \${OPENAI_API_KEY}
|
|
964
|
+
ANTHROPIC_API_KEY: \${ANTHROPIC_API_KEY}
|
|
965
|
+
GOOGLE_API_KEY: \${GOOGLE_API_KEY}
|
|
966
|
+
XAI_API_KEY: \${XAI_API_KEY}
|
|
967
|
+
DEEPSEEK_API_KEY: \${DEEPSEEK_API_KEY}
|
|
968
|
+
GROQ_API_KEY: \${GROQ_API_KEY}
|
|
969
|
+
OPENROUTER_API_KEY: \${OPENROUTER_API_KEY}
|
|
970
|
+
MISTRAL_API_KEY: \${MISTRAL_API_KEY}
|
|
971
|
+
TOGETHER_API_KEY: \${TOGETHER_API_KEY}
|
|
972
|
+
OLLAMA_API_KEY: \${OLLAMA_API_KEY}
|
|
779
973
|
BROWSERLESS_HOST: browserless
|
|
780
974
|
BROWSERLESS_PORT: "3000"
|
|
781
975
|
BROWSERLESS_TOKEN: \${BROWSERLESS_TOKEN}
|
|
@@ -819,11 +1013,11 @@ exports[`compose snapshot tests > researcher preset (qdrant + searxng + browserl
|
|
|
819
1013
|
TOKEN: \${TOKEN}
|
|
820
1014
|
MAX_CONCURRENT_SESSIONS: "5"
|
|
821
1015
|
ports:
|
|
822
|
-
- \${
|
|
1016
|
+
- \${BROWSERLESS_EXTERNAL_PORT:-3010}:3000
|
|
823
1017
|
healthcheck:
|
|
824
1018
|
test:
|
|
825
1019
|
- CMD-SHELL
|
|
826
|
-
-
|
|
1020
|
+
- curl -sf http://localhost:3000/?token=$TOKEN || exit 1
|
|
827
1021
|
interval: 30s
|
|
828
1022
|
timeout: 10s
|
|
829
1023
|
retries: 3
|
|
@@ -836,13 +1030,13 @@ exports[`compose snapshot tests > researcher preset (qdrant + searxng + browserl
|
|
|
836
1030
|
environment:
|
|
837
1031
|
QDRANT__SERVICE__GRPC_PORT: "6334"
|
|
838
1032
|
ports:
|
|
839
|
-
- \${
|
|
1033
|
+
- \${QDRANT_EXTERNAL_PORT:-6333}:6333
|
|
840
1034
|
volumes:
|
|
841
1035
|
- qdrant-data:/qdrant/storage
|
|
842
1036
|
healthcheck:
|
|
843
1037
|
test:
|
|
844
1038
|
- CMD-SHELL
|
|
845
|
-
-
|
|
1039
|
+
- bash -c 'echo > /dev/tcp/localhost/6333' || exit 1
|
|
846
1040
|
interval: 30s
|
|
847
1041
|
timeout: 10s
|
|
848
1042
|
retries: 3
|
|
@@ -855,7 +1049,7 @@ exports[`compose snapshot tests > researcher preset (qdrant + searxng + browserl
|
|
|
855
1049
|
environment:
|
|
856
1050
|
REDIS_PASSWORD: \${REDIS_PASSWORD}
|
|
857
1051
|
ports:
|
|
858
|
-
- \${
|
|
1052
|
+
- \${REDIS_EXTERNAL_PORT:-6379}:6379
|
|
859
1053
|
volumes:
|
|
860
1054
|
- redis-data:/data
|
|
861
1055
|
healthcheck:
|
|
@@ -871,7 +1065,7 @@ exports[`compose snapshot tests > researcher preset (qdrant + searxng + browserl
|
|
|
871
1065
|
searxng:
|
|
872
1066
|
image: searxng/searxng:2026.2.23-4964d664f
|
|
873
1067
|
ports:
|
|
874
|
-
- \${
|
|
1068
|
+
- \${SEARXNG_EXTERNAL_PORT:-8080}:8080
|
|
875
1069
|
volumes:
|
|
876
1070
|
- searxng-data:/etc/searxng
|
|
877
1071
|
healthcheck:
|
|
@@ -891,10 +1085,22 @@ exports[`compose snapshot tests > researcher preset (qdrant + searxng + browserl
|
|
|
891
1085
|
HOME: /home/node
|
|
892
1086
|
TERM: xterm-256color
|
|
893
1087
|
OPENCLAW_GATEWAY_TOKEN: \${OPENCLAW_GATEWAY_TOKEN}
|
|
1088
|
+
OPENCLAW_GATEWAY_HOST: openclaw-gateway
|
|
1089
|
+
OPENCLAW_GATEWAY_PORT: "18789"
|
|
894
1090
|
BROWSER: echo
|
|
895
1091
|
CLAUDE_AI_SESSION_KEY: \${CLAUDE_AI_SESSION_KEY}
|
|
896
1092
|
CLAUDE_WEB_SESSION_KEY: \${CLAUDE_WEB_SESSION_KEY}
|
|
897
1093
|
CLAUDE_WEB_COOKIE: \${CLAUDE_WEB_COOKIE}
|
|
1094
|
+
OPENAI_API_KEY: \${OPENAI_API_KEY}
|
|
1095
|
+
ANTHROPIC_API_KEY: \${ANTHROPIC_API_KEY}
|
|
1096
|
+
GOOGLE_API_KEY: \${GOOGLE_API_KEY}
|
|
1097
|
+
XAI_API_KEY: \${XAI_API_KEY}
|
|
1098
|
+
DEEPSEEK_API_KEY: \${DEEPSEEK_API_KEY}
|
|
1099
|
+
GROQ_API_KEY: \${GROQ_API_KEY}
|
|
1100
|
+
OPENROUTER_API_KEY: \${OPENROUTER_API_KEY}
|
|
1101
|
+
MISTRAL_API_KEY: \${MISTRAL_API_KEY}
|
|
1102
|
+
TOGETHER_API_KEY: \${TOGETHER_API_KEY}
|
|
1103
|
+
OLLAMA_API_KEY: \${OLLAMA_API_KEY}
|
|
898
1104
|
volumes:
|
|
899
1105
|
- \${OPENCLAW_CONFIG_DIR:-./openclaw/config}:/home/node/.openclaw
|
|
900
1106
|
- \${OPENCLAW_WORKSPACE_DIR:-./openclaw/workspace}:/home/node/.openclaw/workspace
|
|
@@ -906,6 +1112,10 @@ exports[`compose snapshot tests > researcher preset (qdrant + searxng + browserl
|
|
|
906
1112
|
entrypoint:
|
|
907
1113
|
- node
|
|
908
1114
|
- dist/index.js
|
|
1115
|
+
restart: no
|
|
1116
|
+
depends_on:
|
|
1117
|
+
openclaw-gateway:
|
|
1118
|
+
condition: service_started
|
|
909
1119
|
volumes:
|
|
910
1120
|
qdrant-data:
|
|
911
1121
|
redis-data:
|