Proyecto

General

Perfil

Acciones

Guía para Configurar WSL con Ubuntu, Nginx y Certbot

Esta guía te explica paso a paso cómo instalar y configurar Windows Subsystem for Linux (WSL) con Ubuntu, configurar el servidor web Nginx, securizarlo con certificados SSL usando Certbot, realizar un respaldo de la distribución y clonar una distribución de Ubuntu.

Requisitos Previos

  • Windows 10 (versión 2004 o posterior) o Windows 11
  • Acceso de administrador en tu máquina Windows
  • Conexión a Internet
  • Familiaridad básica con comandos de terminal

Paso 1: Habilitar e Instalar WSL con Ubuntu

  1. Habilitar WSL:
    Abre PowerShell como administrador y ejecuta:

    wsl --install
    

    Este comando habilita WSL e instala Ubuntu (distribución predeterminada) si no está instalado. Reinicia tu computadora si se te solicita.

  2. Establecer WSL 2 como Predeterminado (recomendado para mejor rendimiento):

    wsl --set-default-version 2
    
  3. Instalar Ubuntu:

    Opción 1: Usar la Microsoft Store

    Abre la Microsoft Store, busca "Ubuntu" (por ejemplo, Ubuntu 20.04 LTS o 22.04 LTS) e instálalo.

    Opción 2: Instalar Ubuntu sin la Microsoft Store

    Si prefieres no usar la Microsoft Store, puedes descargar e instalar Ubuntu manualmente:

    • Descargar el archivo de distribución:
      Visita la página oficial de Ubuntu o el repositorio de Canonical para descargar la imagen de WSL (por ejemplo, Ubuntu 22.04). Alternativamente, usa el siguiente comando en PowerShell para descargar una distribución:
      Invoke-WebRequest -Uri https://aka.ms/wslubuntu2204 -OutFile Ubuntu2204.appx -UseBasicParsing
      
    • Instalar la distribución:
      Cambia el nombre del archivo .appx a .zip, extráelo y ejecuta el archivo ubuntu2204.exe (o similar) para instalar. Sigue las instrucciones en pantalla para configurar la distribución.
      Rename-Item Ubuntu2204.appx Ubuntu2204.zip
      Expand-Archive Ubuntu2204.zip
      cd Ubuntu2204
      .\ubuntu2204.exe
      
    • Registrar la distribución en WSL:
      Una vez instalado, registra la distribución:
      wsl --import Ubuntu-22.04 <ruta_donde_deseas_instalar> <ruta_al_directorio_extraído>
      
      Ejemplo:
      wsl --import Ubuntu-22.04 C:\WSL\Ubuntu-22.04 C:\Users\<TuUsuario>\Downloads\Ubuntu2204
      
  4. Configurar Ubuntu:
    Inicia Ubuntu desde el menú de Inicio o ejecutando wsl -d Ubuntu-22.04 en PowerShell. Se te pedirá crear un nombre de usuario y contraseña UNIX. Completa la configuración.

  5. Actualizar Ubuntu:
    En la terminal de Ubuntu, ejecuta:

    sudo apt update && sudo apt upgrade -y
    

Paso 2: Instalar y Configurar Nginx

  1. Instalar Nginx:
    En la terminal de Ubuntu, instala Nginx:

    sudo apt install nginx -y
    
  2. Iniciar Nginx:
    Inicia el servicio de Nginx y habilítalo para que se ejecute al iniciar:

    sudo systemctl start nginx
    sudo systemctl enable nginx
    
  3. Verificar que Nginx esté funcionando:
    Comprueba el estado de Nginx:

    sudo systemctl status nginx
    

    Deberías ver un estado "active (running)".

  4. Probar Nginx en el Navegador:
    En tu navegador de Windows, navega a http://localhost. Deberías ver la página de bienvenida de Nginx. Si no, verifica que WSL esté redirigiendo los puertos correctamente (ver Solución de Problemas).

  5. Configurar Nginx (Opcional):
    Crea un archivo de configuración básico para tu sitio. Edita la configuración predeterminada:

    sudo nano /etc/nginx/sites-available/default
    

    Ejemplo de configuración:

    server {
        listen 80;
        server_name example.com www.example.com;
        root /var/www/html;
        index index.html index.htm;
        location / {
            try_files $uri $uri/ /index.html;
        }
    }
    

    Guarda y sal (Ctrl+O, Enter, Ctrl+X).

  6. Probar y Recargar Nginx:

    sudo nginx -t
    sudo systemctl reload nginx
    

Paso 3: Instalar y Configurar Certbot para SSL

  1. Instalar Certbot:
    Instala Certbot y el complemento para Nginx:

    sudo apt install certbot python3-certbot-nginx -y
    
  2. Obtener Certificado SSL:
    Ejecuta Certbot para configurar automáticamente SSL para tu dominio (reemplaza example.com con tu dominio real):

    sudo certbot --nginx -d example.com -d www.example.com
    

    Sigue las instrucciones:

    • Proporciona un correo electrónico para notificaciones de renovación.
    • Acepta los términos de servicio.
    • Elige si deseas redirigir el tráfico HTTP a HTTPS (recomendado: selecciona redirigir).
  3. Verificar Configuración SSL:
    Certbot modifica tu configuración de Nginx para usar el certificado SSL. Pruébalo visitando https://example.com en tu navegador.

  4. Renovación Automática del Certificado:
    Certbot configura una tarea cron para renovaciones automáticas. Prueba el proceso de renovación:

    sudo certbot renew --dry-run
    

    Esto asegura que los certificados se renueven automáticamente cada 90 días.

