Resumen
Aplicacion web para monitorizar Raspberry Pi mediante SSH desde un contenedor dedicado. El dashboard muestra el ultimo estado calculado por el backend; el navegador no abre conexiones SSH.
Rutas
/dashboard.html: vista principal./config.html: configuracion./api/status: estado actual.
Configuracion
La configuracion persistente esta en /home/yamaray/docker/monitorRPi/data/config.json, montada dentro del contenedor como /data/config.json.
Generales
mockMode: usa datos simulados si es true.refreshIntervalSeconds: scan activo con clientes visibles.idleScanIntervalSeconds: scan lento sin clientes visibles.sshTimeoutSeconds: timeout por consulta SSH.temperatureThresholdsC: umbrales de temperatura.metricThresholdsPercent: umbrales de CPU, RAM y disco.
Dispositivos
active: incluye o excluye el dispositivo del scan.id: identificador interno unico.name: nombre visible.host: IP o DNS.port: puerto SSH.username/passwordoprivateKeyPath: credenciales SSH. Si hay clave privada configurada, tiene prioridad sobre el password.model: modelo visible.role: funcion del equipo.location: ubicacion.
Autenticacion SSH por clave privada
Por dispositivo se puede usar password o clave privada. Si privateKeyPath tiene valor, el backend usa la clave privada y no usa el password.
Clave en el contenedor
Guarda la clave privada en la RPi donde corre el monitor:
/home/yamaray/docker/monitorRPi/ssh/carabanes_monitor_ed25519
Protege permisos:
chmod 700 /home/yamaray/docker/monitorRPi/ssh
chmod 600 /home/yamaray/docker/monitorRPi/ssh/carabanes_monitor_ed25519
El compose debe montar la carpeta como solo lectura:
- /home/yamaray/docker/monitorRPi/ssh:/ssh:ro
En el configurador usa la ruta vista desde el contenedor:
password: ""
privateKeyPath: /ssh/carabanes_monitor_ed25519
Clave publica en la Raspberry destino
En el usuario SSH remoto, pega la clave publica en:
~/.ssh/authorized_keys
Comandos tipicos en la Raspberry destino:
mkdir -p ~/.ssh
chmod 700 ~/.ssh
nano ~/.ssh/authorized_keys
chmod 600 ~/.ssh/authorized_keys
El nombre correcto del archivo es authorized_keys, no authorised_keys.
Prueba manual
docker exec -it monitor-rpi ssh -i /ssh/carabanes_monitor_ed25519 -o IdentitiesOnly=yes -p 34000 pi@192.168.0.1
Si entra sin pedir password, el monitor podra usar esa clave para el scan.
API
GET /api/status
Devuelve el ultimo estado: resumen, dispositivos, umbrales, clientes activos e intervalo actual.
GET /api/config
Devuelve la configuracion completa.
POST /api/config
Guarda la configuracion completa y reinicia el ciclo de scan.
POST /api/reload
Recarga la configuracion desde disco.
POST /api/scan-now
Fuerza un scan SSH inmediato.
POST /api/client-heartbeat
Usado por el dashboard visible para activar el intervalo rapido.
POST /api/clients/clear
Limpia los clientes activos en memoria.
Escaneo Adaptativo
0 clientes visibles -> idleScanIntervalSeconds
1+ clientes visibles -> refreshIntervalSeconds
Docker
cd /home/yamaray/docker/monitorRPi
docker compose up -d --build