Pular para conteúdo

Troubleshooting

Diagnostico Geral

# Ver todos os servicos e status
docker service ls

# Ver logs de um servico
docker service logs <service_name> --tail 50 -f

# Ver tasks (incluindo falhas)
docker service ps <service_name> --no-trunc

# Ver detalhes do servico
docker service inspect <service_name> --pretty

Backend nao conecta no MongoDB

Sintoma: SSL routines: tlsv1 alert internal error

Causa: Imagem Docker Alpine tem OpenSSL incompativel com MongoDB Atlas.

Solucao: Usar node:20-slim (Debian) no Dockerfile em vez de node:20-alpine.


Backend nao conecta no MongoDB (timeout)

Sintoma: Timeout ao conectar, sem erro SSL.

Causa: IP do servidor nao esta na whitelist do MongoDB Atlas.

Solucao:

# Descobrir IP publico do servidor
curl -s ifconfig.me
Adicionar em: Atlas > Security > Network Access > Add IP Address


Frontend mostra localhost:3000 nas requisicoes

Sintoma: Requisicoes da API vao para localhost:3000 em vez da URL correta.

Causa: NEXT_PUBLIC_API_URL e injetada em build time. Se o secret nao estava configurado no momento do build, cai no fallback.

Solucao: 1. Verificar que NEXT_PUBLIC_API_URL esta nos secrets do GitHub 2. Forcar novo build:

git commit --allow-empty -m "ci: rebuild com NEXT_PUBLIC_API_URL" && git push origin main


Container reinicia em loop (CrashLoopBackOff)

Sintoma: docker service ps mostra multiplas tasks falhando.

Diagnostico:

docker service logs <service_name> --tail 50

Causas comuns: - .env nao existe no path configurado - Variavel de ambiente obrigatoria faltando - Porta ja em uso por outro servico - Erro de conexao com dependencia (RabbitMQ, MongoDB)


Frontend container crasha com ENOTFOUND

Sintoma: Error: getaddrinfo ENOTFOUND <container_hash>

Causa: Next.js standalone tenta fazer bind no hostname do container.

Solucao: Adicionar no Dockerfile:

ENV HOSTNAME=0.0.0.0
ENV PORT=3000


GHCR retorna 403 Forbidden no pull

Sintoma: docker pull da 403 no servidor, mas login funcionou.

Causas: - Package esta como Private (precisa ser Internal) - Token nao tem permissao read:packages

Solucao: 1. GHCR > Package settings > Visibility > Internal 2. Verificar que o workflow usa GITHUB_TOKEN com packages: write


Servico nao consegue se comunicar com outro

Sintoma: ECONNREFUSED ou ENOTFOUND ao acessar outro servico.

Diagnostico:

# Verificar se ambos estao na mesma network
docker service inspect <service_name> --format '{{.Spec.TaskTemplate.Networks}}'

# Verificar se o servico destino esta rodando
docker service ls | grep <service_name>

Solucao:

# Adicionar network ao servico
docker service update --network-add network_swarm_01 <service_name>


RabbitMQ fila nao existe

Sintoma: Erro ao publicar na fila events.

Causa: A fila quorum e criada pelo consumer (backend) na inicializacao.

Solucao: Garantir que o backend esta rodando. A fila sera criada automaticamente.


WhatsApp desconectou

Sintoma: Mensagens nao sao recebidas/enviadas.

Diagnostico:

docker service logs whatsapp_whatsapp --tail 20

Solucao: Acessar a API do Go-Whatsmeow e re-escanear o QR code.


GitHub Actions falha no SSH

Sintoma: error: missing server host ou timeout no SSH.

Causas: - Secret de host/user/key nao configurado no environment correto - Firewall bloqueando porta 22 - Chave SSH invalida

Verificar: 1. Confirmar que os secrets existem no environment marie_ai_swarm_manager_01 2. Testar SSH manualmente: ssh -i key user@host