Proyecto

General

Perfil

Guía para Configurar WSL con Ubuntu Nginx y Certbot » Historial » Versión 1

Anibal Pendas Amador, 02/08/2025 04:19

1 1 Anibal Pendas Amador
# Guía para Configurar WSL con Ubuntu, Nginx y Certbot
2
3
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.
4
5
## Requisitos Previos
6
- Windows 10 (versión 2004 o posterior) o Windows 11
7
- Acceso de administrador en tu máquina Windows
8
- Conexión a Internet
9
- Familiaridad básica con comandos de terminal
10
11
## Paso 1: Habilitar e Instalar WSL con Ubuntu
12
1. **Habilitar WSL**:
13
   Abre PowerShell como administrador y ejecuta:
14
   ```bash
15
   wsl --install
16
   ```
17
   Este comando habilita WSL e instala Ubuntu (distribución predeterminada) si no está instalado. Reinicia tu computadora si se te solicita.
18
19
2. **Establecer WSL 2 como Predeterminado** (recomendado para mejor rendimiento):
20
   ```bash
21
   wsl --set-default-version 2
22
   ```
23
24
3. **Instalar Ubuntu**:
25
   ### Opción 1: Usar la Microsoft Store
26
   Abre la Microsoft Store, busca "Ubuntu" (por ejemplo, Ubuntu 20.04 LTS o 22.04 LTS) e instálalo.
27
28
   ### Opción 2: Instalar Ubuntu sin la Microsoft Store
29
   Si prefieres no usar la Microsoft Store, puedes descargar e instalar Ubuntu manualmente:
30
   - **Descargar el archivo de distribución**:
31
     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:
32
     ```powershell
33
     Invoke-WebRequest -Uri https://aka.ms/wslubuntu2204 -OutFile Ubuntu2204.appx -UseBasicParsing
34
     ```
35
   - **Instalar la distribución**:
36
     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.
37
     ```powershell
38
     Rename-Item Ubuntu2204.appx Ubuntu2204.zip
39
     Expand-Archive Ubuntu2204.zip
40
     cd Ubuntu2204
41
     .\ubuntu2204.exe
42
     ```
43
   - **Registrar la distribución en WSL**:
44
     Una vez instalado, registra la distribución:
45
     ```powershell
46
     wsl --import Ubuntu-22.04 <ruta_donde_deseas_instalar> <ruta_al_directorio_extraído>
47
     ```
48
     Ejemplo:
49
     ```powershell
50
     wsl --import Ubuntu-22.04 C:\WSL\Ubuntu-22.04 C:\Users\<TuUsuario>\Downloads\Ubuntu2204
51
     ```
52
53
4. **Configurar Ubuntu**:
54
   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.
55
56
5. **Actualizar Ubuntu**:
57
   En la terminal de Ubuntu, ejecuta:
58
   ```bash
59
   sudo apt update && sudo apt upgrade -y
60
   ```
61
62
## Paso 2: Instalar y Configurar Nginx
63
1. **Instalar Nginx**:
64
   En la terminal de Ubuntu, instala Nginx:
65
   ```bash
66
   sudo apt install nginx -y
67
   ```
68
69
2. **Iniciar Nginx**:
70
   Inicia el servicio de Nginx y habilítalo para que se ejecute al iniciar:
71
   ```bash
72
   sudo systemctl start nginx
73
   sudo systemctl enable nginx
74
   ```
75
76
3. **Verificar que Nginx esté funcionando**:
77
   Comprueba el estado de Nginx:
78
   ```bash
79
   sudo systemctl status nginx
80
   ```
81
   Deberías ver un estado "active (running)".
82
83
4. **Probar Nginx en el Navegador**:
84
   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).
85
86
5. **Configurar Nginx** (Opcional):
87
   Crea un archivo de configuración básico para tu sitio. Edita la configuración predeterminada:
88
   ```bash
89
   sudo nano /etc/nginx/sites-available/default
90
   ```
91
   Ejemplo de configuración:
