Saltar a contenido

Variables de Entorno

Configuración del middleware mediante variables de entorno.

Archivo .env

# Copiar plantilla
cp .env.example .env

# Editar
vim .env

Variables Disponibles

SQL Server - TANGO

# Tango producción
MSSQL_SERVER=192.168.0.50
MSSQL_PORT=1433
MSSQL_DATABASE=RODAMAR_SRL
MSSQL_USER=webgit
MSSQL_PASSWORD=MiPassword123
Variable Descripción Default
MSSQL_SERVER IP o hostname del servidor localhost
MSSQL_PORT Puerto SQL Server 1433
MSSQL_DATABASE Nombre de la base de datos tango
MSSQL_USER Usuario sa
MSSQL_PASSWORD Contraseña (vacío)

SQL Server - Desarrollo - TANGO

# Tango desarrollo
MSSQL_DEVELOPMENT_SERVER=192.168.0.51
MSSQL_DEVELOPMENT_PORT=1433
MSSQL_DEVELOPMENT_DATABASE=RODAMAR_DEV
MSSQL_DEVELOPMENT_USER=webgit
MSSQL_DEVELOPMENT_PASSWORD=MiPassword123
Variable Descripción Default
MSSQL_DEVELOPMENT_SERVER IP o hostname del servidor de desarrollo
MSSQL_DEVELOPMENT_PORT Puerto SQL Server 1433
MSSQL_DEVELOPMENT_DATABASE Nombre de la base de datos de desarrollo tango_dev
MSSQL_DEVELOPMENT_USER Usuario de desarrollo
MSSQL_DEVELOPMENT_PASSWORD Contraseña de desarrollo (vacío)

MYSQL backup - Hash

# MySQL (backup hashes)
MYSQL_HOST=192.168.0.202
MYSQL_PORT=3306
MYSQL_DATABASE=erp_sync
MYSQL_USER=root
MYSQL_PASSWORD=mipassword123
Variable Descripción Default
MYSQL_HOST IP o hostname del servidor MySQL localhost
MYSQL_PORT Puerto MySQL 3306
MYSQL_DATABASE Nombre de la base de datos erp_sync
MYSQL_USER Usuario MySQL root
MYSQL_PASSWORD Contraseña MySQL (vacío)

Necesario para almacenar hashes de sincronización y evitar duplicados. Ante cualquier reinicio del middleware o Redis, se pierde el estado de sincronización. Al tener un backup en MySQL, se puede restaurar el estado previo y evitar resincronizaciones masivas.

Redis

REDIS_HOST=192.168.0.50
REDIS_PORT=6379
REDIS_PASSWORD=
Variable Descripción Default
REDIS_HOST IP o hostname de Redis localhost
REDIS_PORT Puerto 6379
REDIS_PASSWORD Contraseña (si tiene auth) (vacío)

WMS API - Producción

WMS_API_URL=http://192.168.0.50:8888
WMS_API_KEY=mi-api-key-produccion
Variable Descripción
WMS_API_URL URL base del WMS
WMS_API_KEY API Key para autenticación

WMS API - Desarrollo

WMS_DEV_API_URL=http://192.168.0.51:8888
WMS_DEV_API_KEY=mi-api-key-desarrollo
Variable Descripción
WMS_DEV_API_URL URL base del WMS de desarrollo
WMS_DEV_API_KEY API Key para autenticación en desarrollo

MySQL Web - Producción

WEB_MYSQL_HOST=192.168.0.202
WEB_MYSQL_PORT=3306
WEB_MYSQL_DATABASE=htx_rodamar
WEB_MYSQL_USER=root
WEB_MYSQL_PASSWORD=genus2041
Variable Descripción Default
WEB_MYSQL_HOST IP o hostname localhost
WEB_MYSQL_PORT Puerto 3306
WEB_MYSQL_DATABASE Base de datos tienda
WEB_MYSQL_USER Usuario root
WEB_MYSQL_PASSWORD Contraseña (vacío)

MySQL - Desarrollo

