MONITOR SÍSMICO MUNDIAL v2.3.1 — INSTALACIÓN EN AMAZON (AWS EC2, LINUX) ========================================================================= Tiempo total: unos 45 minutos (20 de AWS + 25 de instalación automática). Lo que necesitas: cuenta de AWS con tarjeta registrada y una PC con Windows 10/11. --------------------------------------------------------------------------- PARTE 1 — CREAR EL SERVIDOR EN AWS (consola web: https://console.aws.amazon.com) --------------------------------------------------------------------------- 1. Elige la región (arriba a la derecha). Recomendada: "US East (N. Virginia) us-east-1" (la más barata). Alternativa: "Mexico (Central) mx-central-1" (un poco más cara). Para el monitor casi no importa: los datos llegan de servidores de todo el mundo. 2. Busca "EC2" → botón naranja "Launch instance" (Lanzar instancia). 3. Name (nombre): monitor-sismico-mundial 4. Application and OS Images: Ubuntu → "Ubuntu Server 24.04 LTS (HVM), SSD Volume Type", 64-bit (x86). 5. Instance type (tamaño): Recomendado ....... m7i-flex.xlarge (4 vCPU, 16 GB) aprox. US$140/mes Mínimo ............ m7i-flex.large (2 vCPU, 8 GB) aprox. US$70/mes Con la IA (PhaseNet) activada usa el recomendado. Evita t2/t3/t4g: bajan de velocidad si trabajan sin parar, y el monitor procesa 24/7. (Precios aproximados en us-east-1; confírmalos en https://calculator.aws) 6. Key pair (llave de acceso): "Create new key pair" Nombre: monitor-sismico Tipo: RSA Formato: .pem Se descarga monitor-sismico.pem. GUÁRDALA BIEN: sin ella no puedes entrar al servidor. Muévela a C:\Users\TU_USUARIO\.ssh\monitor-sismico.pem 7. Network settings → "Edit" → Firewall (security groups) → "Create security group" Nombre: monitor-sismico-sg Regla 1: SSH puerto 22 Source: "My IP" (solo tu IP actual puede administrar) Regla 2: HTTPS puerto 443 Source: "Anywhere" (el panel; protegido con contraseña) Regla 3: HTTP puerto 80 Source: "Anywhere" (solo redirige a HTTPS) Regla 4: DataLink puerto 16000 Source: "Anywhere" (ingesta SIDESIS Android Red SS, Modo B miniSEED) Regla 5: TCP Raw puerto 16001 Source: "Anywhere" (ingesta SIDESIS Android Red SS, Modo A puente) NO abras el puerto 8767. El panel queda detrás de HTTPS con contraseña. Si quieres que el panel lo vea SOLO tu oficina, en las reglas 2 y 3 pon "My IP". La salida (outbound) déjala como viene: "All traffic". El monitor necesita salir al puerto 18000. 8. Configure storage: 40 GiB, tipo gp3. 9. "Launch instance". Espera 1–2 minutos a que diga "Running". 10. IP fija (Elastic IP), para que la dirección del panel no cambie al reiniciar: EC2 → Network & Security → Elastic IPs → "Allocate Elastic IP address" → Allocate → selecciónala → Actions → "Associate Elastic IP address" → Instance: monitor-sismico-mundial → Associate. Anota esa IP (ejemplo: 54.210.12.34). Es la dirección de tu servidor. (Cuesta unos US$3.60/mes.) 11. Alerta de gasto (muy recomendado): Busca "Budgets" → Create budget → "Monthly cost budget" → monto, por ejemplo US$160 → tu correo. AWS te avisa si el gasto se acerca a ese monto. --------------------------------------------------------------------------- PARTE 2 — SUBIR E INSTALAR EL MONITOR (desde tu PC con Windows) --------------------------------------------------------------------------- Abre PowerShell (menú Inicio → escribe "PowerShell"). 1. Permisos de la llave (solo la primera vez; si no, Windows no deja usarla): icacls $env:USERPROFILE\.ssh\monitor-sismico.pem /inheritance:r /grant:r "$($env:USERNAME):R" 2. Sube el paquete (cambia 54.210.12.34 por TU IP y la ruta donde tengas el zip): scp -i $env:USERPROFILE\.ssh\monitor-sismico.pem C:\Users\TU_USUARIO\Downloads\Monitor_Mundial_Linux_v2.3.1.zip ubuntu@54.210.12.34:~ La primera vez pregunta "Are you sure you want to continue connecting?": escribe yes 3. Entra al servidor: ssh -i $env:USERPROFILE\.ssh\monitor-sismico.pem ubuntu@54.210.12.34 4. Ya dentro del servidor (verás algo como ubuntu@ip-172-...:~$ ), copia estos comandos: sudo apt-get update && sudo apt-get install -y unzip unzip Monitor_Mundial_Linux_v2.3.1.zip cd Monitor_Mundial_Linux_v2.3.1 sudo bash instalar_linux.sh Opciones: sudo bash instalar_linux.sh --ia (también instala la IA PhaseNet) sudo bash instalar_linux.sh --sin-prueba (omite la prueba de 9 minutos) 5. Durante la instalación te pedirá el USUARIO y la CONTRASEÑA del panel (mínimo 10 caracteres). Anótalos. La prueba sintética debe terminar con: "RESULTADO: CORRECTO — el motor mundial funciona" 6. Al final verás: Servicio: FUNCIONANDO Panel: https://54.210.12.34/ --------------------------------------------------------------------------- PARTE 3 — ENTRAR AL PANEL --------------------------------------------------------------------------- Abre en cualquier navegador (PC o celular): https://TU_IP/ - La primera vez el navegador avisa que la conexión "no es privada". Es normal: el certificado lo generó tu propio servidor. Elige "Configuración avanzada" → "Continuar a ...". La conexión sí va cifrada. - Escribe el usuario y la contraseña del paso 2.5. - Dale 5–10 minutos para que las más de 850 estaciones se conecten de forma escalonada (por 8 zonas geográficas) y el panel se llene sin saturar la red ni la memoria. Puedes ver el avance en el apartado de salud del panel o con monitor log Si después quieres una dirección con nombre (ejemplo monitor.industrialesmacoi.com.mx) y certificado sin aviso, crea en tu DNS un registro A apuntando a la Elastic IP y ejecuta en el servidor: sudo apt-get install -y certbot python3-certbot-nginx sudo certbot --nginx -d monitor.tudominio.com.mx --------------------------------------------------------------------------- PARTE 4 — ALERTAS (IMPORTANTE: el servidor no tiene bocinas) --------------------------------------------------------------------------- Las alarmas sonoras no se oyen en un servidor. Activa Telegram o correo: monitor config Se abre config.json en el editor. En "alertas" → "telegram": pon "activo": true, tu "token" y "chat_id" (o en "correo" tus datos SMTP). Guarda con Ctrl+O, Enter, y sal con Ctrl+X. El comando revisa que el archivo esté bien y reinicia el monitor. Luego, en el panel, usa «Probar alertas». --------------------------------------------------------------------------- COMANDOS DEL DÍA A DÍA (dentro del servidor, después de entrar con ssh) --------------------------------------------------------------------------- monitor estado ¿está funcionando? + memoria y disco monitor log registro en vivo (Ctrl+C para salir) monitor reiniciar reinicia el monitor monitor config edita config.json y reinicia monitor contrasena cambia la contraseña del panel monitor prueba repite la prueba sintética monitor respaldo respaldo de config.json + datos exit salir del servidor (el monitor sigue funcionando) El monitor opera como servicio systemd 24/7 (monitor-mundial.service); arranca solo al encender el servidor y se reinicia automáticamente si falla. Incluye control de colas preventivo (cola de 3,000 paquetes y descarte de paquetes > 45 s) para evitar saturación de memoria en la nube. El botón "Reiniciar monitor" del panel funciona igual que en Windows. ACTUALIZAR a una versión nueva: sube el nuevo zip, descomprímelo y vuelve a ejecutar sudo bash instalar_linux.sh Conserva tu config.json, tus datos, la contraseña del panel y el entorno de Python. --------------------------------------------------------------------------- SI ALGO FALLA --------------------------------------------------------------------------- - "Permission denied (publickey)": revisa la ruta de la llave .pem y que el usuario sea ubuntu - ssh no conecta: tu IP cambió. En EC2 → Security Groups → monitor-sismico-sg → regla SSH → "My IP" otra vez. - El panel no abre: revisa que las reglas 443/80 estén en el security group, y ejecuta monitor estado - Sin estaciones conectadas: ejecuta monitor log y busca líneas "SeedLink ... conectado". - Memoria llena (monitor estado muestra poca "available"): cambia a una instancia mayor (EC2 → Instance state → Stop → Actions → Instance settings → Change instance type → Start). APAGAR para no pagar: EC2 → Instance state → "Stop" (el disco y la IP siguen cobrando poco). BORRAR todo: "Terminate" la instancia y "Release" la Elastic IP.