Subir archivos a "docs"
This commit is contained in:
@@ -0,0 +1,91 @@
|
||||
# 🪟 Instalación de Ubuntu + n8n en Windows (WSL2)
|
||||
|
||||
> ← [Volver al índice](../README.md) | Siguiente: [☁️ Google Cloud VM →](./02-gcloud-vm-n8n.md)
|
||||
|
||||
---
|
||||
|
||||
## Requisitos previos
|
||||
|
||||
- Windows 10 versión 2004+ o Windows 11
|
||||
- Acceso a Microsoft Store
|
||||
- PowerShell con permisos de administrador
|
||||
|
||||
---
|
||||
|
||||
## Paso 1 — Instalar Ubuntu 24.04 LTS
|
||||
|
||||
Descarga desde Microsoft Store:
|
||||
|
||||
👉 [Ubuntu 24.04 LTS](https://apps.microsoft.com/store/detail/ubuntu-2404-lts/9NZ3KLHXDJP5)
|
||||
|
||||
---
|
||||
|
||||
## Paso 2 — Habilitar WSL2
|
||||
|
||||
Abre **PowerShell como administrador** y ejecuta:
|
||||
|
||||
```powershell
|
||||
wsl --install
|
||||
```
|
||||
|
||||
Esto habilita WSL2 y descarga Ubuntu automáticamente.
|
||||
|
||||
---
|
||||
|
||||
## Paso 3 — Reiniciar el equipo
|
||||
|
||||
Windows completará la instalación durante el reinicio.
|
||||
|
||||
---
|
||||
|
||||
## Paso 4 — Configurar Ubuntu
|
||||
|
||||
- Abre **Ubuntu 24.04** desde el menú de inicio.
|
||||
- Crea tu **usuario** y **contraseña** cuando se te solicite.
|
||||
|
||||
---
|
||||
|
||||
## Paso 5 — Instalar dependencias y n8n
|
||||
|
||||
Ejecuta los siguientes comandos en orden dentro de Ubuntu:
|
||||
|
||||
```bash
|
||||
# Instalar NVM (última versión estable)
|
||||
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.7/install.sh | bash
|
||||
|
||||
# Recargar bash para que funcione nvm
|
||||
source ~/.bashrc
|
||||
|
||||
# Instalar Node.js LTS (última recomendada por n8n)
|
||||
nvm install --lts
|
||||
|
||||
# Verificar versiones
|
||||
node -v
|
||||
npm -v
|
||||
|
||||
# Instalar n8n última versión
|
||||
npm install -g n8n@latest
|
||||
|
||||
# Ejecutar n8n
|
||||
n8n
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Paso 6 — Acceder a n8n
|
||||
|
||||
Abre en tu navegador:
|
||||
|
||||
👉 [http://localhost:5678](http://localhost:5678)
|
||||
|
||||
---
|
||||
|
||||
## Notas
|
||||
|
||||
- n8n se ejecuta en primer plano. Cierra la terminal y se detendrá.
|
||||
- Para entornos de producción o con dominio propio, consulta los pasos de [Google Cloud VM](./02-gcloud-vm-n8n.md) y [HTTPS](./03-https-nginx.md).
|
||||
- Esta instalación es ideal para **desarrollo local y pruebas**.
|
||||
|
||||
---
|
||||
|
||||
> ← [Volver al índice](../README.md) | Siguiente: [☁️ Google Cloud VM →](./02-gcloud-vm-n8n.md)
|
||||
@@ -0,0 +1,140 @@
|
||||
# ☁️ Instalación de n8n en Google Cloud VM
|
||||
|
||||
> ← [Anterior: 🪟 WSL2](./01-wsl2-n8n.md) | [Volver al índice](../README.md) | Siguiente: [🔐 HTTPS →](./03-https-nginx.md)
|
||||
|
||||
---
|
||||
|
||||
## Requisitos previos
|
||||
|
||||
- Cuenta en [Google Cloud Console](https://console.cloud.google.com/)
|
||||
- Proyecto activo con facturación habilitada
|
||||
- `gcloud` CLI instalado *(opcional, también se puede hacer desde la web)*
|
||||
|
||||
---
|
||||
|
||||
## Paso 1 — Crear la VM en Google Cloud
|
||||
|
||||
1. Ingresa a [Google Cloud Console](https://console.cloud.google.com/).
|
||||
2. Ve a **Compute Engine > VM Instances**.
|
||||
3. Haz clic en **Create Instance** y configura:
|
||||
|
||||
| Campo | Valor recomendado |
|
||||
|-------|------------------|
|
||||
| **Nombre** | `n8n-vm` |
|
||||
| **Región/Zona** | La más cercana a tu ubicación |
|
||||
| **Machine type** | `e2-medium` (2 vCPU, 4 GB RAM) |
|
||||
| **Boot disk** | Ubuntu 24.04 LTS |
|
||||
| **Firewall** | ✅ Allow HTTP traffic / ✅ Allow HTTPS traffic |
|
||||
|
||||
4. Haz clic en **Create**.
|
||||
|
||||
---
|
||||
|
||||
## Paso 2 — Conectarse a la VM
|
||||
|
||||
Desde la consola o terminal:
|
||||
|
||||
```bash
|
||||
gcloud compute ssh n8n-vm --zone us-central1-a
|
||||
```
|
||||
|
||||
También puedes usar el botón **SSH** directamente desde la consola web de GCP.
|
||||
|
||||
---
|
||||
|
||||
## Paso 3 — Actualizar paquetes
|
||||
|
||||
```bash
|
||||
sudo apt update && sudo apt upgrade -y
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Paso 4 — Instalar dependencias y n8n
|
||||
|
||||
```bash
|
||||
# Instalar NVM
|
||||
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.7/install.sh | bash
|
||||
|
||||
# Recargar bash
|
||||
source ~/.bashrc
|
||||
|
||||
# Instalar Node.js LTS
|
||||
nvm install --lts
|
||||
|
||||
# Verificar versiones
|
||||
node -v
|
||||
npm -v
|
||||
|
||||
# Instalar n8n
|
||||
npm install -g n8n@latest
|
||||
|
||||
# Ejecutar n8n
|
||||
n8n
|
||||
```
|
||||
|
||||
n8n quedará escuchando en el puerto **5678** por defecto.
|
||||
|
||||
---
|
||||
|
||||
## Paso 5 — Abrir puertos en el firewall de Google Cloud
|
||||
|
||||
### Opción A: Desde la consola web
|
||||
|
||||
1. Ve a **VPC Network > Firewall**.
|
||||
2. Clic en **Create Firewall Rule** y configura:
|
||||
|
||||
| Campo | Valor |
|
||||
|-------|-------|
|
||||
| **Name** | `allow-n8n` |
|
||||
| **Targets** | All instances in the network |
|
||||
| **Source IP ranges** | `0.0.0.0/0` *(o tu IP para mayor seguridad)* |
|
||||
| **Protocols/Ports** | TCP: `80, 443, 5678` |
|
||||
|
||||
### Opción B: Con gcloud CLI
|
||||
|
||||
```bash
|
||||
gcloud compute firewall-rules create allow-n8n \
|
||||
--allow tcp:80,tcp:443,tcp:5678 \
|
||||
--source-ranges=0.0.0.0/0 \
|
||||
--target-tags=n8n-server
|
||||
```
|
||||
|
||||
Luego edita tu VM y en **Network tags** agrega `n8n-server`.
|
||||
|
||||
---
|
||||
|
||||
## Paso 6 — Acceder a n8n
|
||||
|
||||
Abre en tu navegador:
|
||||
|
||||
👉 `http://EXTERNAL_IP:5678`
|
||||
|
||||
*(La IP externa está visible en la consola de GCP)*
|
||||
|
||||
---
|
||||
|
||||
## Paso 7 (Opcional) — Ejecutar n8n en segundo plano con PM2
|
||||
|
||||
Sin PM2, n8n se detiene al cerrar la sesión SSH.
|
||||
|
||||
```bash
|
||||
npm install -g pm2
|
||||
|
||||
pm2 start n8n
|
||||
pm2 save
|
||||
pm2 startup
|
||||
```
|
||||
|
||||
PM2 se asegura de que n8n se reinicie automáticamente tras reinicios de la VM.
|
||||
|
||||
---
|
||||
|
||||
## ⚠️ Nota de seguridad
|
||||
|
||||
> No expongas el puerto `5678` directamente en producción. Lo ideal es configurar un **proxy inverso con Nginx + SSL**.
|
||||
> Consulta el siguiente paso: [🔐 Habilitar HTTPS](./03-https-nginx.md)
|
||||
|
||||
---
|
||||
|
||||
> ← [Anterior: 🪟 WSL2](./01-wsl2-n8n.md) | [Volver al índice](../README.md) | Siguiente: [🔐 HTTPS →](./03-https-nginx.md)
|
||||
@@ -0,0 +1,126 @@
|
||||
# 🔐 Habilitar HTTPS en Google Cloud (Nginx + Certbot)
|
||||
|
||||
> ← [Anterior: ☁️ Google Cloud VM](./02-gcloud-vm-n8n.md) | [Volver al índice](../README.md) | Siguiente: [🕷️ Crawl4AI →](./04-crawl4ai-ubuntu.md)
|
||||
|
||||
---
|
||||
|
||||
## Requisitos previos
|
||||
|
||||
- VM en Google Cloud con Ubuntu 24.04 *(ver [paso anterior](./02-gcloud-vm-n8n.md))*
|
||||
- n8n ya instalado y corriendo con PM2
|
||||
- Un **dominio propio** con un registro **A** apuntando a la IP externa de tu VM:
|
||||
|
||||
```
|
||||
n8n.midominio.com → EXTERNAL_IP_VM
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Paso 1 — Instalar n8n con PM2 (si no lo hiciste aún)
|
||||
|
||||
```bash
|
||||
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.7/install.sh | bash
|
||||
source ~/.bashrc
|
||||
nvm install --lts
|
||||
npm install -g n8n@latest
|
||||
|
||||
npm install -g pm2
|
||||
pm2 start n8n
|
||||
pm2 save
|
||||
pm2 startup
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Paso 2 — Instalar Nginx
|
||||
|
||||
```bash
|
||||
sudo apt install -y nginx
|
||||
```
|
||||
|
||||
### Crear configuración para n8n
|
||||
|
||||
```bash
|
||||
sudo nano /etc/nginx/sites-available/n8n
|
||||
```
|
||||
|
||||
Pega el siguiente contenido (reemplaza `n8n.midominio.com` por tu dominio real):
|
||||
|
||||
```nginx
|
||||
server {
|
||||
listen 80;
|
||||
server_name n8n.midominio.com;
|
||||
|
||||
location / {
|
||||
proxy_pass http://localhost:5678;
|
||||
proxy_set_header Host $host;
|
||||
proxy_set_header X-Real-IP $remote_addr;
|
||||
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
|
||||
proxy_set_header X-Forwarded-Proto $scheme;
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
### Activar el sitio
|
||||
|
||||
```bash
|
||||
sudo ln -s /etc/nginx/sites-available/n8n /etc/nginx/sites-enabled/
|
||||
sudo nginx -t
|
||||
sudo systemctl reload nginx
|
||||
```
|
||||
|
||||
n8n ya será accesible en `http://n8n.midominio.com`.
|
||||
|
||||
---
|
||||
|
||||
## Paso 3 — Instalar Certbot para HTTPS
|
||||
|
||||
```bash
|
||||
sudo apt install -y certbot python3-certbot-nginx
|
||||
```
|
||||
|
||||
Ejecuta el proceso de certificación:
|
||||
|
||||
```bash
|
||||
sudo certbot --nginx -d n8n.midominio.com
|
||||
```
|
||||
|
||||
Durante el proceso:
|
||||
- Acepta los términos de servicio.
|
||||
- Selecciona la opción de **redirigir todo el tráfico a HTTPS**.
|
||||
|
||||
Certbot configurará Nginx automáticamente para usar TLS.
|
||||
|
||||
---
|
||||
|
||||
## Paso 4 — Verificar acceso
|
||||
|
||||
Abre en tu navegador:
|
||||
|
||||
👉 `https://n8n.midominio.com`
|
||||
|
||||
n8n estará corriendo con **HTTPS válido y seguro** ✅
|
||||
|
||||
---
|
||||
|
||||
## Paso 5 — Renovación automática de certificados
|
||||
|
||||
Certbot instala un cron job que renueva los certificados antes de que expiren. Puedes verificarlo con:
|
||||
|
||||
```bash
|
||||
sudo certbot renew --dry-run
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## ✅ Resultado final
|
||||
|
||||
Con esta configuración tienes:
|
||||
|
||||
- ✅ **n8n corriendo en segundo plano** con PM2
|
||||
- ✅ **Acceso seguro** vía Nginx + HTTPS (Let's Encrypt)
|
||||
- ✅ **Firewall en GCP** abierto solo en puertos `80` y `443` (ya no necesitas exponer el `5678`)
|
||||
|
||||
---
|
||||
|
||||
> ← [Anterior: ☁️ Google Cloud VM](./02-gcloud-vm-n8n.md) | [Volver al índice](../README.md) | Siguiente: [🕷️ Crawl4AI →](./04-crawl4ai-ubuntu.md)
|
||||
@@ -0,0 +1,113 @@
|
||||
# 🕷️ Instalación de Crawl4AI en Ubuntu
|
||||
|
||||
> ← [Anterior: 🔐 HTTPS](./03-https-nginx.md) | [Volver al índice](../README.md) | Siguiente: [📋 Proyecto →](./05-proyecto-website-craw-css.md)
|
||||
|
||||
---
|
||||
|
||||
## Requisitos previos
|
||||
|
||||
- Ubuntu 22.04+ (local vía WSL2 o en Google Cloud VM)
|
||||
- Python 3 y pip instalados
|
||||
|
||||
```bash
|
||||
sudo apt update && sudo apt install -y python3 python3-pip
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Instalación básica
|
||||
|
||||
### 1 — Instalar el núcleo de Crawl4AI
|
||||
|
||||
```bash
|
||||
pip install crawl4ai
|
||||
```
|
||||
|
||||
Esto instala la versión base sin características adicionales como modelos ML o Transformers.
|
||||
|
||||
### 2 — Ejecutar la configuración inicial
|
||||
|
||||
```bash
|
||||
crawl4ai-setup
|
||||
```
|
||||
|
||||
Este comando instala y configura las dependencias del navegador: Playwright, librerías del sistema, etc.
|
||||
|
||||
### 3 — Diagnosticar el entorno *(opcional pero recomendado)*
|
||||
|
||||
```bash
|
||||
crawl4ai-doctor
|
||||
```
|
||||
|
||||
Verifica compatibilidad de Python, instalación de Playwright y variables del sistema.
|
||||
|
||||
### 4 — Verificar la instalación con un ejemplo
|
||||
|
||||
```python
|
||||
import asyncio
|
||||
from crawl4ai import AsyncWebCrawler, BrowserConfig, CrawlerRunConfig
|
||||
|
||||
async def main():
|
||||
async with AsyncWebCrawler() as crawler:
|
||||
result = await crawler.arun(url="https://www.example.com")
|
||||
print(result.markdown[:300])
|
||||
|
||||
if __name__ == "__main__":
|
||||
asyncio.run(main())
|
||||
```
|
||||
|
||||
Ejecuta el script y verás los primeros 300 caracteres de `example.com` en formato Markdown.
|
||||
|
||||
---
|
||||
|
||||
## Instalación avanzada *(opcional)*
|
||||
|
||||
Elige según las capacidades que necesites:
|
||||
|
||||
| Variante | Comando |
|
||||
|----------|---------|
|
||||
| Con PyTorch | `pip install crawl4ai[torch] && crawl4ai-setup` |
|
||||
| Con Transformers | `pip install crawl4ai[transformer] && crawl4ai-setup` |
|
||||
| Todas las características | `pip install crawl4ai[all] && crawl4ai-setup` |
|
||||
|
||||
### Pre-descargar modelos *(solo si los necesitas)*
|
||||
|
||||
```bash
|
||||
crawl4ai-download-models
|
||||
```
|
||||
|
||||
> ⚠️ Los modelos son pesados. Descárgalos solo si tu flujo los requiere.
|
||||
|
||||
---
|
||||
|
||||
## Opción Docker *(experimental)*
|
||||
|
||||
La documentación oficial indica que la vía Docker es **experimental** y puede cambiar. No se recomienda para producción aún.
|
||||
|
||||
```bash
|
||||
docker pull unclecode/crawl4ai:latest
|
||||
docker run -p 11235:11235 unclecode/crawl4ai:latest
|
||||
```
|
||||
|
||||
Consulta la [documentación oficial de Crawl4AI](https://docs.crawl4ai.com/core/installation/) para actualizaciones.
|
||||
|
||||
---
|
||||
|
||||
## Resumen de comandos
|
||||
|
||||
```bash
|
||||
# Instalación mínima
|
||||
pip install crawl4ai
|
||||
crawl4ai-setup
|
||||
|
||||
# Verificar entorno
|
||||
crawl4ai-doctor
|
||||
|
||||
# Instalación completa
|
||||
pip install crawl4ai[all]
|
||||
crawl4ai-setup
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
> ← [Anterior: 🔐 HTTPS](./03-https-nginx.md) | [Volver al índice](../README.md) | Siguiente: [📋 Proyecto →](./05-proyecto-website-craw-css.md)
|
||||
@@ -0,0 +1,125 @@
|
||||
# 📋 Documento del Proyecto — Website Craw CSS
|
||||
|
||||
> ← [Anterior: 🕷️ Crawl4AI](./04-crawl4ai-ubuntu.md) | [Volver al índice](../README.md)
|
||||
|
||||
---
|
||||
|
||||
## 1. Iniciación
|
||||
|
||||
| Campo | Detalle |
|
||||
|-------|---------|
|
||||
| **Objetivo** | Automatizar la extracción de productos desde páginas web mediante Crawl4AI, procesar los datos con n8n y exportarlos en formato usable (JSON/archivo) |
|
||||
| **Stakeholders** | Equipo de datos/marketing *(consumirá los resultados)*, equipo de IT *(mantendrá el flujo en n8n)* |
|
||||
| **Justificación** | Reducir esfuerzo manual en scraping, garantizar consistencia de datos y preparar pipeline para análisis en Google Sheets u otras herramientas |
|
||||
|
||||
---
|
||||
|
||||
## 2. Planificación
|
||||
|
||||
### Requerimientos técnicos
|
||||
|
||||
- Servidor con n8n instalado (Ubuntu/Docker)
|
||||
- Conexión a Crawl4AI
|
||||
- Credenciales: `httpBasicAuth` y `httpHeaderAuth`
|
||||
- Acceso a Google Sheets (OAuth2 configurado)
|
||||
|
||||
### Alcance
|
||||
|
||||
- Número de URLs a escanear: `Array.from({ length: 2 })` → 2 páginas por ahora, escalable
|
||||
- **Campos a extraer**: `link`, `título`, `rating` (conteo de estrellas), `descripción`, `precio`, `stock`
|
||||
|
||||
### Riesgos
|
||||
|
||||
| Riesgo | Descripción |
|
||||
|--------|-------------|
|
||||
| 🔴 Bloqueo de IP | Crawling excesivo puede resultar en bloqueo por el sitio objetivo |
|
||||
| 🟡 Cambio en HTML | Si la estructura de la web cambia, los selectores CSS deben actualizarse |
|
||||
| 🟡 Fallos de credenciales | Acceso perdido a Crawl4AI o Google Sheets interrumpe el flujo |
|
||||
|
||||
---
|
||||
|
||||
## 3. Diseño y Arquitectura
|
||||
|
||||
### Flujo de nodos en n8n
|
||||
|
||||
```
|
||||
Manual Trigger
|
||||
│
|
||||
▼
|
||||
Markdown Crawl Request ──► POST a Crawl4AI con URLs + esquema JSON-CSS
|
||||
│
|
||||
▼
|
||||
Wait (15s) ──────────────► Pausa mientras Crawl4AI procesa
|
||||
│
|
||||
▼
|
||||
Get LLM Crawl ───────────► Recupera resultados por task_id
|
||||
│
|
||||
▼
|
||||
LLM if In Process ───────► ¿Sigue en estado "pending/processing"?
|
||||
│ │
|
||||
[Sí] [No]
|
||||
│ │
|
||||
└─────────┤
|
||||
▼
|
||||
LLM Result ──────► Convierte rating a número (star_count)
|
||||
│
|
||||
▼
|
||||
Split Out ──────► Divide resultados por producto
|
||||
│
|
||||
▼
|
||||
Convert to File ───► Exporta a archivo final (JSON/CSV)
|
||||
│
|
||||
▼
|
||||
[Opcional] Google Sheets ── (deshabilitado por defecto)
|
||||
```
|
||||
|
||||
**Tipo de arquitectura**: Workflow asincrónico con polling + procesamiento + exportación.
|
||||
|
||||
---
|
||||
|
||||
## 4. Ejecución / Desarrollo
|
||||
|
||||
### Implementación inicial
|
||||
|
||||
1. Configurar credenciales: `crawl4aiserver`, `panel`, Google Sheets.
|
||||
2. Probar con dataset pequeño (2 páginas) para validar selectores CSS.
|
||||
|
||||
### Edición futura
|
||||
|
||||
- Ampliar `Array.from({ length: N })` para procesar más páginas.
|
||||
- Ajustar `baseSelector` y `fields` si cambia la estructura web.
|
||||
- Habilitar el módulo de Google Sheets para registro en línea.
|
||||
|
||||
---
|
||||
|
||||
## 5. Monitoreo y Control
|
||||
|
||||
### Logs
|
||||
|
||||
Revisar ejecuciones en: **n8n → Execution History**
|
||||
|
||||
### KPIs
|
||||
|
||||
| Indicador | Descripción |
|
||||
|-----------|-------------|
|
||||
| % productos extraídos | Porcentaje de productos extraídos correctamente por batch |
|
||||
| Tiempo de procesamiento | Tiempo promedio por batch de páginas |
|
||||
|
||||
### Control de cambios
|
||||
|
||||
- Antes de editar `schema.fields`, probar en ambiente de desarrollo.
|
||||
- Documentar versiones del flujo (`versionId` ya está incluido en el JSON de n8n).
|
||||
|
||||
---
|
||||
|
||||
## 6. Cierre / Entrega
|
||||
|
||||
| Entregable | Formato |
|
||||
|------------|---------|
|
||||
| Archivo de productos estructurados | JSON o CSV |
|
||||
| Exportación automática | Google Drive / Google Sheets |
|
||||
| Documentación de uso | Este repositorio |
|
||||
|
||||
---
|
||||
|
||||
> ← [Anterior: 🕷️ Crawl4AI](./04-crawl4ai-ubuntu.md) | [Volver al índice](../README.md)
|
||||
Reference in New Issue
Block a user