Documentacion Monitor RPi

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

Configuracion

La configuracion persistente esta en /home/yamaray/docker/monitorRPi/data/config.json, montada dentro del contenedor como /data/config.json.

Generales

Dispositivos

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