feat(openclaw): add Openclaw service with environment variables and health checks
- Implemented Openclaw service in Service.php to manage environment variables and passwords. - Added Openclaw SVG icon for branding. - Created openclaw.yaml for Docker Compose configuration, including necessary environment variables and volume mappings. - Updated service-templates-latest.json and service-templates.json to include Openclaw service details and metadata.
This commit is contained in:
parent
3a00984593
commit
63a1c5c0c7
6 changed files with 227 additions and 10 deletions
|
|
@ -881,7 +881,7 @@ public function extraFields()
|
||||||
],
|
],
|
||||||
]);
|
]);
|
||||||
}
|
}
|
||||||
if ($SERVICE_PASSWORD_LINKDING) {
|
if ($SERVICE_PASSWORD_LINKDING) {
|
||||||
$data = $data->merge([
|
$data = $data->merge([
|
||||||
'Superuser Password' => [
|
'Superuser Password' => [
|
||||||
'key' => data_get($SERVICE_PASSWORD_LINKDING, 'key'),
|
'key' => data_get($SERVICE_PASSWORD_LINKDING, 'key'),
|
||||||
|
|
@ -1118,6 +1118,40 @@ public function extraFields()
|
||||||
}
|
}
|
||||||
$fields->put('Sessy', $data->toArray());
|
$fields->put('Sessy', $data->toArray());
|
||||||
break;
|
break;
|
||||||
|
case $image->contains('coollabsio/openclaw'):
|
||||||
|
$data = collect([]);
|
||||||
|
$username = $this->environment_variables()->where('key', 'AUTH_USERNAME')->first();
|
||||||
|
$password = $this->environment_variables()->where('key', 'SERVICE_PASSWORD_OPENCLAW')->first();
|
||||||
|
$gateway_token = $this->environment_variables()->where('key', 'SERVICE_PASSWORD_64_GATEWAYTOKEN')->first();
|
||||||
|
if ($username) {
|
||||||
|
$data = $data->merge([
|
||||||
|
'Username' => [
|
||||||
|
'key' => data_get($username, 'key'),
|
||||||
|
'value' => data_get($username, 'value'),
|
||||||
|
'readonly' => true,
|
||||||
|
],
|
||||||
|
]);
|
||||||
|
}
|
||||||
|
if ($password) {
|
||||||
|
$data = $data->merge([
|
||||||
|
'Password' => [
|
||||||
|
'key' => data_get($password, 'key'),
|
||||||
|
'value' => data_get($password, 'value'),
|
||||||
|
'isPassword' => true,
|
||||||
|
],
|
||||||
|
]);
|
||||||
|
}
|
||||||
|
if ($gateway_token) {
|
||||||
|
$data = $data->merge([
|
||||||
|
'Gateway Token' => [
|
||||||
|
'key' => data_get($gateway_token, 'key'),
|
||||||
|
'value' => data_get($gateway_token, 'value'),
|
||||||
|
'isPassword' => true,
|
||||||
|
],
|
||||||
|
]);
|
||||||
|
}
|
||||||
|
$fields->put('Openclaw', $data->toArray());
|
||||||
|
break;
|
||||||
default:
|
default:
|
||||||
$data = collect([]);
|
$data = collect([]);
|
||||||
$admin_user = $this->environment_variables()->where('key', 'SERVICE_USER_ADMIN')->first();
|
$admin_user = $this->environment_variables()->where('key', 'SERVICE_USER_ADMIN')->first();
|
||||||
|
|
|
||||||
18
package-lock.json
generated
18
package-lock.json
generated
|
|
@ -949,8 +949,7 @@
|
||||||
"resolved": "https://registry.npmjs.org/@socket.io/component-emitter/-/component-emitter-3.1.2.tgz",
|
"resolved": "https://registry.npmjs.org/@socket.io/component-emitter/-/component-emitter-3.1.2.tgz",
|
||||||
"integrity": "sha512-9BCxFwvbGg/RsZK9tjXd8s4UcwR0MWeFQ1XEKIQVVvAGJyINdrqKMcTRyLoK8Rse1GjzLV9cwjWV1olXRWEXVA==",
|
"integrity": "sha512-9BCxFwvbGg/RsZK9tjXd8s4UcwR0MWeFQ1XEKIQVVvAGJyINdrqKMcTRyLoK8Rse1GjzLV9cwjWV1olXRWEXVA==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"license": "MIT",
|
"license": "MIT"
|
||||||
"peer": true
|
|
||||||
},
|
},
|
||||||
"node_modules/@tailwindcss/forms": {
|
"node_modules/@tailwindcss/forms": {
|
||||||
"version": "0.5.10",
|
"version": "0.5.10",
|
||||||
|
|
@ -1403,7 +1402,8 @@
|
||||||
"version": "5.5.0",
|
"version": "5.5.0",
|
||||||
"resolved": "https://registry.npmjs.org/@xterm/xterm/-/xterm-5.5.0.tgz",
|
"resolved": "https://registry.npmjs.org/@xterm/xterm/-/xterm-5.5.0.tgz",
|
||||||
"integrity": "sha512-hqJHYaQb5OptNunnyAnkHyM8aCjZ1MEIDTQu1iIbbTD/xops91NB5yq1ZK/dC2JDbVWtF23zUtl9JE2NqwT87A==",
|
"integrity": "sha512-hqJHYaQb5OptNunnyAnkHyM8aCjZ1MEIDTQu1iIbbTD/xops91NB5yq1ZK/dC2JDbVWtF23zUtl9JE2NqwT87A==",
|
||||||
"license": "MIT"
|
"license": "MIT",
|
||||||
|
"peer": true
|
||||||
},
|
},
|
||||||
"node_modules/asynckit": {
|
"node_modules/asynckit": {
|
||||||
"version": "0.4.0",
|
"version": "0.4.0",
|
||||||
|
|
@ -1556,7 +1556,6 @@
|
||||||
"integrity": "sha512-+kjUJnZGwzewFDw951CDWcwj35vMNf2fcj7xQWOctq1F2i1jkDdVvdFG9kM/BEChymCH36KgjnW0NsL58JYRxw==",
|
"integrity": "sha512-+kjUJnZGwzewFDw951CDWcwj35vMNf2fcj7xQWOctq1F2i1jkDdVvdFG9kM/BEChymCH36KgjnW0NsL58JYRxw==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"peer": true,
|
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@socket.io/component-emitter": "~3.1.0",
|
"@socket.io/component-emitter": "~3.1.0",
|
||||||
"debug": "~4.4.1",
|
"debug": "~4.4.1",
|
||||||
|
|
@ -1571,7 +1570,6 @@
|
||||||
"integrity": "sha512-HqD3yTBfnBxIrbnM1DoD6Pcq8NECnh8d4As1Qgh0z5Gg3jRRIqijury0CL3ghu/edArpUYiYqQiDUQBIs4np3Q==",
|
"integrity": "sha512-HqD3yTBfnBxIrbnM1DoD6Pcq8NECnh8d4As1Qgh0z5Gg3jRRIqijury0CL3ghu/edArpUYiYqQiDUQBIs4np3Q==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"peer": true,
|
|
||||||
"engines": {
|
"engines": {
|
||||||
"node": ">=10.0.0"
|
"node": ">=10.0.0"
|
||||||
}
|
}
|
||||||
|
|
@ -2332,6 +2330,7 @@
|
||||||
"integrity": "sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==",
|
"integrity": "sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
|
"peer": true,
|
||||||
"engines": {
|
"engines": {
|
||||||
"node": ">=12"
|
"node": ">=12"
|
||||||
},
|
},
|
||||||
|
|
@ -2408,6 +2407,7 @@
|
||||||
"integrity": "sha512-wp3HqIIUc1GRyu1XrP6m2dgyE9MoCsXVsWNlohj0rjSkLf+a0jLvEyVubdg58oMk7bhjBWnFClgp8jfAa6Ak4Q==",
|
"integrity": "sha512-wp3HqIIUc1GRyu1XrP6m2dgyE9MoCsXVsWNlohj0rjSkLf+a0jLvEyVubdg58oMk7bhjBWnFClgp8jfAa6Ak4Q==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
|
"peer": true,
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"tweetnacl": "^1.0.3"
|
"tweetnacl": "^1.0.3"
|
||||||
}
|
}
|
||||||
|
|
@ -2512,7 +2512,6 @@
|
||||||
"integrity": "sha512-bPMmpy/5WWKHea5Y/jYAP6k74A+hvmRCQaJuJB6I/ML5JZq/KfNieUVo/3Mh7SAqn7TyFdIo6wqYHInG1MU1bQ==",
|
"integrity": "sha512-bPMmpy/5WWKHea5Y/jYAP6k74A+hvmRCQaJuJB6I/ML5JZq/KfNieUVo/3Mh7SAqn7TyFdIo6wqYHInG1MU1bQ==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"peer": true,
|
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@socket.io/component-emitter": "~3.1.0",
|
"@socket.io/component-emitter": "~3.1.0",
|
||||||
"debug": "~4.4.1"
|
"debug": "~4.4.1"
|
||||||
|
|
@ -2557,7 +2556,8 @@
|
||||||
"version": "4.1.18",
|
"version": "4.1.18",
|
||||||
"resolved": "https://registry.npmjs.org/tailwindcss/-/tailwindcss-4.1.18.tgz",
|
"resolved": "https://registry.npmjs.org/tailwindcss/-/tailwindcss-4.1.18.tgz",
|
||||||
"integrity": "sha512-4+Z+0yiYyEtUVCScyfHCxOYP06L5Ne+JiHhY2IjR2KWMIWhJOYZKLSGZaP5HkZ8+bY0cxfzwDE5uOmzFXyIwxw==",
|
"integrity": "sha512-4+Z+0yiYyEtUVCScyfHCxOYP06L5Ne+JiHhY2IjR2KWMIWhJOYZKLSGZaP5HkZ8+bY0cxfzwDE5uOmzFXyIwxw==",
|
||||||
"license": "MIT"
|
"license": "MIT",
|
||||||
|
"peer": true
|
||||||
},
|
},
|
||||||
"node_modules/tapable": {
|
"node_modules/tapable": {
|
||||||
"version": "2.3.0",
|
"version": "2.3.0",
|
||||||
|
|
@ -2609,6 +2609,7 @@
|
||||||
"integrity": "sha512-dZwN5L1VlUBewiP6H9s2+B3e3Jg96D0vzN+Ry73sOefebhYr9f94wwkMNN/9ouoU8pV1BqA1d1zGk8928cx0rg==",
|
"integrity": "sha512-dZwN5L1VlUBewiP6H9s2+B3e3Jg96D0vzN+Ry73sOefebhYr9f94wwkMNN/9ouoU8pV1BqA1d1zGk8928cx0rg==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
|
"peer": true,
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"esbuild": "^0.27.0",
|
"esbuild": "^0.27.0",
|
||||||
"fdir": "^6.5.0",
|
"fdir": "^6.5.0",
|
||||||
|
|
@ -2708,6 +2709,7 @@
|
||||||
"integrity": "sha512-SJ/NTccVyAoNUJmkM9KUqPcYlY+u8OVL1X5EW9RIs3ch5H2uERxyyIUI4MRxVCSOiEcupX9xNGde1tL9ZKpimA==",
|
"integrity": "sha512-SJ/NTccVyAoNUJmkM9KUqPcYlY+u8OVL1X5EW9RIs3ch5H2uERxyyIUI4MRxVCSOiEcupX9xNGde1tL9ZKpimA==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
|
"peer": true,
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@vue/compiler-dom": "3.5.26",
|
"@vue/compiler-dom": "3.5.26",
|
||||||
"@vue/compiler-sfc": "3.5.26",
|
"@vue/compiler-sfc": "3.5.26",
|
||||||
|
|
@ -2730,7 +2732,6 @@
|
||||||
"integrity": "sha512-PEIGCY5tSlUt50cqyMXfCzX+oOPqN0vuGqWzbcJ2xvnkzkq46oOpz7dQaTDBdfICb4N14+GARUDw2XV2N4tvzg==",
|
"integrity": "sha512-PEIGCY5tSlUt50cqyMXfCzX+oOPqN0vuGqWzbcJ2xvnkzkq46oOpz7dQaTDBdfICb4N14+GARUDw2XV2N4tvzg==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"peer": true,
|
|
||||||
"engines": {
|
"engines": {
|
||||||
"node": ">=10.0.0"
|
"node": ">=10.0.0"
|
||||||
},
|
},
|
||||||
|
|
@ -2752,7 +2753,6 @@
|
||||||
"resolved": "https://registry.npmjs.org/xmlhttprequest-ssl/-/xmlhttprequest-ssl-2.1.2.tgz",
|
"resolved": "https://registry.npmjs.org/xmlhttprequest-ssl/-/xmlhttprequest-ssl-2.1.2.tgz",
|
||||||
"integrity": "sha512-TEU+nJVUUnA4CYJFLvK5X9AOeH4KvDvhIfm0vV1GaQRtchnG0hgK5p8hw/xjv8cunWYCsiPCSDzObPyhEwq3KQ==",
|
"integrity": "sha512-TEU+nJVUUnA4CYJFLvK5X9AOeH4KvDvhIfm0vV1GaQRtchnG0hgK5p8hw/xjv8cunWYCsiPCSDzObPyhEwq3KQ==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"peer": true,
|
|
||||||
"engines": {
|
"engines": {
|
||||||
"node": ">=0.4.0"
|
"node": ">=0.4.0"
|
||||||
}
|
}
|
||||||
|
|
|
||||||
60
public/svgs/openclaw.svg
Normal file
60
public/svgs/openclaw.svg
Normal file
|
|
@ -0,0 +1,60 @@
|
||||||
|
<svg xmlns="http://www.w3.org/2000/svg" width="64" height="64" viewBox="0 0 16 16" role="img" aria-label="Pixel lobster">
|
||||||
|
<rect width="16" height="16" fill="none"/>
|
||||||
|
<!-- outline -->
|
||||||
|
<g fill="#3a0a0d">
|
||||||
|
<rect x="1" y="5" width="1" height="3"/>
|
||||||
|
<rect x="2" y="4" width="1" height="1"/>
|
||||||
|
<rect x="2" y="8" width="1" height="1"/>
|
||||||
|
<rect x="3" y="3" width="1" height="1"/>
|
||||||
|
<rect x="3" y="9" width="1" height="1"/>
|
||||||
|
<rect x="4" y="2" width="1" height="1"/>
|
||||||
|
<rect x="4" y="10" width="1" height="1"/>
|
||||||
|
<rect x="5" y="2" width="6" height="1"/>
|
||||||
|
<rect x="11" y="2" width="1" height="1"/>
|
||||||
|
<rect x="12" y="3" width="1" height="1"/>
|
||||||
|
<rect x="12" y="9" width="1" height="1"/>
|
||||||
|
<rect x="13" y="4" width="1" height="1"/>
|
||||||
|
<rect x="13" y="8" width="1" height="1"/>
|
||||||
|
<rect x="14" y="5" width="1" height="3"/>
|
||||||
|
<rect x="5" y="11" width="6" height="1"/>
|
||||||
|
<rect x="4" y="12" width="1" height="1"/>
|
||||||
|
<rect x="11" y="12" width="1" height="1"/>
|
||||||
|
<rect x="3" y="13" width="1" height="1"/>
|
||||||
|
<rect x="12" y="13" width="1" height="1"/>
|
||||||
|
<rect x="5" y="14" width="6" height="1"/>
|
||||||
|
</g>
|
||||||
|
|
||||||
|
<!-- body -->
|
||||||
|
<g fill="#ff4f40">
|
||||||
|
<rect x="5" y="3" width="6" height="1"/>
|
||||||
|
<rect x="4" y="4" width="8" height="1"/>
|
||||||
|
<rect x="3" y="5" width="10" height="1"/>
|
||||||
|
<rect x="3" y="6" width="10" height="1"/>
|
||||||
|
<rect x="3" y="7" width="10" height="1"/>
|
||||||
|
<rect x="4" y="8" width="8" height="1"/>
|
||||||
|
<rect x="5" y="9" width="6" height="1"/>
|
||||||
|
<rect x="5" y="12" width="6" height="1"/>
|
||||||
|
<rect x="6" y="13" width="4" height="1"/>
|
||||||
|
</g>
|
||||||
|
|
||||||
|
<!-- claws -->
|
||||||
|
<g fill="#ff775f">
|
||||||
|
<rect x="1" y="6" width="2" height="1"/>
|
||||||
|
<rect x="2" y="5" width="1" height="1"/>
|
||||||
|
<rect x="2" y="7" width="1" height="1"/>
|
||||||
|
<rect x="13" y="6" width="2" height="1"/>
|
||||||
|
<rect x="13" y="5" width="1" height="1"/>
|
||||||
|
<rect x="13" y="7" width="1" height="1"/>
|
||||||
|
</g>
|
||||||
|
|
||||||
|
<!-- eyes -->
|
||||||
|
<g fill="#081016">
|
||||||
|
<rect x="6" y="5" width="1" height="1"/>
|
||||||
|
<rect x="9" y="5" width="1" height="1"/>
|
||||||
|
</g>
|
||||||
|
<g fill="#f5fbff">
|
||||||
|
<rect x="6" y="4" width="1" height="1"/>
|
||||||
|
<rect x="9" y="4" width="1" height="1"/>
|
||||||
|
</g>
|
||||||
|
</svg>
|
||||||
|
|
||||||
|
After Width: | Height: | Size: 2.1 KiB |
87
templates/compose/openclaw.yaml
Normal file
87
templates/compose/openclaw.yaml
Normal file
|
|
@ -0,0 +1,87 @@
|
||||||
|
# documentation: https://github.com/coollabsio/openclaw
|
||||||
|
# slogan: AI-powered coding assistant with multi-provider support and browser automation.
|
||||||
|
# category: ai
|
||||||
|
# tags: ai, coding, assistant, llm, anthropic, openai, automation
|
||||||
|
# logo: svgs/openclaw.svg
|
||||||
|
# port: 8080
|
||||||
|
|
||||||
|
services:
|
||||||
|
openclaw:
|
||||||
|
image: "coollabsio/openclaw:2026.2.6"
|
||||||
|
environment:
|
||||||
|
- SERVICE_FQDN_OPENCLAW_8080
|
||||||
|
- AUTH_USERNAME=$SERVICE_USER_OPENCLAW
|
||||||
|
- AUTH_PASSWORD=$SERVICE_PASSWORD_OPENCLAW
|
||||||
|
- OPENCLAW_GATEWAY_TOKEN=$SERVICE_PASSWORD_64_GATEWAYTOKEN
|
||||||
|
- ANTHROPIC_API_KEY=${ANTHROPIC_API_KEY}
|
||||||
|
- OPENAI_API_KEY=${OPENAI_API_KEY}
|
||||||
|
- OPENROUTER_API_KEY=${OPENROUTER_API_KEY}
|
||||||
|
- GEMINI_API_KEY=${GEMINI_API_KEY}
|
||||||
|
- XAI_API_KEY=${XAI_API_KEY}
|
||||||
|
- GROQ_API_KEY=${GROQ_API_KEY}
|
||||||
|
- MISTRAL_API_KEY=${MISTRAL_API_KEY}
|
||||||
|
- CEREBRAS_API_KEY=${CEREBRAS_API_KEY}
|
||||||
|
- VENICE_API_KEY=${VENICE_API_KEY}
|
||||||
|
- MOONSHOT_API_KEY=${MOONSHOT_API_KEY}
|
||||||
|
- KIMI_API_KEY=${KIMI_API_KEY}
|
||||||
|
- MINIMAX_API_KEY=${MINIMAX_API_KEY}
|
||||||
|
- ZAI_API_KEY=${ZAI_API_KEY}
|
||||||
|
- AI_GATEWAY_API_KEY=${AI_GATEWAY_API_KEY}
|
||||||
|
- OPENCODE_API_KEY=${OPENCODE_API_KEY}
|
||||||
|
- SYNTHETIC_API_KEY=${SYNTHETIC_API_KEY}
|
||||||
|
- COPILOT_GITHUB_TOKEN=${COPILOT_GITHUB_TOKEN}
|
||||||
|
- XIAOMI_API_KEY=${XIAOMI_API_KEY}
|
||||||
|
- OPENCLAW_PRIMARY_MODEL=${OPENCLAW_PRIMARY_MODEL}
|
||||||
|
- DEEPGRAM_API_KEY=${DEEPGRAM_API_KEY}
|
||||||
|
- AWS_ACCESS_KEY_ID=${AWS_ACCESS_KEY_ID}
|
||||||
|
- AWS_SECRET_ACCESS_KEY=${AWS_SECRET_ACCESS_KEY}
|
||||||
|
- AWS_REGION=${AWS_REGION:-us-east-1}
|
||||||
|
- AWS_SESSION_TOKEN=${AWS_SESSION_TOKEN}
|
||||||
|
- BEDROCK_PROVIDER_FILTER=${BEDROCK_PROVIDER_FILTER:-anthropic}
|
||||||
|
- OLLAMA_BASE_URL=${OLLAMA_BASE_URL}
|
||||||
|
- PORT=8080
|
||||||
|
- OPENCLAW_GATEWAY_PORT=18789
|
||||||
|
- OPENCLAW_GATEWAY_BIND=${OPENCLAW_GATEWAY_BIND:-loopback}
|
||||||
|
- OPENCLAW_STATE_DIR=/data/.openclaw
|
||||||
|
- OPENCLAW_WORKSPACE_DIR=/data/workspace
|
||||||
|
- BROWSER_CDP_URL=http://browser:9223
|
||||||
|
- BROWSER_DEFAULT_PROFILE=${BROWSER_DEFAULT_PROFILE:-openclaw}
|
||||||
|
- BROWSER_EVALUATE_ENABLED=${BROWSER_EVALUATE_ENABLED:-true}
|
||||||
|
- BROWSER_SNAPSHOT_MODE=${BROWSER_SNAPSHOT_MODE:-efficient}
|
||||||
|
- BROWSER_REMOTE_TIMEOUT_MS=${BROWSER_REMOTE_TIMEOUT_MS:-1500}
|
||||||
|
- BROWSER_REMOTE_HANDSHAKE_TIMEOUT_MS=${BROWSER_REMOTE_HANDSHAKE_TIMEOUT_MS:-3000}
|
||||||
|
- HOOKS_ENABLED=${HOOKS_ENABLED:-false}
|
||||||
|
- HOOKS_PATH=${HOOKS_PATH:-/hooks}
|
||||||
|
- MOONSHOT_BASE_URL=${MOONSHOT_BASE_URL:-https://api.moonshot.ai/v1}
|
||||||
|
- KIMI_BASE_URL=${KIMI_BASE_URL:-https://api.moonshot.ai/anthropic}
|
||||||
|
- TELEGRAM_BOT_TOKEN=$TELEGRAM_BOT_TOKEN
|
||||||
|
- DISCORD_BOT_TOKEN=$DISCORD_BOT_TOKEN
|
||||||
|
- SLACK_BOT_TOKEN=$SLACK_BOT_TOKEN
|
||||||
|
- SLACK_APP_TOKEN=$SLACK_APP_TOKEN
|
||||||
|
- WHATSAPP_ENABLED=$WHATSAPP_ENABLED
|
||||||
|
- OPENCLAW_DOCKER_APT_PACKAGES=$OPENCLAW_DOCKER_APT_PACKAGES
|
||||||
|
volumes:
|
||||||
|
- "openclaw-data:/data"
|
||||||
|
depends_on:
|
||||||
|
browser:
|
||||||
|
condition: service_healthy
|
||||||
|
healthcheck:
|
||||||
|
test: ["CMD", "curl", "-sf", "http://127.0.0.1:8080/healthz"]
|
||||||
|
interval: 10s
|
||||||
|
timeout: 10s
|
||||||
|
retries: 5
|
||||||
|
browser:
|
||||||
|
image: "coollabsio/openclaw-browser:latest"
|
||||||
|
environment:
|
||||||
|
- PUID=1000
|
||||||
|
- PGID=1000
|
||||||
|
- TZ=Etc/UTC
|
||||||
|
- CHROME_CLI=--remote-debugging-port=9222
|
||||||
|
volumes:
|
||||||
|
- "browser-data:/config"
|
||||||
|
shm_size: 2g
|
||||||
|
healthcheck:
|
||||||
|
test: ["CMD-SHELL", "bash -c ':> /dev/tcp/127.0.0.1/9222' || exit 1"]
|
||||||
|
interval: 5s
|
||||||
|
timeout: 5s
|
||||||
|
retries: 10
|
||||||
|
|
@ -3396,6 +3396,24 @@
|
||||||
"minversion": "0.0.0",
|
"minversion": "0.0.0",
|
||||||
"port": "8080"
|
"port": "8080"
|
||||||
},
|
},
|
||||||
|
"openclaw": {
|
||||||
|
"documentation": "https://github.com/coollabsio/openclaw?utm_source=coolify.io",
|
||||||
|
"slogan": "AI-powered coding assistant with multi-provider support and browser automation.",
|
||||||
|
"compose": "c2VydmljZXM6CiAgb3BlbmNsYXc6CiAgICBpbWFnZTogJ2Nvb2xsYWJzaW8vb3BlbmNsYXc6MjAyNi4yLjYnCiAgICBlbnZpcm9ubWVudDoKICAgICAgLSBTRVJWSUNFX0ZRRE5fT1BFTkNMQVdfODA4MAogICAgICAtIEFVVEhfVVNFUk5BTUU9JFNFUlZJQ0VfVVNFUl9PUEVOQ0xBVwogICAgICAtIEFVVEhfUEFTU1dPUkQ9JFNFUlZJQ0VfUEFTU1dPUkRfT1BFTkNMQVcKICAgICAgLSBPUEVOQ0xBV19HQVRFV0FZX1RPS0VOPSRTRVJWSUNFX1BBU1NXT1JEXzY0X0dBVEVXQVlUT0tFTgogICAgICAtICdBTlRIUk9QSUNfQVBJX0tFWT0ke0FOVEhST1BJQ19BUElfS0VZfScKICAgICAgLSAnT1BFTkFJX0FQSV9LRVk9JHtPUEVOQUlfQVBJX0tFWX0nCiAgICAgIC0gJ09QRU5ST1VURVJfQVBJX0tFWT0ke09QRU5ST1VURVJfQVBJX0tFWX0nCiAgICAgIC0gJ0dFTUlOSV9BUElfS0VZPSR7R0VNSU5JX0FQSV9LRVl9JwogICAgICAtICdYQUlfQVBJX0tFWT0ke1hBSV9BUElfS0VZfScKICAgICAgLSAnR1JPUV9BUElfS0VZPSR7R1JPUV9BUElfS0VZfScKICAgICAgLSAnTUlTVFJBTF9BUElfS0VZPSR7TUlTVFJBTF9BUElfS0VZfScKICAgICAgLSAnQ0VSRUJSQVNfQVBJX0tFWT0ke0NFUkVCUkFTX0FQSV9LRVl9JwogICAgICAtICdWRU5JQ0VfQVBJX0tFWT0ke1ZFTklDRV9BUElfS0VZfScKICAgICAgLSAnTU9PTlNIT1RfQVBJX0tFWT0ke01PT05TSE9UX0FQSV9LRVl9JwogICAgICAtICdLSU1JX0FQSV9LRVk9JHtLSU1JX0FQSV9LRVl9JwogICAgICAtICdNSU5JTUFYX0FQSV9LRVk9JHtNSU5JTUFYX0FQSV9LRVl9JwogICAgICAtICdaQUlfQVBJX0tFWT0ke1pBSV9BUElfS0VZfScKICAgICAgLSAnQUlfR0FURVdBWV9BUElfS0VZPSR7QUlfR0FURVdBWV9BUElfS0VZfScKICAgICAgLSAnT1BFTkNPREVfQVBJX0tFWT0ke09QRU5DT0RFX0FQSV9LRVl9JwogICAgICAtICdTWU5USEVUSUNfQVBJX0tFWT0ke1NZTlRIRVRJQ19BUElfS0VZfScKICAgICAgLSAnQ09QSUxPVF9HSVRIVUJfVE9LRU49JHtDT1BJTE9UX0dJVEhVQl9UT0tFTn0nCiAgICAgIC0gJ1hJQU9NSV9BUElfS0VZPSR7WElBT01JX0FQSV9LRVl9JwogICAgICAtICdPUEVOQ0xBV19QUklNQVJZX01PREVMPSR7T1BFTkNMQVdfUFJJTUFSWV9NT0RFTH0nCiAgICAgIC0gJ0RFRVBHUkFNX0FQSV9LRVk9JHtERUVQR1JBTV9BUElfS0VZfScKICAgICAgLSAnQVdTX0FDQ0VTU19LRVlfSUQ9JHtBV1NfQUNDRVNTX0tFWV9JRH0nCiAgICAgIC0gJ0FXU19TRUNSRVRfQUNDRVNTX0tFWT0ke0FXU19TRUNSRVRfQUNDRVNTX0tFWX0nCiAgICAgIC0gJ0FXU19SRUdJT049JHtBV1NfUkVHSU9OOi11cy1lYXN0LTF9JwogICAgICAtICdBV1NfU0VTU0lPTl9UT0tFTj0ke0FXU19TRVNTSU9OX1RPS0VOfScKICAgICAgLSAnQkVEUk9DS19QUk9WSURFUl9GSUxURVI9JHtCRURST0NLX1BST1ZJREVSX0ZJTFRFUjotYW50aHJvcGljfScKICAgICAgLSAnT0xMQU1BX0JBU0VfVVJMPSR7T0xMQU1BX0JBU0VfVVJMfScKICAgICAgLSBQT1JUPTgwODAKICAgICAgLSBPUEVOQ0xBV19HQVRFV0FZX1BPUlQ9MTg3ODkKICAgICAgLSAnT1BFTkNMQVdfR0FURVdBWV9CSU5EPSR7T1BFTkNMQVdfR0FURVdBWV9CSU5EOi1sb29wYmFja30nCiAgICAgIC0gT1BFTkNMQVdfU1RBVEVfRElSPS9kYXRhLy5vcGVuY2xhdwogICAgICAtIE9QRU5DTEFXX1dPUktTUEFDRV9ESVI9L2RhdGEvd29ya3NwYWNlCiAgICAgIC0gJ0JST1dTRVJfQ0RQX1VSTD1odHRwOi8vYnJvd3Nlcjo5MjIzJwogICAgICAtICdCUk9XU0VSX0RFRkFVTFRfUFJPRklMRT0ke0JST1dTRVJfREVGQVVMVF9QUk9GSUxFOi1vcGVuY2xhd30nCiAgICAgIC0gJ0JST1dTRVJfRVZBTFVBVEVfRU5BQkxFRD0ke0JST1dTRVJfRVZBTFVBVEVfRU5BQkxFRDotdHJ1ZX0nCiAgICAgIC0gJ0JST1dTRVJfU05BUFNIT1RfTU9ERT0ke0JST1dTRVJfU05BUFNIT1RfTU9ERTotZWZmaWNpZW50fScKICAgICAgLSAnQlJPV1NFUl9SRU1PVEVfVElNRU9VVF9NUz0ke0JST1dTRVJfUkVNT1RFX1RJTUVPVVRfTVM6LTE1MDB9JwogICAgICAtICdCUk9XU0VSX1JFTU9URV9IQU5EU0hBS0VfVElNRU9VVF9NUz0ke0JST1dTRVJfUkVNT1RFX0hBTkRTSEFLRV9USU1FT1VUX01TOi0zMDAwfScKICAgICAgLSAnSE9PS1NfRU5BQkxFRD0ke0hPT0tTX0VOQUJMRUQ6LWZhbHNlfScKICAgICAgLSAnSE9PS1NfUEFUSD0ke0hPT0tTX1BBVEg6LS9ob29rc30nCiAgICAgIC0gJ01PT05TSE9UX0JBU0VfVVJMPSR7TU9PTlNIT1RfQkFTRV9VUkw6LWh0dHBzOi8vYXBpLm1vb25zaG90LmFpL3YxfScKICAgICAgLSAnS0lNSV9CQVNFX1VSTD0ke0tJTUlfQkFTRV9VUkw6LWh0dHBzOi8vYXBpLm1vb25zaG90LmFpL2FudGhyb3BpY30nCiAgICAgIC0gVEVMRUdSQU1fQk9UX1RPS0VOPSRURUxFR1JBTV9CT1RfVE9LRU4KICAgICAgLSBESVNDT1JEX0JPVF9UT0tFTj0kRElTQ09SRF9CT1RfVE9LRU4KICAgICAgLSBTTEFDS19CT1RfVE9LRU49JFNMQUNLX0JPVF9UT0tFTgogICAgICAtIFNMQUNLX0FQUF9UT0tFTj0kU0xBQ0tfQVBQX1RPS0VOCiAgICAgIC0gV0hBVFNBUFBfRU5BQkxFRD0kV0hBVFNBUFBfRU5BQkxFRAogICAgICAtIE9QRU5DTEFXX0RPQ0tFUl9BUFRfUEFDS0FHRVM9JE9QRU5DTEFXX0RPQ0tFUl9BUFRfUEFDS0FHRVMKICAgIHZvbHVtZXM6CiAgICAgIC0gJ29wZW5jbGF3LWRhdGE6L2RhdGEnCiAgICBkZXBlbmRzX29uOgogICAgICBicm93c2VyOgogICAgICAgIGNvbmRpdGlvbjogc2VydmljZV9oZWFsdGh5CiAgICBoZWFsdGhjaGVjazoKICAgICAgdGVzdDoKICAgICAgICAtIENNRAogICAgICAgIC0gY3VybAogICAgICAgIC0gJy1zZicKICAgICAgICAtICdodHRwOi8vMTI3LjAuMC4xOjgwODAvaGVhbHRoeicKICAgICAgaW50ZXJ2YWw6IDEwcwogICAgICB0aW1lb3V0OiAxMHMKICAgICAgcmV0cmllczogNQogIGJyb3dzZXI6CiAgICBpbWFnZTogJ2Nvb2xsYWJzaW8vb3BlbmNsYXctYnJvd3NlcjpsYXRlc3QnCiAgICBlbnZpcm9ubWVudDoKICAgICAgLSBQVUlEPTEwMDAKICAgICAgLSBQR0lEPTEwMDAKICAgICAgLSBUWj1FdGMvVVRDCiAgICAgIC0gQ0hST01FX0NMST0tLXJlbW90ZS1kZWJ1Z2dpbmctcG9ydD05MjIyCiAgICB2b2x1bWVzOgogICAgICAtICdicm93c2VyLWRhdGE6L2NvbmZpZycKICAgIHNobV9zaXplOiAyZwogICAgaGVhbHRoY2hlY2s6CiAgICAgIHRlc3Q6CiAgICAgICAgLSBDTUQtU0hFTEwKICAgICAgICAtICJiYXNoIC1jICc6PiAvZGV2L3RjcC8xMjcuMC4wLjEvOTIyMicgfHwgZXhpdCAxIgogICAgICBpbnRlcnZhbDogNXMKICAgICAgdGltZW91dDogNXMKICAgICAgcmV0cmllczogMTAK",
|
||||||
|
"tags": [
|
||||||
|
"ai",
|
||||||
|
"coding",
|
||||||
|
"assistant",
|
||||||
|
"llm",
|
||||||
|
"anthropic",
|
||||||
|
"openai",
|
||||||
|
"automation"
|
||||||
|
],
|
||||||
|
"category": "ai",
|
||||||
|
"logo": "svgs/openclaw.svg",
|
||||||
|
"minversion": "0.0.0",
|
||||||
|
"port": "8080"
|
||||||
|
},
|
||||||
"openpanel": {
|
"openpanel": {
|
||||||
"documentation": "https://openpanel.dev/docs?utm_source=coolify.io",
|
"documentation": "https://openpanel.dev/docs?utm_source=coolify.io",
|
||||||
"slogan": "Open source alternative to Mixpanel and Plausible for product analytics",
|
"slogan": "Open source alternative to Mixpanel and Plausible for product analytics",
|
||||||
|
|
|
||||||
|
|
@ -3396,6 +3396,24 @@
|
||||||
"minversion": "0.0.0",
|
"minversion": "0.0.0",
|
||||||
"port": "8080"
|
"port": "8080"
|
||||||
},
|
},
|
||||||
|
"openclaw": {
|
||||||
|
"documentation": "https://github.com/coollabsio/openclaw?utm_source=coolify.io",
|
||||||
|
"slogan": "AI-powered coding assistant with multi-provider support and browser automation.",
|
||||||
|
"compose": "c2VydmljZXM6CiAgb3BlbmNsYXc6CiAgICBpbWFnZTogJ2Nvb2xsYWJzaW8vb3BlbmNsYXc6MjAyNi4yLjYnCiAgICBlbnZpcm9ubWVudDoKICAgICAgLSBTRVJWSUNFX0ZRRE5fT1BFTkNMQVdfODA4MAogICAgICAtIEFVVEhfVVNFUk5BTUU9JFNFUlZJQ0VfVVNFUl9PUEVOQ0xBVwogICAgICAtIEFVVEhfUEFTU1dPUkQ9JFNFUlZJQ0VfUEFTU1dPUkRfT1BFTkNMQVcKICAgICAgLSBPUEVOQ0xBV19HQVRFV0FZX1RPS0VOPSRTRVJWSUNFX1BBU1NXT1JEXzY0X0dBVEVXQVlUT0tFTgogICAgICAtICdBTlRIUk9QSUNfQVBJX0tFWT0ke0FOVEhST1BJQ19BUElfS0VZfScKICAgICAgLSAnT1BFTkFJX0FQSV9LRVk9JHtPUEVOQUlfQVBJX0tFWX0nCiAgICAgIC0gJ09QRU5ST1VURVJfQVBJX0tFWT0ke09QRU5ST1VURVJfQVBJX0tFWX0nCiAgICAgIC0gJ0dFTUlOSV9BUElfS0VZPSR7R0VNSU5JX0FQSV9LRVl9JwogICAgICAtICdYQUlfQVBJX0tFWT0ke1hBSV9BUElfS0VZfScKICAgICAgLSAnR1JPUV9BUElfS0VZPSR7R1JPUV9BUElfS0VZfScKICAgICAgLSAnTUlTVFJBTF9BUElfS0VZPSR7TUlTVFJBTF9BUElfS0VZfScKICAgICAgLSAnQ0VSRUJSQVNfQVBJX0tFWT0ke0NFUkVCUkFTX0FQSV9LRVl9JwogICAgICAtICdWRU5JQ0VfQVBJX0tFWT0ke1ZFTklDRV9BUElfS0VZfScKICAgICAgLSAnTU9PTlNIT1RfQVBJX0tFWT0ke01PT05TSE9UX0FQSV9LRVl9JwogICAgICAtICdLSU1JX0FQSV9LRVk9JHtLSU1JX0FQSV9LRVl9JwogICAgICAtICdNSU5JTUFYX0FQSV9LRVk9JHtNSU5JTUFYX0FQSV9LRVl9JwogICAgICAtICdaQUlfQVBJX0tFWT0ke1pBSV9BUElfS0VZfScKICAgICAgLSAnQUlfR0FURVdBWV9BUElfS0VZPSR7QUlfR0FURVdBWV9BUElfS0VZfScKICAgICAgLSAnT1BFTkNPREVfQVBJX0tFWT0ke09QRU5DT0RFX0FQSV9LRVl9JwogICAgICAtICdTWU5USEVUSUNfQVBJX0tFWT0ke1NZTlRIRVRJQ19BUElfS0VZfScKICAgICAgLSAnQ09QSUxPVF9HSVRIVUJfVE9LRU49JHtDT1BJTE9UX0dJVEhVQl9UT0tFTn0nCiAgICAgIC0gJ1hJQU9NSV9BUElfS0VZPSR7WElBT01JX0FQSV9LRVl9JwogICAgICAtICdPUEVOQ0xBV19QUklNQVJZX01PREVMPSR7T1BFTkNMQVdfUFJJTUFSWV9NT0RFTH0nCiAgICAgIC0gJ0RFRVBHUkFNX0FQSV9LRVk9JHtERUVQR1JBTV9BUElfS0VZfScKICAgICAgLSAnQVdTX0FDQ0VTU19LRVlfSUQ9JHtBV1NfQUNDRVNTX0tFWV9JRH0nCiAgICAgIC0gJ0FXU19TRUNSRVRfQUNDRVNTX0tFWT0ke0FXU19TRUNSRVRfQUNDRVNTX0tFWX0nCiAgICAgIC0gJ0FXU19SRUdJT049JHtBV1NfUkVHSU9OOi11cy1lYXN0LTF9JwogICAgICAtICdBV1NfU0VTU0lPTl9UT0tFTj0ke0FXU19TRVNTSU9OX1RPS0VOfScKICAgICAgLSAnQkVEUk9DS19QUk9WSURFUl9GSUxURVI9JHtCRURST0NLX1BST1ZJREVSX0ZJTFRFUjotYW50aHJvcGljfScKICAgICAgLSAnT0xMQU1BX0JBU0VfVVJMPSR7T0xMQU1BX0JBU0VfVVJMfScKICAgICAgLSBQT1JUPTgwODAKICAgICAgLSBPUEVOQ0xBV19HQVRFV0FZX1BPUlQ9MTg3ODkKICAgICAgLSAnT1BFTkNMQVdfR0FURVdBWV9CSU5EPSR7T1BFTkNMQVdfR0FURVdBWV9CSU5EOi1sb29wYmFja30nCiAgICAgIC0gT1BFTkNMQVdfU1RBVEVfRElSPS9kYXRhLy5vcGVuY2xhdwogICAgICAtIE9QRU5DTEFXX1dPUktTUEFDRV9ESVI9L2RhdGEvd29ya3NwYWNlCiAgICAgIC0gJ0JST1dTRVJfQ0RQX1VSTD1odHRwOi8vYnJvd3Nlcjo5MjIzJwogICAgICAtICdCUk9XU0VSX0RFRkFVTFRfUFJPRklMRT0ke0JST1dTRVJfREVGQVVMVF9QUk9GSUxFOi1vcGVuY2xhd30nCiAgICAgIC0gJ0JST1dTRVJfRVZBTFVBVEVfRU5BQkxFRD0ke0JST1dTRVJfRVZBTFVBVEVfRU5BQkxFRDotdHJ1ZX0nCiAgICAgIC0gJ0JST1dTRVJfU05BUFNIT1RfTU9ERT0ke0JST1dTRVJfU05BUFNIT1RfTU9ERTotZWZmaWNpZW50fScKICAgICAgLSAnQlJPV1NFUl9SRU1PVEVfVElNRU9VVF9NUz0ke0JST1dTRVJfUkVNT1RFX1RJTUVPVVRfTVM6LTE1MDB9JwogICAgICAtICdCUk9XU0VSX1JFTU9URV9IQU5EU0hBS0VfVElNRU9VVF9NUz0ke0JST1dTRVJfUkVNT1RFX0hBTkRTSEFLRV9USU1FT1VUX01TOi0zMDAwfScKICAgICAgLSAnSE9PS1NfRU5BQkxFRD0ke0hPT0tTX0VOQUJMRUQ6LWZhbHNlfScKICAgICAgLSAnSE9PS1NfUEFUSD0ke0hPT0tTX1BBVEg6LS9ob29rc30nCiAgICAgIC0gJ01PT05TSE9UX0JBU0VfVVJMPSR7TU9PTlNIT1RfQkFTRV9VUkw6LWh0dHBzOi8vYXBpLm1vb25zaG90LmFpL3YxfScKICAgICAgLSAnS0lNSV9CQVNFX1VSTD0ke0tJTUlfQkFTRV9VUkw6LWh0dHBzOi8vYXBpLm1vb25zaG90LmFpL2FudGhyb3BpY30nCiAgICAgIC0gVEVMRUdSQU1fQk9UX1RPS0VOPSRURUxFR1JBTV9CT1RfVE9LRU4KICAgICAgLSBESVNDT1JEX0JPVF9UT0tFTj0kRElTQ09SRF9CT1RfVE9LRU4KICAgICAgLSBTTEFDS19CT1RfVE9LRU49JFNMQUNLX0JPVF9UT0tFTgogICAgICAtIFNMQUNLX0FQUF9UT0tFTj0kU0xBQ0tfQVBQX1RPS0VOCiAgICAgIC0gV0hBVFNBUFBfRU5BQkxFRD0kV0hBVFNBUFBfRU5BQkxFRAogICAgICAtIE9QRU5DTEFXX0RPQ0tFUl9BUFRfUEFDS0FHRVM9JE9QRU5DTEFXX0RPQ0tFUl9BUFRfUEFDS0FHRVMKICAgIHZvbHVtZXM6CiAgICAgIC0gJ29wZW5jbGF3LWRhdGE6L2RhdGEnCiAgICBkZXBlbmRzX29uOgogICAgICBicm93c2VyOgogICAgICAgIGNvbmRpdGlvbjogc2VydmljZV9oZWFsdGh5CiAgICBoZWFsdGhjaGVjazoKICAgICAgdGVzdDoKICAgICAgICAtIENNRAogICAgICAgIC0gY3VybAogICAgICAgIC0gJy1zZicKICAgICAgICAtICdodHRwOi8vMTI3LjAuMC4xOjgwODAvaGVhbHRoeicKICAgICAgaW50ZXJ2YWw6IDEwcwogICAgICB0aW1lb3V0OiAxMHMKICAgICAgcmV0cmllczogNQogIGJyb3dzZXI6CiAgICBpbWFnZTogJ2Nvb2xsYWJzaW8vb3BlbmNsYXctYnJvd3NlcjpsYXRlc3QnCiAgICBlbnZpcm9ubWVudDoKICAgICAgLSBQVUlEPTEwMDAKICAgICAgLSBQR0lEPTEwMDAKICAgICAgLSBUWj1FdGMvVVRDCiAgICAgIC0gQ0hST01FX0NMST0tLXJlbW90ZS1kZWJ1Z2dpbmctcG9ydD05MjIyCiAgICB2b2x1bWVzOgogICAgICAtICdicm93c2VyLWRhdGE6L2NvbmZpZycKICAgIHNobV9zaXplOiAyZwogICAgaGVhbHRoY2hlY2s6CiAgICAgIHRlc3Q6CiAgICAgICAgLSBDTUQtU0hFTEwKICAgICAgICAtICJiYXNoIC1jICc6PiAvZGV2L3RjcC8xMjcuMC4wLjEvOTIyMicgfHwgZXhpdCAxIgogICAgICBpbnRlcnZhbDogNXMKICAgICAgdGltZW91dDogNXMKICAgICAgcmV0cmllczogMTAK",
|
||||||
|
"tags": [
|
||||||
|
"ai",
|
||||||
|
"coding",
|
||||||
|
"assistant",
|
||||||
|
"llm",
|
||||||
|
"anthropic",
|
||||||
|
"openai",
|
||||||
|
"automation"
|
||||||
|
],
|
||||||
|
"category": "ai",
|
||||||
|
"logo": "svgs/openclaw.svg",
|
||||||
|
"minversion": "0.0.0",
|
||||||
|
"port": "8080"
|
||||||
|
},
|
||||||
"openpanel": {
|
"openpanel": {
|
||||||
"documentation": "https://openpanel.dev/docs?utm_source=coolify.io",
|
"documentation": "https://openpanel.dev/docs?utm_source=coolify.io",
|
||||||
"slogan": "Open source alternative to Mixpanel and Plausible for product analytics",
|
"slogan": "Open source alternative to Mixpanel and Plausible for product analytics",
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue