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:
- Compilas un nuevo binario del agente rud1-fw para la arquitectura objetivo (ARM64, AMD64)
- Subes el binario a rud1-es con un número de versión y notas de lanzamiento
- Creas un rollout seleccionando la versión y los dispositivos destino
- Los dispositivos comprueban si hay actualizaciones pendientes cada 10 minutos
- 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:
# 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:
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/agentEsta 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
Ve a la sección Firmware
Haz clic en "Upload version"
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)
Confirma la subida
Crear un rollout
Abre el diálogo de rollout
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
Crea el rollout
Proceso de actualización en el dispositivo
El agente rud1-fw comprueba si hay actualizaciones pendientes cada 10 minutos. El proceso completo es:
GET /api/v1/devices/firmware/pending→ comprueba si hay una actualización disponible para este dispositivo- Si hay actualización: descarga el binario al directorio temporal
- Verifica el checksum SHA256 del archivo descargado contra el valor almacenado en rud1-es
- Da permisos de ejecución al binario:
chmod +x - Reemplaza atómicamente el binario en ejecución (rename atómico)
- Spawna el nuevo proceso y sale; systemd (
Restart=always) gestiona el reinicio 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
- Ve a Firmware → versiones disponibles
- Selecciona la versión anterior que funcionaba correctamente
- 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.