--- id: "PUERTOS-SERVICIOS" title: "PUERTOS DE SERVICIOS - TRADING PLATFORM" type: "Documentation" project: "trading-platform" version: "1.0.0" updated_date: "2026-01-07" --- # PUERTOS DE SERVICIOS - TRADING PLATFORM **Documento:** Asignación de Puertos para Desarrollo y Producción **Proyecto:** Trading Platform **Fecha:** 2025-12-05 **Estado:** Activo --- ## ÍNDICE 1. [Resumen Ejecutivo](#resumen-ejecutivo) 2. [Tabla de Puertos](#tabla-de-puertos) 3. [Servicios Detallados](#servicios-detallados) 4. [Configuración por Entorno](#configuración-por-entorno) 5. [Verificación de Puertos](#verificación-de-puertos) 6. [Troubleshooting](#troubleshooting) --- ## RESUMEN EJECUTIVO Este documento centraliza la asignación de puertos para todos los servicios del proyecto Trading Platform. Los puertos están organizados por bloques funcionales para facilitar la gestión de firewall y evitar conflictos. ### Principios de Asignación - **Rango 3100-3199**: Servicios de Frontend (React/Vite) - **Rango 4000-4099**: Servicios Backend (Node.js/Express) - **Rango 5000-5099**: Servicios Python (FastAPI/AsyncIO) - **Rango 5432-5433**: PostgreSQL (principal y testing) - **Puerto 6379**: Redis (estándar) - **Rango 8000-8099**: CI/CD y herramientas externas - **Rango 9000-9099**: Monitoreo (Prometheus, Grafana) ### Archivo de Configuración Central Todos los puertos están definidos en: ``` /home/isem/workspace/projects/trading-platform/.env.ports ``` --- ## TABLA DE PUERTOS ### Servicios de Aplicación | Servicio | Puerto | Protocolo | Estado | Descripción | |----------|--------|-----------|--------|-------------| | **Frontend Web** | 3100 | HTTP | Activo | Aplicación React principal (Vite dev server) | | **Frontend Admin** | 3101 | HTTP | Reservado | Panel de administración (futuro) | | **Frontend Preview** | 4173 | HTTP | Dev | Preview de build de Vite | | **Backend API** | 4000 | HTTP | Activo | API REST principal (Express) | | **Backend WebSocket** | 4001 | WS | Activo | WebSocket para real-time updates | | **Backend Webhooks** | 4002 | HTTP | Reservado | Endpoint para webhooks externos | | **ML Engine** | 5000 | HTTP | Activo | API de predicciones (FastAPI) | | **Data Service** | 5001 | TCP | Activo | Sincronización de datos de mercado | | **LLM Agent** | 5002 | HTTP | Planeado | Asistente inteligente (FastAPI) | | **Portfolio Manager** | 5003 | HTTP | Planeado | Gestión de portafolios (FastAPI) | ### Infraestructura | Servicio | Puerto | Protocolo | Estado | Descripción | |----------|--------|-----------|--------|-------------| | **PostgreSQL** | 5432 | TCP | Activo | Base de datos principal | | **PostgreSQL Test** | 5433 | TCP | Dev | Instancia para testing | | **Redis** | 6379 | TCP | Activo | Cache y message queues | | **MySQL (Legacy)** | 3306 | TCP | Temporal | Solo para migración | ### CI/CD y Monitoreo | Servicio | Puerto | Protocolo | Estado | Descripción | |----------|--------|-----------|--------|-------------| | **Jenkins** | 8080 | HTTP | Planeado | CI/CD pipeline | | **Jenkins Agent** | 50000 | TCP | Planeado | Comunicación con agentes | | **Prometheus** | 9090 | HTTP | Opcional | Métricas del sistema | | **Grafana** | 3200 | HTTP | Opcional | Dashboards de monitoreo | ### Herramientas de Desarrollo | Servicio | Puerto | Protocolo | Estado | Descripción | |----------|--------|-----------|--------|-------------| | **PgAdmin** | 5050 | HTTP | Opcional | Administración de PostgreSQL | | **Mailhog SMTP** | 1025 | SMTP | Opcional | Testing de emails (SMTP) | | **Mailhog Web** | 8025 | HTTP | Opcional | Testing de emails (Web UI) | --- ## SERVICIOS DETALLADOS ### Frontend Services #### 1. Frontend Web (React + Vite) - **Puerto**: `3100` - **Comando Dev**: `npm run dev -- --port 3100` - **URL**: `http://localhost:3100` - **Variables de Entorno**: ```bash VITE_API_URL=http://localhost:4000/api/v1 VITE_WS_URL=ws://localhost:4001 ``` #### 2. Frontend Admin Panel (Futuro) - **Puerto**: `3101` - **Estado**: Reservado para separación de panel admin - **URL**: `http://localhost:3101` ### Backend Services #### 1. Backend API (Express) - **Puerto**: `4000` - **Archivo**: `/apps/backend/src/index.ts` - **Comando**: `npm run dev` - **Endpoints**: - API REST: `http://localhost:4000/api/v1` - Health: `http://localhost:4000/health` - Docs: `http://localhost:4000/api/v1/docs` - **Variables de Entorno**: ```bash PORT=4000 DB_PORT=5432 REDIS_PORT=6379 ML_ENGINE_URL=http://localhost:5000 ``` #### 2. WebSocket Server - **Puerto**: `4001` - **Protocolo**: WebSocket (WS/WSS) - **Uso**: Real-time charts, notifications, live prices - **Conexión**: `ws://localhost:4001` ### Python Services #### 1. ML Engine (FastAPI) - **Puerto**: `5000` - **Archivo**: `/apps/ml-engine/src/api/main.py` - **Comando**: `uvicorn src.api.main:app --host 0.0.0.0 --port 5000 --reload` - **Endpoints**: - API Docs: `http://localhost:5000/docs` - Health: `http://localhost:5000/health` - Predictions: `http://localhost:5000/predict/range` - **Modelos Servidos**: - Range Predictor (ΔHigh/ΔLow) - TP/SL Classifier - Signal Generator #### 2. Data Service (Python AsyncIO) - **Puerto**: `5001` - **Archivo**: `/apps/data-service/src/main.py` - **Comando**: `python -m src.main` - **Funciones**: - Sync de datos de Polygon.io cada 5min - Tracking de spreads desde MT4/MetaAPI - Entrenamiento de modelos de ajuste de precios - **Variables de Entorno**: ```bash POLYGON_API_KEY=your_key METAAPI_TOKEN=your_token SYNC_INTERVAL_MINUTES=5 ``` #### 3. LLM Agent API (Futuro) - **Puerto**: `5002` - **Estado**: Planeado (Módulo OQI-007) - **Función**: Asistente inteligente con Claude/GPT #### 4. Portfolio Manager (Futuro) - **Puerto**: `5003` - **Estado**: Planeado (Módulo OQI-008) - **Función**: Gestión de portafolios de inversión ### Infrastructure Services #### 1. PostgreSQL - **Puerto**: `5432` - **Estado**: ACTIVO (No cambiar) - **Conexión**: `postgresql://trading_user:password@localhost:5432/trading_data` - **Schemas**: - `users` - Usuarios y autenticación - `market_data` - Datos de mercado - `trading` - Señales y operaciones - `education` - Contenido educativo - `investment` - Cuentas de inversión - `payments` - Suscripciones y pagos - `broker_integration` - Integración con brokers #### 2. Redis - **Puerto**: `6379` - **Estado**: ACTIVO (No cambiar) - **Conexión**: `redis://localhost:6379` - **Uso**: - Session storage - Cache de queries - Message queues para jobs - Rate limiting --- ## CONFIGURACIÓN POR ENTORNO ### Desarrollo Local Crear archivo `.env` en la raíz del proyecto: ```bash # Copiar plantilla de puertos cp .env.ports .env.local # Variables de entorno específicas NODE_ENV=development POSTGRES_PASSWORD=trading_dev_2025 JWT_ACCESS_SECRET=your-secret-min-32-chars JWT_REFRESH_SECRET=your-secret-min-32-chars STRIPE_SECRET_KEY=sk_test_... POLYGON_API_KEY=your_polygon_key ``` ### Docker Compose El archivo `docker-compose.yml` usa los mismos puertos: ```bash # Iniciar todos los servicios docker-compose up -d # Iniciar con herramientas de desarrollo docker-compose --profile dev-tools up -d # Ver logs docker-compose logs -f backend # Detener docker-compose down ``` ### Producción (Jenkins) Jenkins usará los mismos puertos. Configurar en `.env.production`: ```bash NODE_ENV=production FRONTEND_WEB_PORT=3100 BACKEND_API_PORT=4000 ML_ENGINE_PORT=5000 POSTGRES_PORT=5432 REDIS_PORT=6379 ``` --- ## VERIFICACIÓN DE PUERTOS ### Comandos Útiles #### Listar puertos en uso ```bash # Todos los puertos TCP/UDP en escucha ss -tuln | grep LISTEN # Específico de un puerto ss -tuln | grep :4000 # Usando netstat (si está instalado) netstat -tuln | grep LISTEN ``` #### Verificar servicio en puerto ```bash # Verificar con curl curl http://localhost:4000/health # Verificar con telnet telnet localhost 4000 # Verificar proceso usando puerto lsof -i :4000 ``` #### Matar proceso en puerto ```bash # Encontrar PID lsof -t -i :4000 # Matar proceso kill -9 $(lsof -t -i :4000) ``` ### Script de Verificación Crear `/scripts/check-ports.sh`: ```bash #!/bin/bash echo "=== Trading Platform Port Status ===" echo "" declare -A services=( ["Frontend Web"]="3100" ["Backend API"]="4000" ["Backend WS"]="4001" ["ML Engine"]="5000" ["Data Service"]="5001" ["PostgreSQL"]="5432" ["Redis"]="6379" ) for service in "${!services[@]}"; do port=${services[$service]} if ss -tuln | grep -q ":$port "; then echo "✓ $service (port $port) - RUNNING" else echo "✗ $service (port $port) - NOT RUNNING" fi done ``` Ejecutar: ```bash chmod +x scripts/check-ports.sh ./scripts/check-ports.sh ``` --- ## TROUBLESHOOTING ### Problema: Puerto ya en uso **Síntoma**: Error `EADDRINUSE` o `Address already in use` **Solución**: ```bash # 1. Identificar proceso lsof -i :3100 # 2. Matar proceso kill -9 # 3. Usar puerto alternativo temporalmente PORT=3200 npm run dev ``` ### Problema: No se puede conectar al servicio **Verificar**: 1. Servicio está corriendo: `ss -tuln | grep :4000` 2. Firewall permite conexión: `sudo ufw status` 3. Variables de entorno correctas: `echo $BACKEND_API_PORT` 4. Logs del servicio: `docker-compose logs backend` ### Problema: CORS en desarrollo **Causa**: Frontend en puerto diferente al configurado **Solución**: Actualizar `CORS_ORIGINS` en backend `.env`: ```bash CORS_ORIGINS=http://localhost:3100,http://localhost:4173 ``` ### Problema: WebSocket no conecta **Verificar**: 1. Backend WS está corriendo en puerto 4001 2. Frontend usa `ws://` (no `wss://`) en desarrollo 3. No hay proxy inverso bloqueando WS --- ## ACTUALIZACIÓN DE PUERTOS Si necesitas cambiar un puerto: 1. **Actualizar** `/home/isem/workspace/projects/trading-platform/.env.ports` 2. **Actualizar** este documento 3. **Actualizar** `docker-compose.yml` 4. **Actualizar** archivos `.env` de cada servicio: - `/apps/backend/.env` - `/apps/frontend/.env` - `/apps/ml-engine/.env` - `/apps/data-service/.env` 5. **Reiniciar** servicios afectados 6. **Notificar** al equipo del cambio --- ## REFERENCIAS - **Archivo de puertos**: `/home/isem/workspace/projects/trading-platform/.env.ports` - **Docker Compose**: `/home/isem/workspace/projects/trading-platform/docker-compose.yml` - **Config Backend**: `/home/isem/workspace/projects/trading-platform/apps/backend/.env.example` - **Config Frontend**: `/home/isem/workspace/projects/trading-platform/apps/frontend/vite.config.ts` - **Config ML Engine**: `/home/isem/workspace/projects/trading-platform/apps/ml-engine/src/api/main.py` - **Config Data Service**: `/home/isem/workspace/projects/trading-platform/apps/data-service/src/main.py` --- **Última Actualización**: 2025-12-05 **Mantenedor**: DevEnv Agent **Contacto**: Equipo de Desarrollo Trading Platform