Guía de Aprovisionamiento: Servidor Windows 11
Rol de la Máquina: Servidor de Oficina (On-Premise)
OS Base: Windows 11 Pro
Backend de Virtualización: WSL 2 (Ubuntu)
Riesgo Crítico: Suspensión automática y Reinicios por Windows Update.
⚡ Fase 1: "Des-domestización" de Windows 11 (CRÍTICO)
Windows 11 está diseñado para ahorrar energía en laptops. Esta configuración es incompatible con un servidor. Debemos aplicar las siguientes políticas de energía agresivas.
1.1 Gestión de Energía
- Ir a Panel de Control > Hardware y sonido > Opciones de energía.
- Seleccionar el plan Alto rendimiento (High Performance).
- Click en "Cambiar la configuración del plan":
- Apagar la pantalla: 10 minutos (Opcional).
- Poner el equipo en suspensión: NUNCA.
- Click en "Cambiar la configuración avanzada de energía":
- Disco duro > Apagar disco duro tras: 0 (Nunca).
- Suspender > Hibernar tras: 0 (Nunca).
1.2 Actualizaciones (Windows Update)
Para evitar que el servidor se reinicie automáticamente a mitad del día laboral:
- Ir a Configuración > Windows Update.
- Pausar actualizaciones por 1 semana (si se requiere estabilidad inmediata).
- En Opciones avanzadas > Horas activas:
- Configurar manualmente de 6:00 AM a 10:00 PM.
1.3 BIOS / UEFI
- Reiniciar y entrar a la BIOS (F2, F12 o Del).
- Buscar la opción Power Management.
- Activar "AC Power Recovery" o "Restore on AC Power Loss" a "Last State" o "On".
- Objetivo: Si se va la luz y vuelve, la PC debe encender sola.
🐋 Fase 2: Entorno de Virtualización
Usaremos WSL 2 para correr Linux nativo dentro de Windows.
2.1 Instalar WSL 2
Abrir PowerShell como Administrador y ejecutar:
wsl --install
- Esto instalará Ubuntu 22.04 LTS por defecto.
- Reiniciar el equipo cuando se solicite.
2.2 Docker Desktop
- Descargar e instalar Docker Desktop for Windows.
- Durante la instalación, asegurar que la opción "Use WSL 2 instead of Hyper-V" esté marcada.
- En Settings > General:
- ✅ Marcar "Start Docker Desktop when you log in".
- ✅ Marcar "Use the WSL 2 based engine".
📂 Fase 3: Estructura de Directorios
Separamos los entornos en carpetas distintas para evitar conflictos de volúmenes.
Raíz: C:\Yuruary-Server (o D:\ si existe partición de datos).
C:\Yuruary-Server\
├── production\
│ ├── docker-compose.yml
│ └── .env (PUERTO API: 3000, DB: 5432)
└── staging\
├── docker-compose.yml
└── .env (PUERTO API: 4000, DB: 5433)
Nota: Staging usa puertos alternos para poder correr simultáneamente con Producción si es necesario.
☁️ Fase 4: Conectividad (Cloudflare Tunnel)
Usaremos cloudflared como servicio de Windows para exponer la API sin abrir puertos en el router.
- Descargar el ejecutable
cloudflared-windows-amd64.exe. - Moverlo a
C:\Cloudflared\. - Abrir CMD como Administrador:
cd C:\Cloudflared\
cloudflared.exe service install <TOKEN_PROVISTO_POR_DEVOPS> - Verificar en
services.mscque el servicio "Cloudflared agent" esté en ejecución y en modo Automático.
🔄 Fase 5: Script de Recuperación automática
A veces Docker Desktop tarda en iniciar. Crearemos un script de arranque robusto.
Archivo: Escritorio\start-services.bat
@echo off
echo Iniciando Servicios Yuruary...
:: Esperar a que Docker inicie (30 segundos)
timeout /t 30
:: Iniciar Producción
cd C:\Yuruary-Server\production
docker compose up -d
:: Iniciar Staging
cd C:\Yuruary-Server\staging
docker compose up -d
echo Servicios Iniciados.
pause