Saltar a contenido

Catálogo de Servicios — Infra Modular

Cuadrante 03_REFERENCE — tabla técnica completa de todos los servicios de infraestructura. Para conectarte a ellos → ../02_HOW_TO/connect-to-infra.md Para entender la arquitectura → ../04_EXPLANATION/postgres-multitenancy.md

Última actualización: 2026-08-31 — Reserva Redis para Commerce


Módulo infra/core — Motor Central

Container Imagen Puerto Host Red(es) Healthcheck Volumen
timeliber-postgres postgres:17-alpine 5432 timeliber-net pg_isready cada 10s timeliber-postgres-data
timeliber-redis redis:8.8.0-alpine 6379 timeliber-net redis-cli ping cada 10s timeliber-redis-data

DNS interno: timeliber-postgres, timeliber-redis Archivo: ../../core/docker-compose.yml


Módulo infra/traefik — Proxy SSL

Container Imagen Puerto Host Red(es) Healthcheck Volumen
timeliber-traefik traefik:v3.3 80, 443 proxy-net traefik healthcheck --ping cada 10s traefik-letsencrypt

DNS interno: timeliber-traefik Restart policy: always (único servicio que nunca debe bajar) Archivo: ../../traefik/docker-compose.yml Middlewares globales: ../../traefik/config/dynamic.yml


Módulo infra/ai — Inteligencia Artificial

Container Imagen Puerto Host Red(es) Healthcheck Volumen
timeliber-qdrant qdrant/qdrant:v1.18.2 6333 timeliber-net, proxy-net GET /healthz cada 15s timeliber-qdrant-data

DNS interno: timeliber-qdrant Dominio público: qdrant.timeliber.com.co (protegido con BasicAuth + API Key) Archivo: ../../ai/docker-compose.yml


Módulo infra/whatsapp — Comunicaciones

Container Imagen Puerto Host Red(es) Healthcheck Volumen
timeliber-n8n n8nio/n8n:2.27.4 5678 timeliber-net, proxy-net GET /healthz cada 30s timeliber-n8n-data
timeliber-evolution evoapicloud/evolution-api:2.2.3 8081→8080 timeliber-net, proxy-net GET / cada 30s (usa postgres)

DNS interno: timeliber-n8n, timeliber-evolution Dominios públicos: n8n.timeliber.com.co, evolution.timeliber.com.co Archivo: ../../whatsapp/docker-compose.yml


Módulo infra/observability — Monitoreo LGTM

Container Imagen Puerto Host Red(es) Propósito
timeliber-alloy grafana/alloy:v1.17.0 4317, 4318, 12345 observability, timeliber-net Agente OTEL — recibe trazas/métricas de las apps
timeliber-loki grafana/loki:3.7.0 3100 observability Backend de logs
timeliber-tempo grafana/tempo:2.10.7 3200, 9095 observability Backend de trazas
timeliber-mimir grafana/mimir:2.17.15 9009 observability Backend de métricas
timeliber-grafana grafana/grafana:13.1.0 3001→3000 observability Dashboard unificado

Archivo: ../../observability/docker-compose.yml


Bases de datos PostgreSQL

Base de Datos Usuario Variable de contraseña App que conecta
timeliber timeliber_admin POSTGRES_PASSWORD Solo administración
travel_db travel_user TRAVEL_DB_PASSWORD apps/travel/backend
gastro_db gastro_user GASTRO_DB_PASSWORD apps/gastro/backend
main_db main_user MAIN_DB_PASSWORD apps/main/backend
finances_db finances_user FINANCES_DB_PASSWORD (módulo futuro)
foveo_db foveo_user FOVEO_DB_PASSWORD apps/foveo/backend
evolution_db evolution_user EVOLUTION_DB_PASSWORD infra/whatsapp (Evolution)
n8n_db n8n_user N8N_DB_PASSWORD infra/whatsapp (n8n)
commerce_db commerce_owner / commerce_runtime COMMERCE_DB_OWNER_PASSWORD / COMMERCE_DB_PASSWORD apps/commerce

Scripts de creación: ../../postgres/init/


Bases de datos Redis (DB 0-15)

DB # Vertical Tipo de datos
0 Travel Caché de disponibilidad y tarifas
1 Evolution API Sesiones activas de WhatsApp
2 Gastro Caché de menús y QR codes
3 Main API Sesiones de usuarios y JWT blocklist
4 Foveo Estado de análisis de visión artificial
5 AI Orchestrator Memoria a corto plazo de LangGraph
6 RAG Studio Caché de embeddings
7 (disponible) Reservado para vertical futura
8 Commerce Sesiones, estados OAuth y trabajos de integraciones
9-15 (disponibles) Reservados para verticales futuras

Middlewares de Traefik disponibles

Definidos en ../../traefik/config/dynamic.yml. Se aplican desde las labels de cualquier docker-compose.yml del monorepo.

Nombre Uso en labels Propósito
secHeaders@file traefik.http.routers.X.middlewares=secHeaders@file Headers OWASP (XSS, HSTS, Clickjacking)
commerceApiHeaders@file Router API de Commerce CSP sin contenido ni framing, HSTS y nosniff
commerceWebHeaders@file Router web de Commerce CSP same-origin y framing deshabilitado
shopifyEmbeddedHeaders@file Router de TimeLiber Connect Conserva el frame-ancestors dinámico emitido por Shopify; no añade X-Frame-Options: DENY
globalRateLimit@file ...middlewares=globalRateLimit@file Anti-DDoS: 100 req/s por IP
compress@file ...middlewares=compress@file Gzip/Brotli automático
internalBasicAuth@file ...middlewares=internalBasicAuth@file BasicAuth para servicios internos
retry@file ...middlewares=retry@file Reintento automático x3 en fallo
circuitBreaker@file ...middlewares=circuitBreaker@file Abre circuito si >30% de errores
qdrant-auth@file ...middlewares=qdrant-auth@file BasicAuth específico de Qdrant

Servicios de Sistema y Respaldo

Servicio / Timer Ejecución Propósito
timeliber-backup.timer Diario 02:00 COT Respaldo incremental y deduplicado de PostgreSQL (Restic CDC + AES-256)
timeliber-renewals.timer Diario 03:00 COT Renovaciones y cobros recurrentes de suscripciones
timeliber-alerta-disco.timer Cada hora Monitor de umbral de espacio en disco del host
timeliber-limpieza-docker.timer Semanal (Domingos 04:30 COT) Poda de imágenes y contenedores huérfanos

Referencias


Actualizado 2026-08-31. Si encuentras drift → registrar en infra/TECH_DEBT.md.