Infraestrutura Uúba Tech

Documentação completa da VPS, serviços e configurações
Atualizado em 17 de Março de 2026

Serviços — Acesso Rápido

API REST
api.uuba.tech
FastAPI · 14 endpoints
API Docs
developers.uuba.tech
Scalar · OpenAPI 3.1
WhatsApp
wa.uuba.tech
Evolution API v2.3.7
Chatwoot
chat.uuba.tech
Atendimento humano
n8n (empresa)
n8n.srv921702.hstgr.cloud
Automação · Hostinger
GitHub
luisbarcia/uuba-tech
Repositório privado

1 Visão Geral — Duas VPS

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.

VPS Contabo (principal — API + WhatsApp)

4
vCPUs
8 GB
RAM
145 GB
Disco (12% usado)
15
Containers
ItemValor
Hostnamevmi3095712
IP público5.189.155.226
OSUbuntu 24.04.4 LTS
Kernel6.8.0-100-generic
Acesso SSHssh root@5.189.155.226
Stack path/opt/stack/
Docker Compose/opt/stack/docker-compose.yml
Variáveis de ambiente/opt/stack/.env
TimezoneAmerica/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.

VPS Hostinger (n8n empresa)

ItemValor
n8n URLn8n.srv921702.hstgr.cloud
FunçãoWorkflows de automação da Uúba (régua, bot, integrações)
StatusAtivo

Nota: Esta VPS também hospeda outros serviços não relacionados à Uúba.

2 Domínios, DNS e SSL

DNS (gerenciado na Wix)

DomínioTipoDestinoFunção
uuba.techWix (site institucional)Site público
api.uuba.techA5.189.155.226REST API
developers.uuba.techA5.189.155.226Documentação API (Scalar)
wa.uuba.techA5.189.155.226Evolution API (WhatsApp)
chat.uuba.techA5.189.155.226Chatwoot (Atendimento)
n8n.srv921702.hstgr.cloudHostinger VPSn8n empresa (Uúba)

Certificados SSL (Let's Encrypt)

CertificadoDomíniosExpiraRenovaçã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)

3 Serviços (Containers Docker)

Todos rodam no mesmo docker-compose.yml na rede internal (bridge).

Uúba Tech (negócio)

ContainerO 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

n8n (automação — pessoal, usado para dev)

ContainerO 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

4 Rede Docker Interna

Todos os containers compartilham a rede stack_internal (172.18.0.0/16). Eles se comunicam pelo nome do container.

┌──────────────────────── stack_internal (172.18.0.0/16) ────────────────────────┐ │ │ │ ┌───────────────┐ ┌────────────────┐ ┌──────────┐ ┌───────────────────┐ │ │ │ uuba-api │ │ evolution-api │ │ n8n │ │ chatwoot-rails │ │ │ │ :8000 │ │ :8080 │ │ :5678 │ │ :3000 │ │ │ └───────┬────────┘ └───────┬─────────┘ └────┬─────┘ └────────┬──────────┘ │ │ │ │ │ │ │ │ │ ┌────────────┴──────┐ │ ┌───────────┴────────┐ │ │ │ │ redis :6379 │ │ │ chatwoot-sidekiq │ │ │ │ └───────────────────┘ │ └────────────────────┘ │ │ │ │ │ │ ┌───────┴──────────────────────────────────────┴──────────────────────────┐ │ │ │ n8n-postgres-data — pgvector/pgvector:pg16 │ │ │ │ databases: uuba | evolution | chatwoot | datastore │ │ │ └─────────────────────────────────────────────────────────────────────────┘ │ │ │ │ ┌────────────────┐ │ │ │ n8n-postgres │ + n8n-pgadmin │ │ │ (n8n interno) │ │ │ └────────────────┘ │ └────────────────────────────────────────────────────────────────────────────────┘

Comunicação entre serviços

DeParaURL interna
n8nUúba APIhttp://uuba-api:8000/api/v1/
n8nEvolution APIhttp://evolution-api:8080/
Evolution APIn8n (webhook)http://n8n:5678/webhook/evolution-webhook
Evolution APIPostgreSQLpostgresql://datauser:***@postgres-data:5432/evolution
Evolution APIRedisredis://:***@redis:6379/0
Uúba APIPostgreSQLpostgresql+asyncpg://...@postgres-data:5432/uuba
n8nPostgreSQL (interno)postgresql://n8n:***@postgres:5432/n8n
Evolution APIChatwoot (webhook)http://chatwoot-rails:3000 (integração nativa)
ChatwootPostgreSQLpostgresql://datauser:***@postgres-data:5432/chatwoot

5 Databases PostgreSQL

2 instâncias PostgreSQL 16 — uma para o n8n, outra para dados de negócio.

postgres (n8n interno)

ItemValor
Containern8n-postgres
Databasen8n
Usern8n
Porta5432 (só interno)
Volumestack_postgres_data
Usado porn8n (workflows, credentials, executions)

postgres-data (dados de negócio)

ItemValor
Containern8n-postgres-data
Userdatauser
Porta5432 interno / 127.0.0.1:5433 (local)
Volumestack_postgres_data_store
DatabaseUsado porConteúdo
datastoreDatabase padrão (vazio)
uubauuba-apiClientes, faturas, cobranças (Alembic migrations)
evolutionevolution-apiInstâncias WhatsApp, mensagens (Prisma migrations)
chatwootchatwoot-railsConversas, contatos, inbox, times (Rails migrations)

6 Nginx (Reverse Proxy)

Nginx roda diretamente no host (não em container). Faz proxy reverso para os containers.

VhostArquivoDomínioDestino
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

n8n (Cloudflare Tunnel)

O n8n da empresa (n8n.srv921702.hstgr.cloud) roda na VPS Hostinger, separado desta infra.