92
   ```nginx
93
   server {
94
       listen 80;
95
       server_name example.com www.example.com;
96
       root /var/www/html;
97
       index index.html index.htm;
98
       location / {
99
           try_files $uri $uri/ /index.html;
100
       }
101
   }
102
   ```
103
   Guarda y sal (`Ctrl+O`, `Enter`, `Ctrl+X`).
104
105
6. **Probar y Recargar Nginx**:
106
   ```bash
107
   sudo nginx -t
108
   sudo systemctl reload nginx
109
   ```
110
111
## Paso 3: Instalar y Configurar Certbot para SSL
112
1. **Instalar Certbot**:
113
   Instala Certbot y el complemento para Nginx:
114
   ```bash
115
   sudo apt install certbot python3-certbot-nginx -y
116
   ```
117
118
2. **Obtener Certificado SSL**:
119
   Ejecuta Certbot para configurar automáticamente SSL para tu dominio (reemplaza `example.com` con tu dominio real):
120
   ```bash
121
   sudo certbot --nginx -d example.com -d www.example.com
122
   ```
123
   Sigue las instrucciones:
124
   - Proporciona un correo electrónico para notificaciones de renovación.
125
   - Acepta los términos de servicio.
126
   - Elige si deseas redirigir el tráfico HTTP a HTTPS (recomendado: selecciona redirigir).
127
128
3. **Verificar Configuración SSL**:
129
   Certbot modifica tu configuración de Nginx para usar el certificado SSL. Pruébalo visitando `https://example.com` en tu navegador.
130
131
4. **Renovación Automática del Certificado**:
132
   Certbot configura una tarea cron para renovaciones automáticas. Prueba el proceso de renovación:
133
   ```bash
134
   sudo certbot renew --dry-run
135
   ```
136
   Esto asegura que los certificados se renueven automáticamente cada 90 días.
137
138
## Paso 4: Crear un Sitio Web de Prueba
139
1. **Crear un Archivo HTML de Ejemplo**:
140
   ```bash
141
   sudo nano /var/www/html/index.html
142
   ```
143
   Agrega:
144
   ```html
145
   <!DOCTYPE html>
146
   <html>
147
   <head>
148
       <title>Bienvenido a Nginx en WSL</title>
149
   </head>
150
   <body>
151
       <h1>¡Hola desde Nginx en WSL con SSL!</h1>
152
   </body>
153
   </html>
154
   ```
155
   Guarda y sal.
156
157
2. **Establecer Permisos**:
158
   Asegúrate de que Nginx pueda acceder a los archivos:
159
   ```bash
160
   sudo chown -R www-data:www-data /var/www/html
161
   sudo chmod -R 755 /var/www/html
162
   ```
163
164
3. **Recargar Nginx**:
165
   ```bash
166
   sudo systemctl reload nginx
167
   ```
168
169
## Paso 5: Realizar un Respaldo y Clonar la Distribución de Ubuntu
170
1. **Realizar un Respaldo de la Distribución de Ubuntu**:
171
   - **Exportar la distribución actual**:
172
     En PowerShell, exporta la distribución de Ubuntu a un archivo `.tar`:
173
     ```powershell
174
     wsl --export Ubuntu-22.04 C:\WSL\Backups\Ubuntu-22.04-backup-$(Get-Date -Format "yyyyMMdd").tar
175
     ```
176
     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).
177
   - **Verificar el respaldo**:
178
     Asegúrate de que el archivo `.tar` se creó correctamente en la ruta especificada (por ejemplo, `C:\WSL\Backups\`).
179
180
2. **Clonar la Distribución de Ubuntu**:
181
   - **Crear una nueva distribución clonada**:
182
     Importa el respaldo como una nueva distribución con un nombre diferente:
183
     ```powershell
184
     wsl --import Ubuntu-22.04-Clone C:\WSL\Ubuntu-22.04-Clone C:\WSL\Backups\Ubuntu-22.04-backup-<fecha>.tar
185
     ```
186
     Reemplaza `<fecha>` con la fecha correspondiente del archivo de respaldo.
187
   - **Verificar distribuciones**:
188
     Lista las distribuciones instaladas para confirmar que el clon está registrado:
189
     ```powershell
190
     wsl --list --all
191
     ```
192
     Deberías ver tanto `Ubuntu-22.04` como `Ubuntu-22.04-Clone`.
193
   - **Iniciar la distribución clonada**:
194
     Inicia la distribución clonada para verificar que funciona:
195
     ```powershell
196
     wsl -d Ubuntu-22.04-Clone
197
     ```
198
   - **Probar Nginx en la distribución clonada**:
199
     En la terminal de la distribución clonada, verifica que Nginx esté funcionando:
200
     ```bash
201
     sudo systemctl status nginx
202
     ```
203
     Si está activo, prueba en el navegador visitando `http://localhost`.
204
205
3. **Recomendaciones para Respaldos**:
206
   - Realiza respaldos regularmente, especialmente antes de hacer cambios importantes en la configuración.
207
   - Almacena los archivos `.tar` en una ubicación segura, como un disco externo o una nube.
208
   - Para restaurar un respaldo, usa el comando `wsl --import` con un nuevo nombre de distribución si deseas conservar la original.
209
210
## Solución de Problemas
211
- **Nginx no es accesible desde el navegador**:
212
  - Verifica que Nginx esté corriendo: `sudo systemctl status nginx`.
213
  - Comprueba si el puerto 80 está abierto: `sudo netstat -tuln | grep 80`.
214
  - Si usas WSL 2, los puertos no se redirigen automáticamente. Ejecuta esto en PowerShell para redirigir puertos:
215
    ```powershell
216
    netsh interface portproxy add v4tov4 listenport=80 listenaddress=0.0.0.0 connectport=80 connectaddress=127.0.0.1
217
    ```
218
  - Asegúrate de que el Firewall de Windows permita el tráfico en los puertos 80 y 443.
219
220
- **Errores de dominio con Certbot**:
221
  - Verifica que tu dominio apunte a la dirección IP de tu servidor.
222
  - Asegúrate de que los puertos 80 y 443 estén abiertos y accesibles.
223
224
- **Problemas de red con WSL**:
225
  - Reinicia WSL: `wsl --shutdown` en PowerShell, luego reinicia Ubuntu.
226
  - Actualiza WSL: `wsl --update` en PowerShell.
227
228
- **Problemas con el respaldo o clonación**:
229
  - Asegúrate de tener suficiente espacio en disco para el archivo `.tar`.
230
  - Verifica que la ruta de destino para `--import` exista y tenga permisos adecuados.
231
  - Si la distribución clonada no inicia, verifica que el archivo `.tar` no esté corrupto ejecutando:
232
    ```powershell
233
    wsl --import Ubuntu-22.04-Test C:\WSL\Test C:\WSL\Backups\Ubuntu-22.04-backup-<fecha>.tar
234
    ```
235
236
## Notas Adicionales
237
- **Acceso a Archivos de WSL**:
238
  Los archivos de WSL están en `\\wsl$\Ubuntu-22.04` (o similar) desde el Explorador de Archivos de Windows.
239
- **Detener Nginx**:
240
  Para detener Nginx: `sudo systemctl stop nginx`.
241
- **Desinstalación**:
242
  Para eliminar Nginx y Certbot:
243
  ```bash
244
  sudo apt remove --purge nginx certbot python3-certbot-nginx -y
245
  sudo apt autoremove -y
246
  ```
247
- **Desinstalar Ubuntu sin Microsoft Store**:
248
  Elimina la distribución instalada manualmente:
249
  ```powershell
250
  wsl --unregister Ubuntu-22.04
251
  ```
252
- **Desinstalar una distribución clonada**:
253
  Elimina la distribución clonada:
254
  ```powershell
255
  wsl --unregister Ubuntu-22.04-Clone
256
  ```
257
- **Copias de Seguridad**:
258
  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.