Saudações.
Hoje vou ensinar vocês a instalar o OpenClaw (OC) em Docker.
Muita gente anda rodando o OC direto no host (instalar no computador, windows, mac, linux, direto na raiz do sistema) e isso pode resultar em catástrofes de segurança, vazamento de dados, instruções mal interpretadas que levam seus dados pro “beleleu“.
Isso é extremamente recomendável para manter seu agente de IA em um ambiente confinado onde ele só terá acesso ao que você explicitamente permitir.
A melhor tecnologia para isso são containers. O sistema de containers mais famoso e estável é o Docker.
Pré-requisitos (constam em outros artigos aqui do blog):
- Instalação do Linux (Debian);
- Internet no servidor (sua VPS ou host);
- Docker CE instalado;
- Possuir um domínio de DNS (exemplo: meudominio.com.br);
1 – O que é OpenClaw
Ele é um software, logo precisa rodar em algum computador! Vou abordar no capítulo 2 a instalação em Linux dentro de um container gerenciado pelo Docker.
O OpenClaw, anteriormente chamado de Clawbot e Moltbot, é um software de workspace de agentes de IA, um lugar onde vários agentes de IA são executados com informações, ferramentas e habilidades em comum.
Ele é capaz de rodar múltiplos agentes de IA conversacionais (chatbot) baseados em LLMs de mercado (OpenAI ChatGPT, Anthropic Claude, etc).
O grande diferencial do OpenClaw é entregar tudo isso pronto, sem toque de engenharia para colocar em funcionamento.
Do ponto de vista de um usuário leigo ele é um assistente de IA personalizado.
1.1 – Diferenciais
Seu principal diferencial em relação a agentes de IA feitos em sistemas como N8N, LangChain, Kestra ou Agentkit é o dinamismo de ferramentas e habilidades.
Um agente no OpenClaw consegue:
- Treinar a si mesmo: a cada instrução ele monta um tutorial interno de capacidade que será usado sempre que uma tarefa dessa natureza for solicitada.
- Memória optimizada: usando memória recente explicita e comprimindo conhecimento em memória de longo prazo (RAG) para pesquisa interna e uso de conhecimento quando uma tarefa a respeito do assunto é solicitada;
- Capacidades plug-and-play: por meio de habilidades obtidas remotamente a partir de repositórios online onde uma comunidade enorme cria instruções para o agente realizar uma tarefa com perfeição e compartilha para os demais usarem.
- Capacidades aprendidas: por meio de habilidades obtidas construídas localmente ele se torna capaz de fazer tarefas com muita precisão a medida que você o ensina, ensina as regras e exemplos de como agir.
1.2 – O que são skills
O suporte a SKILLs (habilidades) é o ponto forte do OpenClaw.
As SKILLs funcionam como “tools para obter prompts“.
Para leigos a explicação seria:
“Um botão que contem uma frase simples do que ele faz e quando você o aperta um manual de uso de um novo painel cai no seu colo, junto com o novo painel de botões”.
Essa “lista de botões de skills” ocupa pouco espaço na janela de contexto e permite que o agente saiba fazer muita coisa com poucas instruções iniciais e o conteúdo da SKILL não é incluída na memória do agente. Ele precisará apertar o botão toda vez que precisar se lembrar como fazer um trabalho específico e consultar na memória os pedidos e ações que ele tomou a respeito desse assunto no passado.
Uma SKILL é implementada a partir de uma pasta “./skill-NOMEHABILIDADE/” contendo um arquivo SKILL.md (documento em formato MarkDown) que instrui o agente como obter o poder que ele precisa para realizar uma tarefa específica.
A SKILL pode, opcionalmente, incluir software ou código-fonte, artefatos (documentos), guia de ferramentas e credenciais.
Uma SKILL de agenda de compromissos (skill-agenda) explica sua finalidade (frase explicativa pontual), as regras para agendar compromissos, como funciona a API de um software de controle de calendário, cadastro de compromissos, edição (reagendar), cancelamento de compromisso, avisos de lembrete e demais recursos de gestão de agenda. Bastaria criar o arquivo ./skill-agenda/SKILL.md com tudo isso.
1.3 – Cron Jobs
O OpenClaw implementa também um agendamento interno (Cron Jobs). Isso dispara o agente periodicamente e dá a ela a capacidade de estar sempre em funcionamento, uma espécie de “Agente em Loop infinito“.
O OpenClaw pode manipular seu próprio agendamento de disparo.
Se você pedir a ele fazer uma tarefa em uma data/hora futura ele agendará a própria execução criando um novo job. Ele será executado quando essa data chegar com um prompt específico para fazer o que você pediu (ele mesmo monta o prompt).
1.4 – O devorador de tokens
O ponto fraco do OpenClaw é o consumo de tokens.
Por ser um agente em execução constante ele aciona a API da LLM (IA) constantemente cada vez que é acordado, seja pare ver aconteceu algo que precisa de atenção ou para responder seus pedidos no chat.
Para usar uma LLM como o ChatGPT você é tarifado por Megatoken (MT).
Você precisará:
- Fazer uma conta;
- Cadastrar cartão de crédito;
- Estar ciente que a cobrança é em DÓLARES AMERICANO : $1 + IOF, 1 dólar ~= 6 reais;
- 100 dólares = ~600 reais;
- 200 dólares = ~1.200 reais;
- 400 dólares = ~2.400 reais;
- 1.000 dólares = ~6.000 reais;
- Comprar crédito pré-pago: $10 por exemplo;
- Programar regárca automática: +$20 sempre ficar próximo a $1;
- Limitar o orçamento mensal: nunca ultrapassar $300 (300 dólares = 1.800 reais);
Tome cuidado com o modelo que irá usar pois os tokens podem acabar em minutos ou horas no primeiro dia de uso.
Manter o OpenClaw rodando por meses se ter o capricho de usá-lo para tarefas bem específicas pode drenar uma quantidade expressiva de recursos financeiros.
1.5 – Escolha do modelo de LLM
Você terá que escolher o MODELO DE LLM que irá usar.
Recomendo escolher modelos com sufixo “-codex“, “-chat“, “-mini” e “-nano” por serem rápidos, baratos e conseguirem realizar a maioria dos trabalhos cotidianos.
Modelos baratos podem rodar o mês inteiro com $100 (100 dólares) mas podem ser burros para tarefas complexas.
Modelos caros são extremamente inteligentes, fiz uma pergunta para o modelo OpenAI ChatGPT-5-Pro-Thinking e ele demorou 15 minutos para responder e me cobrou 3 dólares pela resposta (15 reais).
Modelos chineses são tentadores, centavos de dólar por Megatoken, recomendo apenas se você não tem dados sensíveis.
1.6 – Usar LLM local – IA na própria máquina
A primeira coisa que todo mundo pensa após ler sobre o consumo de tokens é “e se eu rodar uma IA na minha máquina?“.
A ponto principal é a escolha da GPU.
Uma GPU com pelo menos 24G de VRAM pode rodar modelos locais como o gpt-oss-20b que tem inteligência razoável.
Você pode optar pelas seguintes abordagens:
- Execução minimalista: rodar apenas 1 modelo que cabe na sua GPU;
- Execução fatiada: modelos muito grandes podem rodar em uma GPU pequena usando técnicas de execução segmentada onde cada camada do modelo é processada, uma de cada vez, esse método é extremamente lento e pode demorar até horas para que um texto grande termine de ser gerado;
- Cluster RDMA: equipamentos com suporte a RDMA (acesso remoto a RAM) e que possuem memória integrada (RAM principal é usada por CPU e GPU) podem formar clusters que entregam uma VRAM final muito grande, esse método é usado para criar cluster com Apple Mac Mini e rodar grandes modelos ou vários modelos menores ao mesmo tempo com boa velocidade de tokens por segundo;
1.7 – Servidor de IA da empresa
Um modelo superior como gpt-oss-120b seriam necessários pelo menos 140G de VRAM (7 placas de 20G ou 4 placas de 32G).
As variáveis a pensar para que sua empresa tenha IA própria são:
- Hardware do servidor: um Servidor (Dell, HP, Supermicro) ou PC Gammer com as capacidades:
- Corrente elétrica: fontes entre 1KWh a 8KWh (ou mais);
- CPU: para gerenciar os softwares e mover dados entre periféricos, uns 12 núcleos mínimos, mínimo 2GHz de base, consumo de energia em torno de 300W por socket (2 a 4 sockets por servidor);
- RAM: para carregar o modelo na RAM para enviar as camadas para as GPUs e gerenciar de tokens;
- GPU: para rodar a inferência (processar janela de contexto nas camadas do modelo para gerar tokens);
Custos envolvidos:
- Custo Servidor:
- Servidor básico: R$ 12.000,00;
- Servidor razoável: R$ 45.000,00;
- Custo de GPU:
- RTX A4500 20 GB: ~R$ 8.000,00
- RTX 5090 32 GB: ~R$ 30.000,00
- NVIDIA H100 80 GB: ~R$ 180.000,00
- Custo de energia:
- Precisa calcular o consumo do servidor, o consumo das placas e multiplicar pelo custo do KWA da região;
- Precisa calcular o custo de contingência: geradores e baterias;
- Custo de licenciamento:
- Sistema operacional: costuma ser gratuito (Linux), se usar Linux Red Hat pode haver custo de licença;
- Softwares de gestão: para montar um cluster HPC (High-Performance Computing) você precisará desenvolver ou adquirir sistemas prontos;
- Softwares de inferência e API: são os sistemas que vão criar APIs HTTP para suas IAs semelhantes às APIs de mercado (padrão ChatGPT);
- Custo de propriedade: considerar a aquisição, leasing ou financiamento
- O servidor opera por 5 anos e pode ser vendido (-50% do valor);
- As GPUs tem vida útil de 3 a 6 anos (-20% do valor);
2 – Preparativos no Docker
Uma vez que o Docker foi instalado, crie a rede e deixe o Traefik de prontidão.
2.1 – Rede Docker
Vou deixar dois exemplos, o primeiro apenas com IPv4, se você está em um ambiente neandertal ou paleolítico.
Rede Docker IPv4-Only
# Rede de containers
# - Se ja existe,
if [ -d /sys/class/net/br-net-public ]; then
echo "# Rede ja existe";
else
echo "# Criando rede docker IPv4-Only";
# - Criar
docker network create \
-d bridge \
\
-o "com.docker.network.bridge.name"="br-net-public" \
-o "com.docker.network.bridge.enable_icc"="true" \
-o "com.docker.network.driver.mtu"="1500" \
\
--subnet 10.249.0.0/16 --gateway 10.249.255.254 \
\
network_public;
fi;
2.2 – Instalando Traefik
O Traefik será nosso proxy-reverso para dar URLs públicas para o container.
Você precisará informar seu email para que o LetsEncrypt aceite gerar certificados e alerte de expirações e bloqueios.
Grave seu email no arquivo /etc/email para deixar o script abaixo 100% automático.
# Email do administrador do traefik
echo "seu-nome-ou-nick@meudominio.com.br" > /etc/email;
Rodando Traefik no Docker:
# Variaveis
NAME=traefik-app;
LOCAL=$NAME.intranet.br;
JSONPATH="/etc/letsencrypt/acme.json";
EMAIL="root@intranet.br";
[ -f /etc/email ] && EMAIL=$(head -1 /etc/email);
# Imagem
IMAGE=traefik:latest;
docker pull $IMAGE;
# Diretorio de dados persistentes
DATADIR=/storage/traefik-app;
mkdir -p $DATADIR/letsencrypt;
mkdir -p $DATADIR/logs;
mkdir -p $DATADIR/config;
# Renovar/rodar:
# (limitar a 8 nucleos: --cpus="8.0")
docker rm -f $NAME 2>/dev/null;
docker run \
-d --restart=always \
--name $NAME -h $LOCAL \
--tmpfs /run:rw,noexec,nosuid,size=2m \
--tmpfs /tmp:rw,noexec,nosuid,size=2m \
--read-only \
--memory=1g --memory-swap=1g \
\
--network network_public \
--mac-address "02:a2:49:25:55:ff" \
\
-p 80:80 \
-p 443:443 \
\
-v /var/run/docker.sock:/var/run/docker.sock:ro \
-v $DATADIR/letsencrypt:/etc/letsencrypt \
-v $DATADIR/config:/etc/traefik \
-v $DATADIR/logs:/logs \
\
$IMAGE \
\
--global.checkNewVersion=false \
--global.sendAnonymousUsage=false \
\
--api.insecure=true \
\
--log.level=INFO \
--log.filePath=/logs/error.log \
\
--accessLog.filePath=/logs/access.log \
\
--entrypoints.web.address=:80 \
--entrypoints.web.http.redirections.entryPoint.to=websecure \
--entrypoints.web.http.redirections.entryPoint.scheme=https \
--entrypoints.web.http.redirections.entryPoint.permanent=true \
--entrypoints.websecure.address=:443 \
\
--providers.docker=true \
--providers.file.directory=/etc/traefik \
\
--certificatesresolvers.letsencrypt.acme.email=$EMAIL \
--certificatesresolvers.letsencrypt.acme.storage=$JSONPATH \
--certificatesresolvers.letsencrypt.acme.httpchallenge.entrypoint=web;
Para acompanhar os logs do Traefik e observar problemas, use esse comando (abra uma nova tela de terminal):
# Acompanhar logs do Traefik:
DATADIR=/storage/traefik-app;
tail -f $DATADIR/logs/*;
3 – Preparativos para o OpenClaw
Preste bastante atenção agora. Todos os itens são vitais para o funcionamento.
Vou fazer uso da imagem Docker feita pelo usuário phioranex do github, o link dos fontes para construção do container estão no link https://github.com/phioranex/openclaw-docker
3.1 – FQDN – Nome de DNS
Dê um nome ao seu OpenClaw como “Atlas“, nome da pessoa ou empresa que fará uso do dele. Nome de DNS (FQDN) será:
- atlas.meudominio.com.br
Aponte no domínio “meudominio.com.br” o nome “atlas” para o IPv4 (registro tipo A) da sua VPS, supondo que o IP da sua VPS seja 45.255.128.2, o registro ficará assim:
- atlas.meudominio.com.br IN A 45.255.128.2
3.2 – Pasta para volume do container
Vamos criar uma pasta para ser o volume do container OpenClaw. Como estou criando um OpenClaw específico que chamarei de “Atlas“, a pasta será /storage/openclaw-atlas
# Diretorio do volume do OpenClaw "Atlas"
DATADIR="/storage/openclaw-atlas";
# - Diretorio especifico para o volume do Atlas
mkdir -p $DATADIR;
mkdir -p $DATADIR/.openclaw;
mkdir -p $DATADIR/.openclaw/workspace;
mkdir -p $DATADIR/.openclaw/agents/main/agent;
3.3 – Chaves de API e arquivos com chaves de API
Crie as chaves de API especificamente para o “Atlas” com orçamento limitado para que os custos não fujam do seu controle. Não rode vários OpenClaw compartilhando a mesma chave pois isso deixará você sem controle de qual OpenClaw está drenando tokens.
Você precisará obter chaves de API dos seguintes serviços:
- OpenAI: acesse https://platform.openai.com/
- Anthropic: acesse https://platform.claude.com/
- Opcional, Gemini: acesse https://aistudio.google.com/app/api-keys
- Opcional, xAI: acesse https://x.ai/api
Salve as chaves de API em arquivos dentro do volume. Estes arquivos não são lidos pelo OpenClaw diretamente mas nos ajudará a obter as chaves no script de setup do OpenClaw adiante.
Alerta de segurança – não deixe suas chaves de API vazar.
Troque a frase “SUA-CHAVE-DE-API-…-AQUI” pela chave gerada nos sites acima.
DATADIR="/storage/openclaw-atlas";
# Gravar chave da OpenAI para variavel OPENAI_API_KEY
echo "SUA-CHAVE-DE-API-OPENAI-AQUI" > $DATADIR/.openai_key;
# Gravar chave da Anthropic para variavel ANTHROPIC_API_KEY
echo "SUA-CHAVE-DE-API-ANTHROPIC-AQUI" > $DATADIR/.anthropic_key;
# Gravar chave da Gemini para variavel GEMINI_API_KEY
echo "SUA-CHAVE-DE-API-GEMINI-AQUI" > $DATADIR/.gemini_key;
# Gravar chave da xAI para variavel XAI_API_KEY
echo "SUA-CHAVE-DE-API-XAI-AQUI" > $DATADIR/.xai_key;
Criar arquivo com chave da Anthropic Claude:
DATADIR="/storage/openclaw-atlas";
# Configuracao de acesso ao Anthropic Claude
(
echo '{';
echo ' "default": {';
echo ' "anthropic": {';
echo " \"apiKey\": \"$ANTHROPIC_API_KEY\"";
echo ' }';
echo ' }';
echo '}';
) > "$DATADIR/.openclaw/agents/main/agent/auth-profiles.json";
3.4 – Token de acesso privilegiado ao painel do OpenClaw
Esse token é MUITO importante e grante o acesso de administrador pelo navegador.
Alerta de segurança – não deixe esse código vazar.
# Gerar UUID v4 randomico para usar como token
cat /proc/sys/kernel/random/uuid > /storage/openclaw-atlas/.admin_token;
# Visualizar token gerado:
cat /storage/openclaw-atlas/.admin_token;
3.5 – API de acesso a BOT no Telegram
O Telegram é o melhor aplicativo para interagir com o OpenClaw por meio de Smartphone.
É importante que seu bot não seja revelado a terceiros pois tudo que é conversado por meio dele tem acesso ao seu agente.
Alerta de segurança – não revele o nome do bot ou o token dele.
Para gerar um token de bot de Telegram:
- Acesse: https://web.telegram.org/ ou use Telegram Desktop;
- Inicie uma conversa com o BotFather: @BotFather em https://telegram.me/BotFather
- Envie a mensagem /newbot
- Informe o nome do bot, algo como: Atlas_1829_bot (precisa terminar com “_bot”)
- Copie o token do bot, algo parecido com:
- 8432912345:ABCd1ef2hij3lmnoPQRs4tuVxzWyABc5DEF
Salvar o token de bot Telegram em arquivo no volume do OpenClaw Atlas:
DATADIR="/storage/openclaw-atlas";
# Gerar UUID v4 randomico para usar como token
echo "SEU-TOKEN-DO-BOT-TELEGRAM-AQUI" > $DATADIR/.telegram_token;
# Visualizar token do telegram gravado:
cat $DATADIR/.telegram_token;
3.6 – Configuração inicial do OpenClaw
Vamos preencher a configuração inicial, execute esses comandos apenas na primeira vez, depois disso a edição deve ser feita pelo comando “onboard” que vou mostrar adiante.
# Obter token administrativo do OpenClaw Atlas
OPENCLAW_GATEWAY_TOKEN=$(head -1 /storage/openclaw-atlas/.admin_token);
# Obter token do telegram
TELEGRAM_BOT_TOKEN=$(head -1 /storage/openclaw-atlas/.telegram_token);
# Criar o arquivo de configuração inicial:
(
echo '{';
echo ' "gateway": {';
echo ' "mode": "local",';
echo ' "bind": "lan",';
echo ' "port": 18789,';
echo ' "controlUi": {';
echo ' "enabled": true,';
echo ' "allowInsecureAuth": true';
echo ' },';
echo ' "auth": {';
echo ' "mode": "token",';
echo " \"token\": \"$OPENCLAW_GATEWAY_TOKEN\"";
echo ' },';
echo ' "trustedProxies": [';
echo ' "10.127.0.0/16",';
echo ' "172.16.0.0/12",';
echo ' "192.168.0.0/16",';
echo ' "127.0.0.0/8"';
echo ' ]';
echo ' },';
echo ' "plugins": {';
echo ' "entries": {';
echo ' "telegram": {';
echo ' "enabled": true';
echo ' }';
echo ' }';
echo ' },';
echo ' "channels": {';
echo ' "telegram": {';
echo ' "enabled": true,';
echo " \"botToken\": \"$TELEGRAM_BOT_TOKEN\"";
echo ' }';
echo ' },';
echo ' "agents": {';
echo ' "defaults": {';
echo ' "workspace": "/home/node/.openclaw/workspace"';
echo ' }';
echo ' }';
echo '}';
) > /storage/openclaw-atlas/.openclaw/openclaw.json;
3.7 – Obter imagem para o container Docker
É muito importante obter a imagem atualizada do OpenClaw. Sempre execute esse comando, se ele fizer download de uma nova versão você deverá destruir o container do OpenClaw “Atlas” e executá-lo novamente para usar a imagem atualizada.
# - Imagem Docker do container
IMAGE="ghcr.io/phioranex/openclaw-docker:latest";
# Baixar imagem atualizada
docker pull $IMAGE;
3.8 – Boot da configuração completa
Executando o comando onboard podemos completar as configurações do OpenClaw. Você pode executar esse comando no futuro se desejar mudar as configurações via terminal. O container abaixo é temporário, ou seja, não permanece após a conclusão da tarefa.
# Criar contenter TEMPORARIO para configuracoes
# Variaveis
# - Diretorio do volume onde a configuração será salva
DATADIR="/storage/openclaw-atlas";
# - Imagem Docker do container
IMAGE="ghcr.io/phioranex/openclaw-docker:latest";
# - Criar e rodar
docker run --rm -it \
--network network_public \
\
-v $DATADIR:/home/node \
\
-e TZ=America/Sao_Paulo \
-e HOME=/home/node \
-e TERM=xterm-256color \
-e NODE_ENV=production \
-e OPENCLAW_SKIP_SERVICE_CHECK=true \
\
-w /app \
--entrypoint node \
$IMAGE \
/app/dist/index.js onboard;
3.9 – Ajustar permissões no volume
# Diretorio do volume
DATADIR="/storage/openclaw-atlas";
# Garantir existencia arquivo de ENV do processo gateway
touch $DATADIR/.openclaw/.env;
# Fixar permissoes e modos de acesso
chown -R 1000:1000 $DATADIR;
chmod -R 755 $DATADIR;
chmod 644 $DATADIR/.openclaw/openclaw.json;
chmod 600 $DATADIR/.openclaw/agents/main/agent/auth-profiles.json;
4 – Rodando o OpenClaw
Vamos rodar o OpenClaw de nosso serviço chamado “Atlas” no container openclaw-atlas.
4.1 – Criar container do serviço
Vamos rodar o gateway, o aplicativo do OpenClaw pronto para trabalhar pra sempre em suas tarefas:
# Variaveis
# - Nome do container
NAME="openclaw-atlas";
# - Nome de DNS para acesso pelo navegador
FQDN="atlas.meudominio.com.br";
# - Diretorio do volume onde a configuração será salva
DATADIR="/storage/openclaw-atlas";
# - Imagem Docker do container
IMAGE="ghcr.io/phioranex/openclaw-docker:latest";
# - Porta TCP/HTTP
# - Porta externa para acesso direto
PORT_OUTSIDE=18789;
# - Porta interna do servico OpenClaw
PORT_INSIDE=18789;
# - Limite de recursos
CPU_LIMIT="4.0";
RAM_LIMIT="4g";
# - Variaveis armazenadas em arquivos
# - Funcao para ler primeira linha de arquivo
_fget(){ head -1 "$1" 2>/dev/null; };
# - Parametros do OpenClaw
OPENCLAW_SKIP_SERVICE_CHECK=true;
OPENCLAW_GATEWAY_TOKEN=$(_fget $DATADIR/.admin_token);
# Chaves de API
ANTHROPIC_API_KEY=$(_fget $DATADIR/.anthropic_key);
OPENAI_API_KEY=$(_fget $DATADIR/.openai_key);
GEMINI_API_KEY=$(_fget $DATADIR/.gemini_key);
XAI_API_KEY=$(_fget $DATADIR/.xai_key);
# - Remover container atual (se existir):
docker rm -f $NAME 2>/dev/null;
# - RUN - Criar e rodar container:
docker run \
-d --restart=always --name $NAME -h $NAME.intranet.br \
\
--cpus=$CPU_LIMIT --memory=$RAM_LIMIT --memory-swap=$RAM_LIMIT \
--shm-size=1g \
--tmpfs /run:rw,noexec,nosuid,size=1g \
--tmpfs /tmp:rw,noexec,nosuid,size=1g \
\
--network network_public \
-p $PORT_OUTSIDE:$PORT_INSIDE \
\
-v $DATADIR:/home/node \
\
-e TZ=$TZ \
-e HOME=/home/node \
-e TERM=xterm-256color \
-e NODE_ENV=production \
\
-e OPENCLAW_SKIP_SERVICE_CHECK=$OPENCLAW_SKIP_SERVICE_CHECK \
-e OPENCLAW_GATEWAY_TOKEN=$OPENCLAW_GATEWAY_TOKEN \
-e ANTHROPIC_API_KEY=$ANTHROPIC_API_KEY \
-e OPENAI_API_KEY=$OPENAI_API_KEY \
-e GEMINI_API_KEY=$GEMINI_API_KEY \
-e XAI_API_KEY=$XAI_API_KEY \
\
--label "traefik.enable=true" \
--label "traefik.http.routers.$NAME.rule=Host(\`$FQDN\`)" \
--label "traefik.http.routers.$NAME.entrypoints=web,websecure" \
--label "traefik.http.routers.$NAME.tls=true" \
--label "traefik.http.routers.$NAME.service=$NAME_GW" \
--label "traefik.http.routers.$NAME.tls.certresolver=letsencrypt" \
--label "traefik.http.services.$NAME.loadbalancer.server.port=$PORT_INSIDE" \
\
-w /app \
--entrypoint node \
$IMAGE \
/app/dist/index.js gateway --bind lan --port $PORT_INSIDE;
4.2 – Primeiro acesso
O primeiro acesos pelo navegador deve ser feito com o token administrativo para que a sessão fique salva no seu navegador. URLs de acesso:
# Endereco de DNS para acesso pelo navegador
FQDN="atlas.meudominio.com.br";
# Diretorio do volume do container:
DATADIR="/storage/openclaw-atlas";
# - Obter token administrativo do container:
TOKEN=$(head -1 $DATADIR/.admin_token);
# - Exibir URLs de acesso:
(
echo;
echo "Acesso:";
echo " https://$FQDN/?token=$TOKEN";
echo;
);
4.3 – Ativar bot do Telegram
Para que o bot do telegram possa funcionar de dentro do aplicativo Telegram ou Telegram Desktop é preciso confirmar o código de acesso do bot no OpenClaw.
Abra uma conversa com seu bot do Telegram (envie um “oi”) que o código será exibido. Execute os comandos abaixo para informar o código ao OpenClaw:
# - Nome do container
NAME="openclaw-atlas";
# Diretorio do volume do container:
DATADIR="/storage/openclaw-atlas";
# - Obter token administrativo
# - Funcao para ler primeira linha de arquivo
TOKEN=$(head -1 $DATADIR/.admin_token);
# - Codigo do telegram, exemplo: W7A31XYZ
TELEGRAM_CODE="COLOQUE-O-CODIGO-AQUI";
# - Confirmar codigo:
CMD="node /app/dist/index.js";
docker exec $NAME_GW $CMD pairing approve telegram $TELEGRAM_CODE;
4.4 – Liberar acesso a outros navegadores
A gestão web do OpenClaw requer liberação por token.
# - Nome do container
NAME="openclaw-atlas";
# Diretorio do volume do container:
DATADIR="/storage/openclaw-atlas";
# - Obter token administrativo
TOKEN=$(head -1 $DATADIR/.admin_token);
# - Exibir comandos uteis:
(
CMD="node /app/dist/index.js";
echo;
echo "Comandos Úteis:";
echo "Logs.....: docker logs -f $NAME";
echo "Devices..: docker exec $NAME $CMD devices list";
echo "Adicionar: docker exec $NAME $CMD devices approve <id-aqui>";
echo "Check....: docker exec $NAME $CMD health --token $TOKEN";
echo;
);
.
“A hipocrisia é uma homenagem que o vício presta à virtude“
François La Rochefoucauld
Terminamos por hoje!
Patrick Brandão, patrickbrandao@gmail.com
