-
Notifications
You must be signed in to change notification settings - Fork 2
Produção
Esta página documenta o modelo operacional recomendado para executar o Zyra em produção, seja com PM2 ou com Docker Compose.
O ecossistema PM2 do projeto sobe dois processos:
-
zyra— runtime principal do bot -
zyra-backfill— worker contínuo de backfill
Esses processos são definidos em ecosystem.config.cjs.
A stack padrão inclui:
zyrabackfillmysqlredis
Essa topologia está definida em docker-compose.yml.
Para operação estável, o ambiente precisa de:
- MySQL estável e monitorado
- Redis recomendado para melhor performance
- disco com capacidade para logs e, se habilitado, mídia local
- estratégia clara de boot:
WA_CONNECTION_IDS, descoberta emauth_credsou fallbackWA_CONNECTION_ID - proteção adequada para
.env, portas de health e métricas
O processo principal zyra pode subir uma ou várias sessões no mesmo runtime.
A prioridade de resolução é:
WA_CONNECTION_IDS- descoberta automática no MySQL via
auth_creds WA_CONNECTION_ID
Recomendações práticas:
- use
WA_CONNECTION_IDSquando quiser controlar exatamente quais sessões o processo deve subir - use descoberta automática quando o MySQL já for a fonte de verdade das sessões persistidas
- mantenha
WA_CONNECTION_IDcomo modo simples ou fallback operacional - em qualquer modo, logs, reconnect e métricas passam a representar múltiplos
connection_iddentro do mesmo processo
Exemplo comum:
git pull
npm install
npm run pm2:restartpm2:restart já recompila o projeto antes de reiniciar os processos.
Em restart/deploy, o conjunto de sessões sobe de acordo com a estratégia ativa no ambiente naquele momento. Se você usa WA_CONNECTION_IDS, o resultado do restart acompanha exatamente a lista informada; se usa descoberta automática, o processo reabre as sessões presentes em auth_creds.
npm run pm2:start
npm run pm2:restart
npm run pm2:logs
npm run pm2:stop
npm run pm2:delete
npm run pm2:save
npm run pm2:startupPara parear uma nova conexão via QR no terminal:
npm run session:pair -- --connection loja2
npm run pm2:restartPara remover uma conexão específica sem trocar WA_CONNECTION_ID no ambiente:
npm run db:delete-session -- --connection loja2Fluxo recomendado para persistência no boot do servidor:
npm run pm2:start
npm run pm2:save
npm run pm2:startupSe a operação precisar adicionar sessões novas por QR sem editar a lista manualmente, mantenha o processo principal em modo de descoberta MySQL, sem WA_CONNECTION_IDS fixo.
docker compose up -d --builddocker compose ps
docker compose logs -f zyra
docker compose logs -f backfilldocker compose downA operação depende de logs estruturados e arquivos rotativos. Em cenários típicos, acompanhe:
- logs de aplicação
- logs de aviso
- logs de erro
Esses artefatos são fundamentais para troubleshooting após restart, falha de conexão ou degradação operacional.
Quando habilitadas, as métricas do antiban ficam expostas em endpoint dedicado, separado do health. O padrão de produção já usa a porta 9108.
No modo multi-conexão, o endpoint operacional expõe séries e snapshots por connection_id, permitindo acompanhar sockets ativos e reconnects isoladamente dentro do mesmo processo.
O endpoint de health pode ser habilitado por configuração e deve ser protegido/monitorado conforme a topologia do ambiente.
- processos PM2 ou serviços Docker estão ativos
- build TypeScript atual sobe sem erro
- MySQL responde normalmente
- Redis está acessível quando configurado
- logs não mostram burst contínuo de exceções
- métricas e health respondem quando habilitados
- backfill está em execução normal
- backup recorrente do MySQL
- revisão de uso de disco em
logs/edata/media - acompanhamento do restart count no PM2
- revisão de falhas recorrentes em comando, mídia e auth
- validação periódica com
npm run db:verify
- operar atrás de firewall
- evitar execução como root quando possível
- restringir permissões do
.env - monitorar portas de métricas e health
- manter segredos fora do código e fora de logs
Zyra Wiki • Última atualização: 17/05/2026
Zyra Wiki • Última atualização: 17/05/2026
Home | Configuração | Comandos | Banco-de-Dados | Produção | Troubleshooting