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
httpchallengeeninfra/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:
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
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:
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
- infra/README.md — Estructura interna de la capa infra
- infra/docs/04_EXPLANATION/networks-architecture.md — Diseño de redes Docker
- infra/docs/04_EXPLANATION/traefik-proxy.md — Proxy reverso + TLS
Actualizado 2026-05-15 — Sprint Doc-3. Esta guía es el subset de infra del runbook maestro.