Migración de dispositivo (Device Migration)
1. ¿Qué es la migración?
Traslada una Unit existente de una Paid License activa desde una instalación anterior a una nueva. El dispositivo nuevo crea su propia identity y claves. No copie private keys, device.json, estado DPAPI ni Gateway identity. Trial no admite migración.
2. ¿Cuándo es necesaria?
- Sustitución del servidor
- Reinstalación del SO cuando no se pueden conservar identity y state
- Cambio de hardware que requiere una nueva device identity
Una actualización que conserva state e identity no es una migración.
3. Preparación
- Prepare Paid License ID/Key; no incluya la Key en comandos ni mensajes de soporte.
- Instale la entrega aprobada en el dispositivo nuevo y use su propio state-directory.
- Determine si el dispositivo anterior es accesible o requiere recuperación.
- No elimine ni reinicie la identity/state anterior.
Ejecute register en el dispositivo nuevo, introduzca el Device Code en el portal Native, verifique la License y seleccione traslado de Unit existente, instalación de origen y motivo. Mantenga la misma operación y state-directory.
# Windows
$state = 'C:\ProgramData\ODRE\native-commercial'
$trust = '<APPROVED_TRUST_JSON_ABSOLUTE_PATH>'
$trustPin = '<INDEPENDENT_TRUST_SHA256>'
& .\runtime\python.exe .\odre-native.py register `
--state-directory $state --trust-config $trust --trust-pin $trustPin
# Linux
state="$HOME/.local/state/odre-pqc/native-commercial"
trust='<APPROVED_TRUST_JSON_ABSOLUTE_PATH>'
trust_pin='<INDEPENDENT_TRUST_SHA256>'
python3.12 ./odre-native-ubuntu.py register \
--state-directory "$state" --trust-config "$trust" --trust-pin "$trust_pin"
4. Dispositivo anterior
Sustitución normal: detenga tráfico nuevo, pero mantenga Native activo hasta confirmar el drain. Use en el dispositivo anterior el archivo odre-device-transfer-request.json descargado del portal:
# Windows
& .\runtime\python.exe .\odre-native.py transfer-release `
--state-directory $state --trust-config $trust --trust-pin $trustPin `
--transfer-request ".\odre-device-transfer-request.json" --confirm-stop
# Linux
python3.12 ./odre-native-ubuntu.py transfer-release \
--state-directory "$state" --trust-config "$trust" --trust-pin "$trust_pin" \
--transfer-request "./odre-device-transfer-request.json" --confirm-stopNo reinicie el dispositivo anterior. Puede ser necesario esperar el vencimiento de Offline Leases.
Dispositivo inaccesible: solicite source recovery en la misma operación, confirme el consentimiento con el mismo register nuevo y espere aprobación de soporte y vencimiento de Lease.
5. Activar el dispositivo nuevo
Continúe con el mismo register y state-directory. Tras un timeout no cree otra identity u operación; repita el mismo comando. Después del commit y la validación del destino, Native guarda la Lease de forma atómica.
6. Confirmar finalización
Confirme APPLIED, almacenamiento local de Lease y status. Verifique Gateway → Core → Protected Handler y una ejecución del Handler por solicitud antes de abrir tráfico. COMMITTED no demuestra por sí solo la finalización.
7. Fallos y precauciones
LICENSE_UNIT_LIMIT: traslade una Unit o amplíe capacidad.SUPPORT_PENDING: espere consentimiento y aprobación de soporte.WAITING_OLD_LEASE: espere el vencimiento de Offline Lease.- Tras una interrupción use la misma operación y state-directory.
- No copie, elimine ni reinicie identity, private keys, state o Lease.
- No omita verificaciones ni fuerce la reactivación del dispositivo anterior.