MYSQL_DEVELOPMENT_HOST=192.168.0.203
MYSQL_DEVELOPMENT_PORT=3306
MYSQL_DEVELOPMENT_DATABASE=htx_rodamar_dev
MYSQL_DEVELOPMENT_USER=root
MYSQL_DEVELOPMENT_PASSWORD=genus2041
Variable Descripción Default
MYSQL_DEVELOPMENT_HOST IP o hostname localhost
MYSQL_DEVELOPMENT_PORT Puerto 3306
MYSQL_DEVELOPMENT_DATABASE Base de datos tienda_dev
MYSQL_DEVELOPMENT_USER Usuario root
MYSQL_DEVELOPMENT_PASSWORD Contraseña (vacío)

SQL SERVER - Transcaden BAS

BAS_TRANSCADEN_SERVER=192.168.0.50
BAS_TRANSCADEN_PORT=1433
BAS_TRANSCADEN_DATABASE=TRANSC
BAS_TRANSCADEN_USER=Automata
BAS_TRANSCADEN_PASSWORD=MiPassword123
Variable Descripción Default
BAS_TRANSCADEN_SERVER IP o hostname del servidor localhost
BAS_TRANSCADEN_PORT Puerto SQL Server 1433
BAS_TRANSCADEN_DATABASE Nombre de la base de datos transc
BAS_TRANSCADEN_USER Usuario sa
BAS_TRANSCADEN_PASSWORD Contraseña (vacío)

MySQL - Transcaden

MYSQL_TRANSCADEN_HOST=192.168.0.202
MYSQL_TRANSCADEN_PORT=3306
MYSQL_TRANSCADEN_DATABASE=htx_transcaden
MYSQL_TRANSCADEN_USER=root
MYSQL_TRANSCADEN_PASSWORD=genus2041
Variable Descripción Default
MYSQL_TRANSCADEN_HOST IP o hostname localhost
MYSQL_TRANSCADEN_PORT Puerto 3306
MYSQL_TRANSCADEN_DATABASE Base de datos transcaden
MYSQL_TRANSCADEN_USER Usuario root
MYSQL_TRANSCADEN_PASSWORD Contraseña (vacío)

Sync

SYNC_WORKERS=4
LOG_LEVEL=info
Variable Descripción Default Valores
SYNC_WORKERS Concurrencia del worker 4 1-1000
LOG_LEVEL Nivel de log info trace, debug, info, warn, error

Node

NODE_ENV=production
Variable Descripción Valores
NODE_ENV Ambiente development, production

Ejemplo Completo

# ============================================
# SQL Server - Tango Producción (Lectura)
# ============================================
MSSQL_SERVER=192.168.0.50
MSSQL_PORT=1433
MSSQL_DATABASE=RODAMAR_SRL
MSSQL_USER=webgit
MSSQL_PASSWORD=Mayoverde2024

# ============================================
# SQL Server - Tango Desarrollo (Lectura)
# ============================================
MSSQL_DEVELOPMENT_SERVER=192.168.0.51
MSSQL_DEVELOPMENT_PORT=1433
MSSQL_DEVELOPMENT_DATABASE=RODAMAR_DEV
MSSQL_DEVELOPMENT_USER=webgit
MSSQL_DEVELOPMENT_PASSWORD=Mayoverde2024

# ============================================
# SQL Server - Tango (Escritura)
# ============================================
MSSQL_SERVER_SAVE=192.168.0.50
MSSQL_PORT_SAVE=1433
MSSQL_DATABASE_SAVE=RODAMAR_SRL
MSSQL_USER_SAVE=webgit
MSSQL_PASSWORD_SAVE=Mayoverde2024

# ============================================
# Redis
# ============================================
REDIS_HOST=192.168.0.50
REDIS_PORT=6379
REDIS_PASSWORD=

# ============================================
# WMS API - Producción
# ============================================
WMS_API_URL=http://192.168.0.50:8888
WMS_API_KEY=testkey

# ============================================
# WMS API - Desarrollo
# ============================================
WMS_DEVELOPMENT_API_URL=http://192.168.0.51:8888
WMS_DEVELOPMENT_API_KEY=testkey

# ============================================
# MySQL Web - Producción
# ============================================
WEB_MYSQL_HOST=192.168.0.202
WEB_MYSQL_PORT=3306
WEB_MYSQL_DATABASE=htx_rodamar
WEB_MYSQL_USER=root
WEB_MYSQL_PASSWORD=genus2041

