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
| 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:
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