Paso 4: Crear un Sitio Web de Prueba

  1. Crear un Archivo HTML de Ejemplo:

    sudo nano /var/www/html/index.html
    

    Agrega:

    <!DOCTYPE html>
    <html>
    <head>
        <title>Bienvenido a Nginx en WSL</title>
    </head>
    <body>
        <h1>¡Hola desde Nginx en WSL con SSL!</h1>
    </body>
    </html>
    

    Guarda y sal.

  2. Establecer Permisos:
    Asegúrate de que Nginx pueda acceder a los archivos:

    sudo chown -R www-data:www-data /var/www/html
    sudo chmod -R 755 /var/www/html
    
  3. Recargar Nginx:

    sudo systemctl reload nginx
    

Paso 5: Realizar un Respaldo y Clonar la Distribución de Ubuntu

  1. Realizar un Respaldo de la Distribución de Ubuntu:

    • Exportar la distribución actual:
      En PowerShell, exporta la distribución de Ubuntu a un archivo .tar:
      wsl --export Ubuntu-22.04 C:\WSL\Backups\Ubuntu-22.04-backup-$(Get-Date -Format "yyyyMMdd").tar
      
      Esto crea un archivo comprimido con el estado actual de la distribución, incluyendo todos los archivos, configuraciones y paquetes instalados (por ejemplo, Nginx y Certbot).
    • Verificar el respaldo:
      Asegúrate de que el archivo .tar se creó correctamente en la ruta especificada (por ejemplo, C:\WSL\Backups\).
  2. Clonar la Distribución de Ubuntu:

    • Crear una nueva distribución clonada:
      Importa el respaldo como una nueva distribución con un nombre diferente:
      wsl --import Ubuntu-22.04-Clone C:\WSL\Ubuntu-22.04-Clone C:\WSL\Backups\Ubuntu-22.04-backup-<fecha>.tar
      
      Reemplaza <fecha> con la fecha correspondiente del archivo de respaldo.
    • Verificar distribuciones:
      Lista las distribuciones instaladas para confirmar que el clon está registrado:
      wsl --list --all
      
      Deberías ver tanto Ubuntu-22.04 como Ubuntu-22.04-Clone.
    • Iniciar la distribución clonada:
      Inicia la distribución clonada para verificar que funciona:
      wsl -d Ubuntu-22.04-Clone
      
    • Probar Nginx en la distribución clonada:
      En la terminal de la distribución clonada, verifica que Nginx esté funcionando:
      sudo systemctl status nginx
      
      Si está activo, prueba en el navegador visitando http://localhost.
  3. Recomendaciones para Respaldos:

    • Realiza respaldos regularmente, especialmente antes de hacer cambios importantes en la configuración.
    • Almacena los archivos .tar en una ubicación segura, como un disco externo o una nube.
    • Para restaurar un respaldo, usa el comando wsl --import con un nuevo nombre de distribución si deseas conservar la original.

Solución de Problemas

  • Nginx no es accesible desde el navegador:

    • Verifica que Nginx esté corriendo: sudo systemctl status nginx.
    • Comprueba si el puerto 80 está abierto: sudo netstat -tuln | grep 80.
    • Si usas WSL 2, los puertos no se redirigen automáticamente. Ejecuta esto en PowerShell para redirigir puertos:
      netsh interface portproxy add v4tov4 listenport=80 listenaddress=0.0.0.0 connectport=80 connectaddress=127.0.0.1
      
    • Asegúrate de que el Firewall de Windows permita el tráfico en los puertos 80 y 443.
  • Errores de dominio con Certbot:

    • Verifica que tu dominio apunte a la dirección IP de tu servidor.
    • Asegúrate de que los puertos 80 y 443 estén abiertos y accesibles.
  • Problemas de red con WSL:

    • Reinicia WSL: wsl --shutdown en PowerShell, luego reinicia Ubuntu.
    • Actualiza WSL: wsl --update en PowerShell.
  • Problemas con el respaldo o clonación:

    • Asegúrate de tener suficiente espacio en disco para el archivo .tar.
    • Verifica que la ruta de destino para --import exista y tenga permisos adecuados.
    • Si la distribución clonada no inicia, verifica que el archivo .tar no esté corrupto ejecutando:
      wsl --import Ubuntu-22.04-Test C:\WSL\Test C:\WSL\Backups\Ubuntu-22.04-backup-<fecha>.tar
      

Notas Adicionales

  • Acceso a Archivos de WSL:
    Los archivos de WSL están en \\wsl$\Ubuntu-22.04 (o similar) desde el Explorador de Archivos de Windows.
  • Detener Nginx:
    Para detener Nginx: sudo systemctl stop nginx.
  • Desinstalación:
    Para eliminar Nginx y Certbot:
    sudo apt remove --purge nginx certbot python3-certbot-nginx -y
    sudo apt autoremove -y
    
  • Desinstalar Ubuntu sin Microsoft Store:
    Elimina la distribución instalada manualmente:
    wsl --unregister Ubuntu-22.04
    
  • Desinstalar una distribución clonada:
    Elimina la distribución clonada:
    wsl --unregister Ubuntu-22.04-Clone
    
  • Copias de Seguridad:
    Haz copias de seguridad regulares de la configuración de Nginx (/etc/nginx/), los archivos del sitio web (/var/www/html/) y la distribución completa de WSL como se describió en el Paso 5.

Actualizado por Anibal Pendas Amador hace 4 días · 1 revisiones