7 Volumes Docker

Dados persistentes de cada serviço.

VolumeContainerConteúdo
stack_postgres_datan8n-postgresDados PostgreSQL (n8n)
stack_postgres_data_storen8n-postgres-dataDados PostgreSQL (uuba + evolution)
stack_n8n_datan8nConfigurações, custom nodes
stack_evolution_instancesevolution-apiSessões WhatsApp
stack_redis_dataredisCache Redis
stack_pgadmin_datan8n-pgadminConfigurações pgAdmin
stack_chatwoot_storagechatwoot-railsUploads de arquivos e mídias

8 Variáveis de Ambiente

Arquivos de configuração com secrets.

ArquivoContémUsado 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.

9 URLs e Acessos

URLs públicas

URLServiçoAuth
api.uuba.techREST APIHeader X-API-Key
api.uuba.tech/healthHealth checkPúblico
developers.uuba.techAPI Docs (Scalar)Público
n8n.srv921702.hstgr.cloudn8n (empresa)Login (email/senha)
wa.uuba.techEvolution APIHeader apikey
wa.uuba.tech/managerEvolution ManagerAPI Key
chat.uuba.techChatwoot (Atendimento)Login (email/senha)

Acessos locais (via SSH tunnel)

PortaServiçoAcesso
127.0.0.1:5050pgAdminssh -L 5050:127.0.0.1:5050 root@5.189.155.226
127.0.0.1:5433PostgreSQL (data)ssh -L 5433:127.0.0.1:5433 root@5.189.155.226
127.0.0.1:8080uuba-api (direto)ssh -L 8080:127.0.0.1:8080 root@5.189.155.226
127.0.0.1:8085evolution-api (direto)ssh -L 8085:127.0.0.1:8085 root@5.189.155.226

10 Comandos Úteis

Status geral

ssh root@5.189.155.226 "cd /opt/stack && docker compose ps"

Logs de um serviço

ssh root@5.189.155.226 "docker logs --tail 50 uuba-api" ssh root@5.189.155.226 "docker logs --tail 50 evolution-api" ssh root@5.189.155.226 "docker logs --tail 50 n8n"

Reiniciar um serviço

ssh root@5.189.155.226 "cd /opt/stack && docker compose restart uuba-api"

Deploy da API (pull + rebuild)

ssh root@5.189.155.226 "cd /opt/stack && git -C uuba-tech pull && docker compose build --no-cache uuba-api && docker compose up -d uuba-api"

Acessar banco de dados

# Database uuba ssh root@5.189.155.226 "docker exec -it n8n-postgres-data psql -U datauser -d uuba" # Database evolution ssh root@5.189.155.226 "docker exec -it n8n-postgres-data psql -U datauser -d evolution"

Migrations

# Alembic (uuba-api) ssh root@5.189.155.226 "docker exec uuba-api alembic upgrade head"

Verificar SSL

ssh root@5.189.155.226 "certbot certificates"

Nginx

ssh root@5.189.155.226 "nginx -t && systemctl reload nginx"

Evolution API key

ssh root@5.189.155.226 "grep EVOLUTION_API_KEY /opt/stack/.env"

11 Git e Deploy

Repositório

ItemValor
GitHubgithub.com/luisbarcia/uuba-tech (privado)
Branch principalmain
Clone na VPS/opt/stack/uuba-tech/
Git remote (VPS)git@github-uuba:luisbarcia/uuba-tech.git
Deploy keySSH alias github-uuba

CI/CD (GitHub Actions)

Fluxo de deploy

Local (dev) │ │ git push origin main ▼ GitHub ──────────────── GitHub Actions (CI) │ lint + test + build │ │ ssh + git pull ▼ VPS (/opt/stack/uuba-tech/) │ │ docker compose build + up ▼ Container uuba-api (produção)

12 Workflows n8n

WorkflowIDStatusFunçã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)

Agente IA (WhatsApp Receber)

ComponenteDetalhe
LLMClaude Sonnet 4 (Anthropic) — temperatura 0.3, max 1024 tokens, retry 3x
MemóriaBuffer window por telefone (últimas 10 mensagens)
DebounceRedis (ioredis) — espera 5s, acumula mensagens do mesmo número, só processa a última
Tool: Buscar FaturasGET /api/v1/faturas?cliente_id=X&status=pendente
Tool: Buscar MétricasGET /api/v1/clientes/{id}/metricas
Tool: Registrar PromessaPATCH /api/v1/faturas/{id} (promessa_pagamento)
Tool: Registrar CobrançaPOST /api/v1/cobrancas (canal: whatsapp)
System PromptProtocolo de cobrança comportamental + regras de escalação + formatação WhatsApp
EnvioQuebra resposta em parágrafos, envia com 1.5s delay, converte Markdown → WhatsApp

Integração Evolution API + Chatwoot

ConfiguraçãoValor
InboxWhatsApp Uuba (Channel::Api, criado automaticamente)
Webhookhttps://wa.uuba.tech/chatwoot/webhook/uuba-bot
URL internahttp://chatwoot-rails:3000
signMsgtrue (mostra nome do atendente)
conversationPendingtrue (novas conversas ficam pendentes)
importMessagestrue (últimos 3 dias)
mergeBrazilContactstrue (unifica +55 com 9 dígito)
autoCreatetrue (cria contato automaticamente)

Config n8n necessária para migração

Ao migrar para a VPS Hostinger, replicar estas env vars no docker-compose do n8n:

VariávelValorMotivo
NODE_FUNCTION_ALLOW_EXTERNALioredisPermite Code nodes usarem ioredis para debounce
N8N_PUBLIC_API_DISABLEDfalseHabilita API REST para gerenciar workflows via CLI