# ============================================================================= # OMNIOIL SCADA - CONFIGURACIÓN PARA AMBIENTE DOCKER (NGINX AWARE + DOCUMENTADA) # ============================================================================= # --- ORQUESTACIÓN DE COMPOSE --- CONTAINER_PREFIX=anh COMPOSE_PATH_SEPARATOR=; # Separador de archivos compose para Windows COMPOSE_FILE=docker-compose.yml;docker-compose.dev.yml # Archivos compose activos por defecto # --- BASE DE DATOS (Postgres/Timescale) --- DB_USER=adminomnioil # Usuario administrador de la DB DB_PASSWORD=admin123 # Contraseña de la DB DB_NAME=omnioil # Nombre de la base de datos principal DB_HOST=timescaledb # Host (Nombre del servicio en Docker) DB_PORT=5432 # Puerto estándar de Postgres DATABASE_URL=postgres://${DB_USER}:${DB_PASSWORD}@${DB_HOST}:${DB_PORT}/${DB_NAME} # --- CACHE (Redis) --- REDIS_PASSWORD=redisoilsecret456 # Contraseña de seguridad de Redis REDIS_URL=redis://:${REDIS_PASSWORD}@redis:6379 # Conexión interna de Docker a Redis # --- ALMACENAMIENTO (MinIO / S3) --- MINIO_USER=admin_s3 MINIO_PASSWORD=otra_clave_segura_minio # URL INTERNA de MinIO (solo accesible desde la red Docker — nunca expuesta al exterior) MINIO_INTERNAL_URL=http://${CONTAINER_PREFIX:-anh}_minio:9000 MINIO_ENDPOINT_URL=http://${CONTAINER_PREFIX:-anh}_minio:9000 MINIO_ENDPOINT=http://${CONTAINER_PREFIX:-anh}_minio:9000 MINIO_BUCKET=anh-reports # Bucket para reportes generados MINIO_ACCESS_KEY=admin_s3 # = MINIO_USER MINIO_SECRET_KEY=otra_clave_segura_minio # = MINIO_PASSWORD S3_INSTALLERS_BUCKET=omnioil-releases # Bucket exclusivo para instaladores MSI/EXE del agente # MINIO_PUBLIC_URL ya NO se usa — MinIO está detrás del backend API (no expuesto) AWS_ACCESS_KEY_ID=${MINIO_USER} AWS_SECRET_ACCESS_KEY=${MINIO_PASSWORD} AWS_REGION=us-east-1 # --- AGENTE EDGE (OTA updates) --- # Versión del agente que se distribuye. Actualizar cuando se publique nueva versión. # Ejemplo: "0.2.1" — el backend usará este valor en GET /api/edge/update-info AGENT_LATEST_VERSION=0.3.6 # URL base del backend (usada internamente para construir download_url en update-info) API_BASE_URL=https://api.omnioil.com # --- FRONTEND (Rutas vía Nginx Gateway) --- VITE_API_URL=http://api.omnioil.app # URL del API unificada por Nginx VITE_API_BASE=/api # Prefijo de ruta para la API VITE_ADMIN_APP_ORIGIN=http://app.omnioil.app # Subdominio de Administración en Nginx VITE_MOBILE_APP_ORIGIN=http://mobile.omnioil.app # Subdominio de la PWA en Nginx INVITATION_BASE_URL=https://app.omnioil.app # Base pública para links /activate de solicitudes aprobadas # --- EMAIL SMTP (alertas y aprobación/activación de solicitudes) --- SMTP_HOST=smtp.tu-proveedor.com # Host SMTP de producción SMTP_PORT=587 # Puerto SMTP del proveedor (587 STARTTLS o 465 TLS) SMTP_USER=notificaciones@omnioil.app # Usuario SMTP de envío SMTP_PASS= # Secreto SMTP; cargar desde Dokploy/secrets, no versionar valor real SMTP_FROM=notificaciones@omnioil.app # Remitente para alertas y correos de activación # --- MENSAJERÍA (Mosquitto / MQTT) --- MQTT_HOST=mosquitto # Host del broker interno (servicio Docker) MQTT_PORT=1883 # Puerto estándar (TCP) interno MQTT_USER=omnioil_admin # Usuario para el broker MQTT MQTT_PASSWORD=admin123 # Contraseña para el broker MQTT MOSQUITTO_GO_AUTH=true # Habilita autenticación vía base de datos en Mosquitto # --- SEGURIDAD Y TÚNELES --- JWT_SECRET=llave_maestra_para_tokens_api # Secreto para firmar tokens de sesión TOTP_SECRET_ENCRYPTION_KEY=zOTp9/NjvLR9XX7NU0+/00M7AVvomLHhf5kQSnj0Z7s= # Base64 de 32 bytes para cifrar secretos TOTP OMNIOIL_MASTER_SECRET=redisoilsecret456 # Secreto maestro para encriptación de datos sensibles ALLOWED_ORIGINS=http://app.omnioil.app,http://mobile.omnioil.app,https://console.omnioil.app # Orígenes permitidos (Subdominios Nginx) VITE_CONSOLE_APP_ORIGIN=https://console.omnioil.app VITE_LANDING_APP_ORIGIN=https://omnioil.app/ NEXT_PUBLIC_TURNSTILE_SITE_KEY=your_turnstile_site_key VITE_TURNSTILE_SITE_KEY=0x4AAAAAAA # Clave de sitio Turnstile (pública) TURNSTILE_SECRET_KEY=0x4AAAAAAABBBBBBBBBBBBBBBBBBBBBBBB # Clave secreta Turnstile (backend) TUNNEL_SECRET_TOKEN=default_tunnel_secret_123 # Token de validación para Nginx Gatekeeper # --- ORQUESTACIÓN Y REGISTRY --- DOCKER_REGISTRY_URL=docker-registry:5000 # Registro accesible entre contenedores EXTERNAL_REGISTRY_URL=localhost:5000 # Registro que verá el agente desde fuera BACKEND_API_URL=http://backend-api:8000 # Comunicación interna directa entre contenedores # --- CONFIGURACIÓN INYECTADA A AGENTES EDGE --- MQTT_PUBLIC_HOST=omnioil.app # IP o Dominio del servidor que verá el agente remoto MQTT_PUBLIC_PORT=9883 # Puerto MQTT (WebSockets) que verá el agente MQTT_USE_WS=true # Indica al agente que debe usar WebSockets # --- CONTROL DE PROCESOS --- RUN_ON_STARTUP=false # Si es true, el generador de reportes corre al iniciar # --- VOLUMENES Y PERSISTENCIA --- TIMESCALEDB_DATA=timescaledb_data # Volumen para datos de Postgres REDIS_DATA=redis_data # Volumen para persistencia de Redis MINIO_DATA=minio_data # Volumen para archivos en MinIO MOSQUITTO_DATA=mosquitto_data # Volumen para persistencia de MQTT MOSQUITTO_LOG=mosquitto_log # Volumen para logs de MQTT REGISTRY_DATA=registry_data # Volumen para las imágenes del Docker Registry INSTALLER_INCOMING=./.docker/installer_incoming # Carpeta host donde se inyectan los .exe INSTALLER_OUTPUT=./.docker/installer_output # Carpeta host donde se generan los .msi # --- RESPALDOS EN LA NUBE (Cloudflare R2 / S3) --- R2_ENDPOINT=https://.r2.cloudflarestorage.com # URL del endpoint de Cloudflare R2 R2_BUCKET=omnioil-backups # Nombre del bucket en R2 R2_ACCESS_KEY_ID= # ID de clave de acceso de Cloudflare R2 R2_SECRET_ACCESS_KEY= # Clave de acceso secreta de Cloudflare R2 # Monitoring GRAFANA_USER=admin GRAFANA_PASSWORD=omnioil_grafana_2024