Gestión de firmware

rud1-es te permite gestionar versiones de firmware y desplegar actualizaciones OTA (Over-The-Air) a uno o varios dispositivos de forma centralizada.

Visión general

El proceso de actualización de firmware en Rud1 sigue estos pasos:

  1. Compilas un nuevo binario del agente rud1-fw para la arquitectura objetivo (ARM64, AMD64)
  2. Subes el binario a rud1-es con un número de versión y notas de lanzamiento
  3. Creas un rollout seleccionando la versión y los dispositivos destino
  4. Los dispositivos comprueban si hay actualizaciones pendientes cada 10 minutos
  5. Al detectar una actualización, la descargan, verifican la integridad y se reinician automáticamente

💡 El proceso de actualización es atómico y seguro: el dispositivo verifica el checksum SHA256 antes de aplicar la actualización. Si el proceso falla, systemd reinicia el servicio con el binario anterior gracias a Restart=always.

Compilar un nuevo firmware

Desde el repositorio rud1-fw, usa los targets de Makefile para compilar el agente:

terminal
# Para Raspberry Pi (ARM64) - cross-compilación desde cualquier SO
make build-pi
# Binario generado en: dist/rud1-agent-linux-arm64

# Para Linux AMD64 (servidores x86_64)
make build-linux
# Binario generado en: dist/rud1-agent-linux-amd64

# En la propia Raspberry Pi (compilación nativa)
make build

Información de versión

El binario incluye información de versión inyectada en tiempo de compilación mediante-ldflags:

Makefile (referencia)
LDFLAGS := -X main.Version=v1.2.0 \
           -X main.Commit=$(shell git rev-parse --short HEAD) \
           -X main.BuildDate=$(shell date -u +%Y-%m-%dT%H:%M:%SZ)

go build -ldflags "$(LDFLAGS)" -o dist/rud1-agent-linux-arm64 ./cmd/agent

Esta información aparece en la pestaña de firmware del dispositivo en rud1-es y en los heartbeats enviados a la nube.

Subir una versión

1

Ve a la sección Firmware

En el dashboard de rud1-es, haz clic en Firmware en el menú lateral.
2

Haz clic en "Upload version"

Haz clic en el botón Upload version en la esquina superior derecha.
3

Rellena los datos de la versión

  • Versión: número de versión semántica (p.ej. 1.2.0)
  • Notas de lanzamiento: descripción de los cambios incluidos
  • Archivo: el binario compilado (rud1-agent-linux-arm64)
4

Confirma la subida

Haz clic en Upload. rud1-es almacenará el binario y calculará automáticamente el checksum SHA256 para verificar la integridad durante las actualizaciones.

Crear un rollout

1

Abre el diálogo de rollout

En la página de Firmware, haz clic en Create rollout.
2

Configura el rollout

  • Versión: selecciona la versión de firmware a desplegar
  • Nombre: nombre descriptivo del rollout (p.ej. v1.2.0 - Production rollout)
  • Destinos:
    • Todos los dispositivos: actualiza toda la flota de la organización
    • Dispositivos específicos: selecciona manualmente los dispositivos destino
  • Fecha programada (opcional): programa el rollout para una fecha/hora futura
3

Crea el rollout

Haz clic en Create. El rollout queda activo y los dispositivos lo detectarán en su próxima comprobación de firmware (máximo 10 minutos).

Proceso de actualización en el dispositivo

El agente rud1-fw comprueba si hay actualizaciones pendientes cada 10 minutos. El proceso completo es:

  1. GET /api/v1/devices/firmware/pending → comprueba si hay una actualización disponible para este dispositivo
  2. Si hay actualización: descarga el binario al directorio temporal
  3. Verifica el checksum SHA256 del archivo descargado contra el valor almacenado en rud1-es
  4. Da permisos de ejecución al binario: chmod +x
  5. Reemplaza atómicamente el binario en ejecución (rename atómico)
  6. Spawna el nuevo proceso y sale; systemd (Restart=always) gestiona el reinicio
  7. POST /api/v1/devices/firmware/ack → informa del resultado de la actualización (éxito o error)

Puedes monitorizar el progreso en rud1-es → Firmware → detalle del rollout.

Rollback

Si una actualización causa problemas, puedes revertir a la versión anterior de dos formas:

Opción 1: Crear un nuevo rollout con la versión anterior

  1. Ve a Firmware → versiones disponibles
  2. Selecciona la versión anterior que funcionaba correctamente
  3. Crea un nuevo rollout con esa versión y los dispositivos afectados

Opción 2: Rollback desde la pestaña de firmware del dispositivo

En el detalle del dispositivo → pestaña Firmware → haz clic en Rollback. rud1-es creará automáticamente un nuevo rollout con la versión anterior del dispositivo.

🚨 Una vez que un dispositivo se actualiza, el binario anterior se sobreescribe. Si no dispones de la versión anterior en rud1-es, deberás compilarla y subirla de nuevo antes de poder hacer rollback.

Estrategias de rollout recomendadas

Para entornos de producción, sigue este proceso gradual:

1. Canary deployment:

Despliega primero a 1-2 dispositivos de prueba o los menos críticos.

2. Monitorización:

Observa el estado de los dispositivos durante 24 horas. Verifica métricas, logs y estado de VPN.

3. Rollout completo:

Si todo es estable, crea un nuevo rollout para el resto de la flota.

4. Conserva versiones:

Mantén siempre la versión anterior disponible en rud1-es para poder hacer rollback rápido.