Infraestrutura.
Servidor de produção, containers, bancos, nginx, SSL, backups e procedimentos operacionais — tudo o que sustenta a operação 24/7.
Servidor principal
- IP:
187.77.62.141 - Acesso: SSH como
root - Sistema: Linux (Ubuntu LTS)
- Disco: SSD, com rotação de logs e limpeza de cache configuradas
- Antecessor:
185.255.131.41(migrado e desligado em 26/02/2026)
Orquestração — Docker Compose
Toda a stack roda em containers Docker, orquestrados por docker-compose.prod.yml:
| Container | Função | Porta interna |
|---|---|---|
irb-api | API REST principal (Fastify) | 3000 |
irb-worker | Workers BullMQ assíncronos | — |
irb-dashboard | Painel React servido por nginx | 80 |
irb-postgres | Banco relacional | 5432 |
irb-redis | Cache + filas | 6379 |
irb-mongo | Banco documental | 27017 |
irb-bullboard | Monitoramento de filas | 3001 (localhost) |
Hardening
O painel BullBoard está restrito a localhost — só acessível via túnel SSH. Isso evita exposição pública das filas internas.
Nginx
Front-end HTTP da máquina. Cuida de:
- TLS (Let's Encrypt, renovação automática)
- Roteamento por domínio (
irb.saraiva.ai,reinf.irb.saraiva.ai,entrega.irb.saraiva.ai) - Proxy para os containers
- Compressão gzip
Domínios e SSL
| Domínio | Aponta para | Certificado |
|---|---|---|
irb.saraiva.ai | Painel + API principal | Let's Encrypt |
reinf.irb.saraiva.ai | Portal de comprovantes | Let's Encrypt |
entrega.irb.saraiva.ai | Esta documentação | Let's Encrypt |
Renovação automática via certbot.timer.
Procedimento de deploy
Para subir uma nova versão da API ou do dashboard:
```bash
1. Sincronizar arquivos para o servidor
rsync -avz --exclude node_modules --exclude .git \
irb-whatsapp-ai/ root@187.77.62.141:/opt/irb-whatsapp-ai/
2. Build e restart dos containers afetados
ssh root@187.77.62.141
cd /opt/irb-whatsapp-ai
docker compose -f docker-compose.prod.yml build --no-cache irb-api
docker compose -f docker-compose.prod.yml up -d irb-api
```
Importante: o.dockerignoreé essencial. Sem ele, oCOPYno Dockerfile sobrescreve osnode_modulesinstalados pelo pnpm dentro do container.
Variáveis de ambiente principais
Todas em /opt/irb-whatsapp-ai/.env no servidor:
KLINGO_LOGIN,KLINGO_SENHA,KLINGO_DOMAINUAZAPI_URL,UAZAPI_TOKENASAAS_API_KEY,ASAAS_WEBHOOK_TOKENOPENAI_API_KEY,ANTHROPIC_API_KEYPOSTGRES_*,MONGO_*,REDIS_*JWT_SECRET
Manutenção realizada
- 04/05/2026 — Limpeza de cache Docker (49 GB) + rotação de logs (16 GB) = 65 GB liberados
- 19/03/2026 — BullBoard restrito a localhost (hardening de segurança)
- 26/02/2026 — Migração do servidor antigo
185.255.131.41para o atual
Backup
PostgreSQL e MongoDB têm volumes Docker persistentes em /var/lib/docker/volumes/. Recomenda-se configurar snapshot diário do volume e backup off-site — a operação a partir daqui é decisão da IRB sobre o provedor.
Healthcheck
GET /api/health retorna o status atual de cada serviço integrado. Útil para configurar monitoramento externo (Uptime Robot, BetterStack, etc).