Configuración
La API de SMEISA se configura a través de variables de entorno definidas en un archivo .env ubicado en la raíz del proyecto.
Ejemplo de archivo .env
Sección titulada «Ejemplo de archivo .env»# Base de datos (PostgreSQL)DB_TYPE=postgresDB_HOST=localhostDB_PORT=5432DB_USERNAME=postgresDB_PASSWORD=tu_contraseñaDB_DATABASE=api_db
# JWTJWT_SECRET=Tu_Clave_Secreta_32_Chars_Minimo!JWT_EXPIRES_IN=1d
# AppPORT=3000NODE_ENV=developmentPuedes personalizar estas variables según tu entorno de desarrollo o producción.
Importante: seguridad de JWT_SECRET
Sección titulada «Importante: seguridad de JWT_SECRET»⚠️ ATENCIÓN: La variable
JWT_SECRETdebe tener al menos 32 caracteres.
Si se define una clave de longitud menor, la aplicación lanzará un error y no podrá iniciarse. Esto garantiza un nivel mínimo de seguridad para la generación de tokens JWT.
✅ Recomendación: Usa una cadena aleatoria y robusta, por ejemplo:
openssl rand -hex 32Recomendaciones para ambientes
Sección titulada «Recomendaciones para ambientes»Entorno de desarrollo (NODE_ENV=development)
Sección titulada «Entorno de desarrollo (NODE_ENV=development)»- Usa bases de datos locales o contenidas con Docker
- Mantén la documentación Swagger habilitada
- Usa
npm run start:devpara hot-reload y debugging - No es necesario usar HTTPS
Entorno de producción (NODE_ENV=production)
Sección titulada «Entorno de producción (NODE_ENV=production)»- Usa gestores de procesos como PM2 para estabilidad
- Usa HTTPS con certificados válidos
- Desactiva documentación Swagger pública o protégela con autenticación
- Usa variables seguras (ej.
JWT_SECRETrobusto) - Asegura que los puertos expuestos estén correctamente gestionados por firewalls o reverse proxies
Recomendaciones generales
Sección titulada «Recomendaciones generales»- Nunca subas el archivo
.enva un repositorio público - Usa herramientas como dotenv-cli o dotenv-flow si manejas múltiples entornos
- Cambiar
JWT_SECRETcon regularidad en producción - Usa
PGSSLMODE=requiresi conectas a PostgreSQL en la nube (ej. Supabase, Railway)