Instalação OpenClaw - base hosteg - ATUALIZADO E ESTAVEL
version: "3.8"
services:
--------------------------- OPENCLAW GATEWAY ---------------------------
clawdbot_gateway:
image: ramel/openclaw:latest
environment:
- HOME=/root
- TERM=xterm-256color
- NODE_ENV=production
# 🔐 TOKEN DO GATEWAY
- CLAWDBOT_GATEWAY_TOKEN=123456 # sua rede aqui
# 🔐 ZAI API KEY
- ZAI_API_KEY=3e5f6065fb0b4ab199150c5af55c8743.231231321321313 # Sua Key aqui
- CLAWDBOT_GATEWAY_MODE=local
- CLAWDBOT_GATEWAY_PORT=18789
- TZ=America/Sao_Paulo
volumes:
- clawdbot_config:/root/.clawdbot
- clawdbot_workspace:/root/clawd
- /var/run/docker.sock:/var/run/docker.sock
dns:
- 8.8.8.8
- 8.8.4.4
networks:
- ramelnet # Sua rede aqui
ports:
- "18789:18789"
user: root
command:
- /bin/sh
- -lc
- |
set -e
mkdir -p /root/.clawdbot
cat > /root/.clawdbot/clawdbot.json <<EOF
{
"gateway": {
"mode": "local",
"bind": "lan",
"port": 18789,
"trustedProxies": ["10.0.0.0/8", "172.16.0.0/12", "0.0.0.0/0"],
"auth": { "mode": "token" },
"controlUi": {
"dangerouslyDisableDeviceAuth": true
}
},
"agents": {
"defaults": {
"model": {
"primary": "zai/glm-4.7"
},
"workspace": "/root/clawd"
}
}
}
EOF
export HOME=/root
node dist/index.js gateway run --port 18789 --force
deploy:
mode: replicated
replicas: 1
placement:
constraints:
- node.role == manager
resources:
limits:
cpus: "2"
memory: 2048M
labels:
- traefik.enable=true
- traefik.http.routers.clawdbot.rule=Host(`molt.site.com`) # seu site aqui
- traefik.http.routers.clawdbot.entrypoints=websecure
- traefik.http.routers.clawdbot.tls.certresolver=letsencryptresolver
- traefik.http.services.clawdbot.loadbalancer.server.port=18789
restart_policy:
condition: on-failure
delay: 5s
max_attempts: 3
healthcheck:
test: ["CMD", "node", "dist/index.js", "health", "--json"]
interval: 30s
timeout: 10s
retries: 3
start_period: 60s
--------------------------- OPENCLAW CLI (OPCIONAL) ---------------------------
clawdbot_cli:
image: ramel/openclaw:latest
environment:
- HOME=/root
- TERM=xterm-256color
- TZ=America/Sao_Paulo
- ZAI_API_KEY=3e5f6065fb0b4ab199150c5af55c8743.h8745644161351 # sua key aqui
volumes:
- clawdbot_config:/root/.clawdbot
- clawdbot_workspace:/root/clawd
networks:
- ramelnet
stdin_open: true
tty: true
entrypoint: ["node", "dist/index.js"]
deploy:
mode: replicated
replicas: 0
volumes:
clawdbot_config:
clawdbot_workspace:
networks:
ramelnet: # sua rede aqui
external: true
name: ramelnet # sua rede aqui
version: "3.8"
services:
# --------------------------- CLAWDBOT GATEWAY ---------------------------
clawdbot_gateway:
image: node:22-bookworm
user: root
environment:
HOME: /root
TERM: xterm-256color
NODE_ENV: production
TZ: America/Sua_Regiao
CLAWDBOT_GATEWAY_MODE: local
CLAWDBOT_GATEWAY_BIND: 0.0.0.0
CLAWDBOT_GATEWAY_PORT: 18789
CLAWDBOT_GATEWAY_TOKEN: SEU_TOKEN_AQUI
ZAI_API_KEY: SUA_APIKEY_AQUI
volumes:
- clawdbot_config:/root/.clawdbot
- clawdbot_workspace:/root/clawd
- clawdbot_source:/app
- /var/run/docker.sock:/var/run/docker.sock
networks:
- SUA_REDE_AQUI
ports:
- "18789:18789"
working_dir: /app
command:
- /bin/sh
- -lc
- |
set -e
echo "🔹 Atualizando ou clonando repositório..."
if [ ! -d ".git" ]; then
git clone https://github.com/openclaw/openclaw.git .
else
git pull
fi
echo "📦 Instalando dependências..."
corepack enable
corepack prepare pnpm@10.23.0 --activate
pnpm set config ignore-scripts false
pnpm install --frozen-lockfile=false
echo "🏗️ Build do OpenClaw..."
export NODE_OPTIONS="--max-old-space-size=4096"
pnpm run build
echo "📦 Construindo UI..."
pnpm ui:build
echo "⚙️ Criando configuração..."
mkdir -p /root/.clawdbot
cat > /root/.clawdbot/clawdbot.json << 'EOF'
{
"gateway": {
"mode": "local",
"bind": "lan",
"trustedProxies": [
"10.0.0.0/8",
"172.16.0.0/12",
"192.168.0.0/16"
],
"auth": { "mode": "token" },
"controlUi": {
"dangerouslyDisableDeviceAuth": true
}
},
"agents": {
"defaults": {
"model": { "primary": "SEU_MODELO_AQUI" },
"workspace": "/root/clawd"
}
},
"channels": {
"telegram": {},
"whatsapp": {}
}
}
EOF
echo "🚀 Iniciando Gateway..."
export HOME=/root
exec node dist/index.js gateway run --port 18789 --force
deploy:
replicas: 1
restart_policy:
condition: any
labels:
- traefik.enable=true
- traefik.http.routers.clawdbot.rule=Host(`SEU_DOMINIO_AQUI`)
- traefik.http.routers.clawdbot.entrypoints=websecure
- traefik.http.routers.clawdbot.tls.certresolver=SEU_CERTRESOLVER_AQUI
- traefik.http.services.clawdbot.loadbalancer.server.port=18789
healthcheck:
test: ["CMD", "node", "dist/index.js", "health", "--json"]
interval: 30s
timeout: 10s
retries: 3
start_period: 60s
# --------------------------- CLAWDBOT CLI (opcional) ---------------------------
clawdbot_cli:
image: node:22-bookworm
user: root
environment:
HOME: /root
TERM: xterm-256color
TZ: America/Sua_Regiao
ZAI_API_KEY: SUA_APIKEY_AQUI
volumes:
- clawdbot_config:/root/.clawdbot
- clawdbot_workspace:/root/clawd
- clawdbot_source:/app
- /var/run/docker.sock:/var/run/docker.sock
networks:
- SUA_REDE_AQUI
working_dir: /app
stdin_open: true
tty: true
command:
- /bin/sh
- -lc
- |
set -e
echo "🔹 Atualizando ou clonando repositório..."
if [ ! -d ".git" ]; then
git clone https://github.com/openclaw/openclaw.git .
else
git pull
fi
echo "📦 Instalando dependências..."
corepack enable
corepack prepare pnpm@10.23.0 --activate
pnpm install --frozen-lockfile=false
echo "🏗️ Build do OpenClaw..."
export NODE_OPTIONS="--max-old-space-size=4096"
pnpm run build
pnpm ui:build
export HOME=/root
exec node dist/index.js
deploy:
replicas: 0
# para usar:
# docker service scale clawdbot_clawdbot_cli=1
volumes:
clawdbot_config:
clawdbot_workspace:
clawdbot_source:
networks:
SUA_REDE_AQUI:
external: truetop