Panel local

rud1-app es el panel web local que se sirve desde la propia Raspberry Pi, permitiéndote monitorizar y gestionar el dispositivo sin necesidad de conexión a internet.

¿Qué es rud1-app?

rud1-app es una aplicación web estática (React/Vite) que se sirve directamente desde el dispositivo, normalmente en el puerto 80 mediante nginx. Se comunica directamente con el agente rud1-fw a través de su API local en el puerto 7070.

Funcionalidades principales:

  • Estado del dispositivo (ONLINE, PROVISIONING, OFFLINE) y código de registro
  • Métricas en tiempo real: CPU, memoria, temperatura, disco
  • Estado de la red e interfaces de red
  • Estado y control de la VPN WireGuard
  • Listado de dispositivos USB conectados
  • Acceso rápido al dashboard de rud1-es en la nube

ℹ️ rud1-app funciona completamente en red local. No envía ningún dato a la nube por sí mismo; toda la comunicación con rud1-es la gestiona el agente rud1-fw.

Acceder al panel local

MétodoURLRequisito
IP directahttp://192.168.x.xMisma red local que el dispositivo
mDNS (si configurado)http://rud1.localmDNS habilitado en tu router/OS
Puerto alternativohttp://192.168.x.x:80Puerto 80 por defecto

💡 Para encontrar la IP de tu Raspberry Pi, puedes usar nmap -sn 192.168.1.0/24 desde otro equipo en la misma red, o consultar el listado de clientes DHCP de tu router.

Secciones del panel

Panel principal (/)

La pantalla principal muestra un resumen completo del estado del dispositivo:

  • Hostname, plataforma y versión del agente
  • Badge de estado (ONLINE / PROVISIONING / OFFLINE)
  • Código de registro para vincular el dispositivo con rud1-es
  • Indicador de registro en la nube
  • Gráficas de CPU, memoria, temperatura y disco
  • Resumen de VPN y red

Red (/network)

  • Estado de conectividad a internet
  • Listado de todas las interfaces de red con sus direcciones IP
  • Gateway y servidores DNS

VPN (/vpn)

  • Indicador grande de estado VPN (Conectada / Desconectada)
  • Interfaz, dirección IP, endpoint, AllowedIPs, DNS y clave pública
  • Botón "Reconectar" para reiniciar la conexión WireGuard

USB (/usb)

  • Listado de dispositivos USB conectados (Bus ID, Vendor/Product IDs, nombres, número de serie)
  • Botón de actualización manual

Registros (/logs)

Enlace directo al dashboard de rud1-es en la nube para consultar los logs detallados del dispositivo.

Configuración (/settings)

  • Rutas de los archivos de configuración del agente
  • Instrucciones para actualizar la configuración
  • Enlace al dashboard de rud1-es

Instalar rud1-app en el dispositivo

rud1-app se puede instalar de varias formas. La recomendada para producción es usar nginx para servir los archivos estáticos compilados.

Opción 1: Compilar e instalar con nginx (recomendado)

terminal
# En la Raspberry Pi
cd /opt
git clone https://github.com/rud1-es/rud1-app
cd rud1-app
npm install
npm run build

# Instalar nginx
sudo apt install nginx -y

# Copiar archivos compilados al directorio de nginx
sudo cp -r dist/* /var/www/html/

# Reiniciar nginx
sudo systemctl restart nginx
sudo systemctl enable nginx

Opción 2: Servidor estático simple (desarrollo/pruebas)

terminal
# Desde el directorio de rud1-app, después de compilar:
npm run preview  # Preview en modo desarrollo

# O con serve (requiere root para puerto 80):
sudo npx serve -s dist -l 80

Configurar nginx (recomendado)

Para una instalación más robusta, crea un archivo de configuración de nginx específico para rud1-app:

/etc/nginx/sites-available/rud1-app
server {
    listen 80;
    server_name _;
    root /opt/rud1-app/dist;
    index index.html;

    # Necesario para React Router (SPA)
    location / {
        try_files $uri $uri/ /index.html;
    }

    # Cache para assets estáticos
    location /assets/ {
        expires 1y;
        add_header Cache-Control "public, immutable";
    }

    # No cachear el index.html
    location = /index.html {
        add_header Cache-Control "no-cache";
    }
}
terminal
# Activar la configuración
sudo ln -s /etc/nginx/sites-available/rud1-app /etc/nginx/sites-enabled/
sudo rm /etc/nginx/sites-enabled/default  # Elimina la config por defecto si existe
sudo nginx -t                              # Verifica la sintaxis
sudo systemctl reload nginx

⚠️ rud1-app necesita poder comunicarse con el agente rud1-fw en http://localhost:7070. Si el agente está configurado con server.host: 127.0.0.1 (por defecto), rud1-app debe estar servido desde el mismo dispositivo. Si sirves rud1-app desde otro equipo, deberás cambiar server.host a 0.0.0.0 y configurar el endpoint de la API en rud1-app.