Saltar a contenido

Deploy VPS — Quickstart Infra

Cuadrante 02_HOW_TO — guía rápida para levantar solo la capa infra/ en un servidor. Para el runbook completo del ecosistema entero (todas las verticales) → ../../../docs/02_HOW_TO/full-deployment-vps.md.


🎯 Qué levanta esta guía

Solo los servicios stateful compartidos: - PostgreSQL 16 - Redis 7 - Qdrant (DB vectorial) - n8n (orquestación de mensajería) - Evolution API (gateway WhatsApp)

❌ No incluye Travel, Gastro, AI Orchestrator, RAG Studio, OmniCortex ni Main. Para esos → seguir el runbook maestro.


0. Pre-requisitos

  • Ubuntu 22.04+ con 4 vCPU / 8 GB RAM / 80 GB SSD
  • Docker Engine + Docker Compose v2
  • Puertos 80, 443 abiertos en el firewall (si se usa Traefik)
  • Atención Firewall de Nube: (GCP / AWS): Los puertos 80 y 443 deben estar explícitamente "Activos/Permitidos" en el firewall del proveedor de la nube.
  • Atención Cloudflare: Si usas el proxy de Cloudflare, la validación SSL (Let's Encrypt) DEBE hacerse mediante httpchallenge en infra/traefik/docker-compose.yml (TLS-ALPN es bloqueado por Cloudflare, causando Error 522).

1. Crear redes Docker compartidas

Antes de levantar contenedores, las redes deben existir:

docker network create timeliber-net
docker network create proxy-net

2. Variables de entorno

cd infra/
cp .env.example .env
# Editar .env con:
#   POSTGRES_PASSWORD, REDIS_PASSWORD, QDRANT_API_KEY,
#   N8N_ENCRYPTION_KEY, N8N_USER_MANAGEMENT_JWT_SECRET,
#   AUTHENTICATION_API_KEY (Evolution), SERVER_URL, WEBHOOK_URL

3. Levantar

docker compose up -d

Verificar:

docker compose ps                   # todos en "running"
docker compose exec postgres pg_isready -U timeliber
docker compose exec redis redis-cli -a "$REDIS_PASSWORD" ping
curl -H "api-key: $QDRANT_API_KEY" http://localhost:6333/collections

4. Inventario de puertos expuestos

Servicio Puerto host Propósito
PostgreSQL 5432 DB relacional
Redis 6379 Caché + sesiones LangGraph
Qdrant 6333 DB vectorial
n8n 5678 Webhooks WhatsApp → Orchestrator
Evolution 8081 (host) → 8080 (cont) Gateway WhatsApp

5. Bases de datos por aplicación

En un volumen nuevo (primer docker compose up), Postgres ejecuta automáticamente infra/postgres/init/*.sh — eso ya crea travel_db, gastro_db y evolution_db con su propio usuario dueño (verificado leyendo 00_travel.sh, 02_gastro.sh, 02_evolution.sh). No hace falta crearlas a mano; correr el CREATE DATABASE de nuevo sobre ellas falla porque ya existen.

omnicortex_db no tiene script de init todavía — crearla a mano si se va a levantar esa vertical:

docker compose exec postgres psql -U timeliber -c "CREATE DATABASE omnicortex_db;"

Si el volumen ya tenía datos previos (restauración de un dump, por ejemplo) y falta alguna DB, usar el patrón de creación manual documentado en full-deployment-vps.md para ese caso.


6. Próximos pasos

Una vez levantada la infra, continuar con el runbook maestro para: - Levantar cada vertical en orden de dependencias - Aplicar migraciones Alembic - Provisionar primer tenant - Configurar Traefik + TLS - Verificación end-to-end

docs/02_HOW_TO/full-deployment-vps.md.


Referencias


Actualizado 2026-05-15 — Sprint Doc-3. Esta guía es el subset de infra del runbook maestro.