# Recuperación desde cero y alta en una sola ejecución Los releases entregan dos ZIP independientes. Cada uno contiene sus binarios, scripts, instalador offline requerido y un manifiesto SHA-256 interno. No contienen contraseñas, claves privadas ni certificados reutilizables. > Importante: reconstruir un bosque con el mismo nombre DNS **no** restaura el > bosque anterior. Cambia el SID del dominio. Los equipos unidos al bosque viejo > deberán borrarse/reinstalarse o salir de aquel dominio y unirse al nuevo. Para > conservar cuentas, SID, contraseñas y relaciones de confianza se necesita una > copia de estado del sistema de Active Directory y un procedimiento de > recuperación de bosque, no este bootstrap. ## Windows Server nuevo Compatible con Windows Server con Windows PowerShell 5.1. El servidor necesita una interfaz privada para el dominio y, para autenticar contra SGU, salida HTTPS por esa u otra interfaz. 1. Descargar y extraer `sgu-server-bootstrap-VERSION.zip`. 2. Abrir el directorio extraído. 3. Ejecutar, indicando la IP fija que tendrá el controlador: ```bat Start-SguServerBootstrap.cmd 192.168.50.10 ``` El iniciador solicita elevación UAC. El script pide una contraseña de Directory Services Restore Mode sin guardarla, instala AD DS/DNS/GPMC, crea el bosque y reinicia una vez. Un trabajo local bajo `SYSTEM` continúa automáticamente un minuto después del arranque; no hace falta ejecutar un segundo comando. Cuando hay más de una interfaz candidata, o se necesita gateway/prefijo/forwarders explícitos, usar Windows PowerShell elevado: ```powershell powershell.exe -NoProfile -ExecutionPolicy Bypass ` -File .\Initialize-SguDomainController.ps1 ` -ServerIPv4Address 192.168.50.10 ` -PrefixLength 24 ` -NetworkInterfaceAlias 'Ethernet' ` -DnsForwarders 172.21.80.1,1.1.1.1 ``` El proceso crea o configura de forma idempotente: - bosque y DNS `lci.lasalle.mx` / `LCI`; - registro `sgu-auth.lci.lasalle.mx` apuntando a la IP proporcionada; - `OU=Laboratorio`, `OU=Usuarios-SGU` y sus OU `Docentes`, `Alumnos` y `Administrativos`; - grupo de seguridad `SG-Laboratorio-Usuarios-RDP`; - GPO de experiencia del equipo y restricciones de sesión SGU; - certificado de servidor no exportable y broker mTLS en TCP 8443; - recurso `\\SERVIDOR\Packages`, con lectura para Domain Computers; - RDP con NLA, WinRM/PowerShell Remoting y reglas administrativas sólo en el perfil Domain; - pantalla, suspensión e hibernación en Nunca. El broker arranca con una lista de clientes vacía. Eso no abre el servicio: mTLS rechaza todos los certificados hasta que el primer cliente registra el suyo. Los archivos opcionales colocados en `payload\server-content\Packages` al crear el release se copian al recurso compartido. Si allí existe `wallpaper.jpg`, `wallpaper.jpeg`, `wallpaper.png` o `wallpaper.bmp`, la GPO de usuarios lo aplica automáticamente como fondo con ajuste Fill. Estado y diagnóstico: ```powershell Get-Content C:\ProgramData\SGU\Bootstrap\Server\bootstrap.log Get-Content C:\ProgramData\SGU\Bootstrap\Server\bootstrap-complete.json Get-ScheduledTask SGU-Complete-Domain-Controller-Bootstrap -ErrorAction SilentlyContinue ``` La tarea programada se elimina únicamente cuando todas las verificaciones finales concluyen. Si algo externo falla, corregirlo y volver a ejecutar el mismo script; las operaciones terminadas se reutilizan. ## Windows 10/11 nuevo Se admiten Pro, Enterprise y Education. Windows Home no puede unirse a Active Directory local ni actuar como host RDP; el bootstrap lo detecta antes de cambiar el equipo y explica que se debe actualizar la edición. 1. Descargar y extraer `sgu-client-bootstrap-VERSION.zip`. 2. Ejecutar con la IP fija actual del controlador de dominio: ```bat Start-SguClientEnrollment.cmd 192.168.50.10 ``` Después de UAC, se solicita interactivamente la credencial autorizada para unir equipos. La contraseña existe sólo en memoria. El bootstrap: 1. apunta el DNS del adaptador al IP proporcionado; 2. abre una sesión WinRM autenticada con el DC y verifica que pertenece al dominio esperado; 3. crea en el cliente un certificado mTLS RSA-3072 no exportable y envía sólo su parte pública al broker; 4. recupera por esa sesión autenticada el certificado público del broker; 5. instala el runtime .NET 10 offline y el Credential Provider; 6. valida binarios, registro COM, certificados y salud del broker; 7. instala el guardián de reparación al arranque; 8. sólo entonces ejecuta `Add-Computer` dentro de `OU=Laboratorio` y reinicia; 9. al arrancar, activa RDP/NLA, WinRM y las reglas Domain, y vuelve a validar el enrolamiento. Para elegir adaptador o nombre del equipo explícitamente: ```powershell powershell.exe -NoProfile -ExecutionPolicy Bypass ` -File .\Invoke-SguClientBootstrap.ps1 ` -DomainControllerIPv4Address 192.168.50.10 ` -NetworkInterfaceAlias 'Ethernet' ` -NewComputerName 'LCI-101' ``` La IP del argumento es siempre la IP fija **actual del servidor**, no una IP que queda compilada en el Credential Provider. El proveedor usa después el nombre DNS `sgu-auth.lci.lasalle.mx`, que el bootstrap del servidor actualiza. Un administrador del dominio todavía puede ignorar deliberadamente este flujo y ejecutar `Add-Computer` a mano; ninguna GPO puede impedir a un administrador del bosque modificar el dominio. Para la operación soportada, el script aplica una transacción proveedor-primero y se niega a unir un equipo que no haya pasado las validaciones. ## Crear y publicar un release Desde el repositorio y con el SDK fijado en `global.json`: ```powershell .\scripts\New-SguBootstrapPackages.ps1 -Version 0.1.0 .\scripts\Publish-GiteaRelease.ps1 -Version 0.1.0 ``` El segundo comando usa `GITEA_TOKEN` sólo en memoria o, si no está definido, solicita la credencial existente a Git Credential Manager. No coloca el token en la línea de comandos. Para empaquetar recursos institucionales adicionales: ```powershell .\scripts\New-SguBootstrapPackages.ps1 ` -Version 0.1.0 ` -ServerContentPath C:\Preparacion\Packages ``` `SHA256SUMS-VERSION.txt` permite comprobar ambos ZIP antes de usarlos.