A Uúba Tech usa duas VPS. A infraestrutura principal (API, WhatsApp) está na Contabo. O n8n da empresa está na Hostinger. Migração futura planejada para unificar.
| Item | Valor |
|---|---|
| Hostname | vmi3095712 |
| IP público | 5.189.155.226 |
| OS | Ubuntu 24.04.4 LTS |
| Kernel | 6.8.0-100-generic |
| Acesso SSH | ssh root@5.189.155.226 |
| Stack path | /opt/stack/ |
| Docker Compose | /opt/stack/docker-compose.yml |
| Variáveis de ambiente | /opt/stack/.env |
| Timezone | America/Sao_Paulo |
Nota: Esta VPS também hospeda serviços pessoais (GotoSocial, Matrix/Conduit, Tor, Cloudflare Tunnel) que rodam no mesmo docker-compose mas não são parte da Uúba.
| Item | Valor |
|---|---|
| n8n URL | n8n.srv921702.hstgr.cloud |
| Função | Workflows de automação da Uúba (régua, bot, integrações) |
| Status | Ativo |
Nota: Esta VPS também hospeda outros serviços não relacionados à Uúba.
| Domínio | Tipo | Destino | Função |
|---|---|---|---|
uuba.tech | — | Wix (site institucional) | Site público |
api.uuba.tech | A | 5.189.155.226 | REST API |
developers.uuba.tech | A | 5.189.155.226 | Documentação API (Scalar) |
wa.uuba.tech | A | 5.189.155.226 | Evolution API (WhatsApp) |
chat.uuba.tech | A | 5.189.155.226 | Chatwoot (Atendimento) |
n8n.srv921702.hstgr.cloud | — | Hostinger VPS | n8n empresa (Uúba) |
| Certificado | Domínios | Expira | Renovação |
|---|---|---|---|
developers.uuba.tech |
developers.uuba.tech, api.uuba.tech | 13/06/2026 | Automática (certbot) |
wa.uuba.tech |
wa.uuba.tech | 14/06/2026 | Automática (certbot) |
chat.uuba.tech |
chat.uuba.tech | 15/06/2026 | Automática (certbot) |
Todos rodam no mesmo docker-compose.yml na rede internal (bridge).
| Container | O que é | Portas |
|---|---|---|
uuba-api |
API REST Backend principal da Uúba. API em Python (FastAPI) com 14 endpoints para gerenciar clientes, faturas e cobranças. Serve como fonte de verdade para todos os dados financeiros. O bot e o n8n consultam essa API para saber o que cobrar de quem. Imagem: build local (Dockerfile.prod) · URL: api.uuba.tech |
8000 → 127.0.0.1:8080 |
evolution-api |
WhatsApp Gateway de WhatsApp. Projeto open-source que emula o WhatsApp Web e expõe uma API REST para enviar e receber mensagens programaticamente. Quando um cliente manda WhatsApp, a Evolution recebe e dispara um webhook pro n8n. Quando o n8n quer responder, faz um POST na Evolution. Imagem: evoapicloud/evolution-api:v2.3.7 · URL: wa.uuba.tech · Manager: wa.uuba.tech/manager · Instância: uuba-bot (conectada) |
8080 → 127.0.0.1:8085 |
redis |
Cache Cache em memória. Banco de dados key-value ultrarrápido. Usado pela Evolution API para cachear sessões WhatsApp e melhorar performance. Não armazena dados de negócio. Imagem: redis:7-alpine · Protegido por senha |
6379 (interno) |
chatwoot-rails |
Atendimento Plataforma de atendimento humano. Chatwoot recebe conversas do WhatsApp via integração com Evolution API. Permite que atendentes humanos assumam conversas quando o bot escala. Interface web completa com inbox, contatos e relatórios. Imagem: chatwoot/chatwoot:latest · URL: chat.uuba.tech |
3000 → 127.0.0.1:3000 |
chatwoot-sidekiq |
Background Jobs Worker do Chatwoot. Processa jobs assíncronos: envio de notificações, importação de contatos, webhooks e relatórios em background. Imagem: chatwoot/chatwoot:latest · Sidekiq worker |
— (interno) |
n8n-postgres-data |
Database Banco de dados principal. PostgreSQL 16 com extensão pgvector. Armazena os dados de negócio. Contém 4 databases: uuba (clientes/faturas/cobranças), evolution (instâncias WhatsApp), chatwoot (atendimento) e datastore (vazio).Imagem: pgvector/pgvector:pg16 · User: datauser |
5432 → 127.0.0.1:5433 |
| Container | O que é | Portas |
|---|---|---|
n8n |
Automação Plataforma de automação low-code. É onde ficam os workflows — régua de cobrança, bot WhatsApp, integrações. Recebe webhooks da Evolution API, processa a lógica, e chama a API da Uúba e o Claude (IA). Este é o n8n pessoal, usado para desenvolvimento. Imagem: n8nio/n8n:latest · Usado para desenvolvimento · Empresa: n8n.srv921702.hstgr.cloud |
5678 → 0.0.0.0:5678 |
n8n-postgres |
Database Banco interno do n8n. PostgreSQL exclusivo para o n8n armazenar seus próprios dados: workflows, credenciais, histórico de execuções. Separado do banco de negócio por segurança. Imagem: postgres:16-alpine · User: n8n · DB: n8n |
5432 (interno) |
n8n-pgadmin |
Admin Interface visual para banco de dados. pgAdmin é um painel web para consultar e administrar os PostgreSQL. Útil para inspecionar dados sem precisar usar terminal. Imagem: dpage/pgadmin4:latest · Acesso via SSH tunnel |
80 → 127.0.0.1:5050 |
Todos os containers compartilham a rede stack_internal (172.18.0.0/16). Eles se comunicam pelo nome do container.
| De | Para | URL interna |
|---|---|---|
| n8n | Uúba API | http://uuba-api:8000/api/v1/ |
| n8n | Evolution API | http://evolution-api:8080/ |
| Evolution API | n8n (webhook) | http://n8n:5678/webhook/evolution-webhook |
| Evolution API | PostgreSQL | postgresql://datauser:***@postgres-data:5432/evolution |
| Evolution API | Redis | redis://:***@redis:6379/0 |
| Uúba API | PostgreSQL | postgresql+asyncpg://...@postgres-data:5432/uuba |
| n8n | PostgreSQL (interno) | postgresql://n8n:***@postgres:5432/n8n |
| Evolution API | Chatwoot (webhook) | http://chatwoot-rails:3000 (integração nativa) |
| Chatwoot | PostgreSQL | postgresql://datauser:***@postgres-data:5432/chatwoot |
2 instâncias PostgreSQL 16 — uma para o n8n, outra para dados de negócio.
| Item | Valor |
|---|---|
| Container | n8n-postgres |
| Database | n8n |
| User | n8n |
| Porta | 5432 (só interno) |
| Volume | stack_postgres_data |
| Usado por | n8n (workflows, credentials, executions) |
| Item | Valor |
|---|---|
| Container | n8n-postgres-data |
| User | datauser |
| Porta | 5432 interno / 127.0.0.1:5433 (local) |
| Volume | stack_postgres_data_store |
| Database | Usado por | Conteúdo |
|---|---|---|
datastore | — | Database padrão (vazio) |
uuba | uuba-api | Clientes, faturas, cobranças (Alembic migrations) |
evolution | evolution-api | Instâncias WhatsApp, mensagens (Prisma migrations) |
chatwoot | chatwoot-rails | Conversas, contatos, inbox, times (Rails migrations) |
Nginx roda diretamente no host (não em container). Faz proxy reverso para os containers.
| Vhost | Arquivo | Domínio | Destino |
|---|---|---|---|
uuba-tech |
/etc/nginx/sites-available/uuba-tech |
api.uuba.tech | 127.0.0.1:8080 (uuba-api) |
uuba-tech |
(mesmo arquivo) | developers.uuba.tech | 127.0.0.1:8080/docs (Scalar) |
wa-uuba-tech |
/etc/nginx/sites-available/wa-uuba-tech |
wa.uuba.tech | 127.0.0.1:8085 (evolution-api) |
chat-uuba-tech |
/etc/nginx/sites-available/chat-uuba-tech |
chat.uuba.tech | 127.0.0.1:3000 (chatwoot-rails) |
default |
/etc/nginx/sites-available/default |
_ (catch-all) | /var/www/html |
O n8n da empresa (n8n.srv921702.hstgr.cloud) roda na VPS Hostinger, separado desta infra.
Dados persistentes de cada serviço.
| Volume | Container | Conteúdo |
|---|---|---|
stack_postgres_data | n8n-postgres | Dados PostgreSQL (n8n) |
stack_postgres_data_store | n8n-postgres-data | Dados PostgreSQL (uuba + evolution) |
stack_n8n_data | n8n | Configurações, custom nodes |
stack_evolution_instances | evolution-api | Sessões WhatsApp |
stack_redis_data | redis | Cache Redis |
stack_pgadmin_data | n8n-pgadmin | Configurações pgAdmin |
stack_chatwoot_storage | chatwoot-rails | Uploads de arquivos e mídias |
Arquivos de configuração com secrets.
| Arquivo | Contém | Usado por |
|---|---|---|
/opt/stack/.env |
POSTGRES_USER, POSTGRES_PASSWORD, POSTGRES_DB N8N_ENCRYPTION_KEY, N8N_HOST DATA_DB_USER, DATA_DB_PASSWORD, DATA_DB_NAME PGADMIN_EMAIL, PGADMIN_PASSWORD UUBA_DB_NAME, UUBA_API_KEY CLOUDFLARE_TUNNEL_TOKEN EVOLUTION_API_KEY, REDIS_PASSWORD |
docker-compose.yml |
/opt/stack/evolution.env |
SERVER_URL, DATABASE_CONNECTION_URI CACHE_REDIS_URI, AUTHENTICATION_API_KEY WEBHOOK_GLOBAL_URL, eventos webhook CHATWOOT_ENABLED, CHATWOOT_IMPORT_DATABASE_CONNECTION_URI |
evolution-api (env_file) |
Nunca commitar esses arquivos no git. Eles existem apenas na VPS.
| URL | Serviço | Auth |
|---|---|---|
| api.uuba.tech | REST API | Header X-API-Key |
| api.uuba.tech/health | Health check | Público |
| developers.uuba.tech | API Docs (Scalar) | Público |
| n8n.srv921702.hstgr.cloud | n8n (empresa) | Login (email/senha) |
| wa.uuba.tech | Evolution API | Header apikey |
| wa.uuba.tech/manager | Evolution Manager | API Key |
| chat.uuba.tech | Chatwoot (Atendimento) | Login (email/senha) |
| Porta | Serviço | Acesso |
|---|---|---|
| 127.0.0.1:5050 | pgAdmin | ssh -L 5050:127.0.0.1:5050 root@5.189.155.226 |
| 127.0.0.1:5433 | PostgreSQL (data) | ssh -L 5433:127.0.0.1:5433 root@5.189.155.226 |
| 127.0.0.1:8080 | uuba-api (direto) | ssh -L 8080:127.0.0.1:8080 root@5.189.155.226 |
| 127.0.0.1:8085 | evolution-api (direto) | ssh -L 8085:127.0.0.1:8085 root@5.189.155.226 |
| Item | Valor |
|---|---|
| GitHub | github.com/luisbarcia/uuba-tech (privado) |
| Branch principal | main |
| Clone na VPS | /opt/stack/uuba-tech/ |
| Git remote (VPS) | git@github-uuba:luisbarcia/uuba-tech.git |
| Deploy key | SSH alias github-uuba |
maindocs/ publicado em luisbarcia.github.io/uuba-tech| Workflow | ID | Status | Função |
|---|---|---|---|
| Uúba — WhatsApp Receber | O2Qu40lBWFLBqedq |
Ativo | Recebe mensagens do WhatsApp via webhook, identifica cliente, usa agente IA (Claude Sonnet) para responder |
| Uúba — WhatsApp Enviar | x7YyAt9NgQ1w9UpM |
Ativo | Sub-workflow reutilizável para enviar mensagens via Evolution API |
| Uúba — Régua de Cobrança | PLmFT4LDMHCJO543 |
Protótipo | Régua de cobrança automática (Sprint 5) |
| Componente | Detalhe |
|---|---|
| LLM | Claude Sonnet 4 (Anthropic) — temperatura 0.3, max 1024 tokens, retry 3x |
| Memória | Buffer window por telefone (últimas 10 mensagens) |
| Debounce | Redis (ioredis) — espera 5s, acumula mensagens do mesmo número, só processa a última |
| Tool: Buscar Faturas | GET /api/v1/faturas?cliente_id=X&status=pendente |
| Tool: Buscar Métricas | GET /api/v1/clientes/{id}/metricas |
| Tool: Registrar Promessa | PATCH /api/v1/faturas/{id} (promessa_pagamento) |
| Tool: Registrar Cobrança | POST /api/v1/cobrancas (canal: whatsapp) |
| System Prompt | Protocolo de cobrança comportamental + regras de escalação + formatação WhatsApp |
| Envio | Quebra resposta em parágrafos, envia com 1.5s delay, converte Markdown → WhatsApp |
| Configuração | Valor |
|---|---|
| Inbox | WhatsApp Uuba (Channel::Api, criado automaticamente) |
| Webhook | https://wa.uuba.tech/chatwoot/webhook/uuba-bot |
| URL interna | http://chatwoot-rails:3000 |
| signMsg | true (mostra nome do atendente) |
| conversationPending | true (novas conversas ficam pendentes) |
| importMessages | true (últimos 3 dias) |
| mergeBrazilContacts | true (unifica +55 com 9 dígito) |
| autoCreate | true (cria contato automaticamente) |
Ao migrar para a VPS Hostinger, replicar estas env vars no docker-compose do n8n:
| Variável | Valor | Motivo |
|---|---|---|
NODE_FUNCTION_ALLOW_EXTERNAL | ioredis | Permite Code nodes usarem ioredis para debounce |
N8N_PUBLIC_API_DISABLED | false | Habilita API REST para gerenciar workflows via CLI |