# ============================================
# MySQL - Desarrollo
# ============================================
MYSQL_DEVELOPMENT_HOST=192.168.0.203
MYSQL_DEVELOPMENT_PORT=3306
MYSQL_DEVELOPMENT_DATABASE=htx_rodamar_dev
MYSQL_DEVELOPMENT_USER=root
MYSQL_DEVELOPMENT_PASSWORD=genus2041

# ============================================
# SQL SERVER - Transcaden BAS
# ============================================
BAS_TRANSCADEN_SERVER=192.168.0.204
BAS_TRANSCADEN_PORT=1433
BAS_TRANSCADEN_DATABASE=TRANSC
BAS_TRANSCADEN_USER=Automata
BAS_TRANSCADEN_PASSWORD=MiPassword123

# ============================================
# MySQL - Transcaden
# ============================================
MYSQL_TRANSCADEN_HOST=192.168.0.202
MYSQL_TRANSCADEN_PORT=3306
MYSQL_TRANSCADEN_DATABASE=htx_transcaden
MYSQL_TRANSCADEN_USER=root
MYSQL_TRANSCADEN_PASSWORD=genus2041

# ============================================
# Sync Config
# ============================================
SYNC_WORKERS=4
LOG_LEVEL=info

# ============================================
# Node
# ============================================
NODE_ENV=production

Diagrama de Conexiones

flowchart TB
    subgraph Middleware
        SYNC[erp-wms-sync]
    end

    subgraph Producción
        MSSQL_PROD[(SQL Server<br/>192.168.0.50)]
        WMS_PROD[WMS API<br/>:8888]
        MYSQL_PROD[(MySQL Web<br/>192.168.0.202)]
        MYSQL_TRANSCADEN[(MySQL Transcaden<br/>192.168.0.202)]
        BAS_TRANSCADEN[(SQL Server BAS<br/>192.168.0.204)]
    end

    subgraph Desarrollo
        MSSQL_DEV[(SQL Server Dev<br/>192.168.0.51)]
        WMS_DEV[WMS Dev<br/>:8888]
        MYSQL_DEV[(MySQL Dev<br/>192.168.0.203)]
    end

    subgraph Infraestructura
        REDIS[(Redis<br/>192.168.0.50)]
        MYSQL_BACKUP[(MySQL Backup<br/>192.168.0.204)]
    end

    SYNC --> MSSQL_PROD
    SYNC --> MSSQL_DEV
    SYNC --> WMS_PROD
    SYNC --> WMS_DEV
    SYNC --> MYSQL_PROD
    SYNC --> MYSQL_DEV
    SYNC --> REDIS

Validación

El middleware valida las conexiones al iniciar:

INFO  MSSQL source connected { server: "192.168.0.50", database: "RODAMAR_SRL" }
INFO  MSSQL source connected { server: "192.168.0.51", database: "RODAMAR_DEV" }
INFO  HTTP source ready { baseUrl: "http://192.168.0.50:8888" }
INFO  HTTP adapter ready { baseUrl: "http://192.168.0.50:8888" }
INFO  MySQL adapter connected { host: "192.168.0.202", database: "htx_rodamar" }
INFO  Redis connected { host: "192.168.0.50" }

Seguridad

No commitear .env

El archivo .env contiene credenciales sensibles. Asegurar que está en .gitignore.

# .gitignore
.env
.env.local
.env.*.local

Variables en Docker

Con --env-file:

docker run --env-file .env ...

O variables individuales:

docker run \
  -e MSSQL_SERVER=192.168.0.50 \
  -e REDIS_HOST=redis \
  ...

Troubleshooting

Variable no definida

Error: MSSQL_PASSWORD is not defined

Verificar que la variable existe en .env:

grep MSSQL_PASSWORD .env

Conexión rechazada

Error: connect ECONNREFUSED 192.168.0.50:1433
  • Verificar que el servicio está corriendo
  • Verificar firewall
  • Verificar que la IP es correcta

Autenticación fallida

Error: Login failed for user 'webgit'
  • Verificar usuario y contraseña
  • Verificar permisos en la base de datos