IA Soberana: Ollama + n8n sin OpenAI (GDPR)
Ejecuta IA local con Ollama + n8n sin enviar datos a OpenAI. Guía técnica para automatización industrial 100% privada, GDPR completo.
Un operario de una planta de manufactura necesita revisar 500 reportes de mantenimiento predictivo cada mañana para detectar anomalías. Si usa una API de IA cloud (OpenAI, Anthropic), cada análisis cuesta dinero y, crucialmente, envía datos sensibles de producción al exterior. Esos datos tachados con “confidencial” viajan por internet hacia servidores ajenos. El responsable de seguridad rechaza la propuesta: “¿Y si hay una brecha? ¿Y si alguien ve nuestros parámetros de proceso?” Tiene razón.
Ahí entra IA Soberana: ejecutar inteligencia artificial en tu propia infraestructura, bajo tu control total, sin enviar nada al cloud. Con Ollama (tu modelo IA local) + n8n (tu motor de automatización) + privacidad GDPR incorporada.
Este artículo es un manual técnico para hacerlo realidad. No es “más fácil que OpenAI”. Es más seguro, más barato a largo plazo, y abre puertas que el cloud nunca permitirá para datos sensibles industriales.
Por Qué IA Soberana es Crítica en 2026
El Problema del Cloud: Riesgo, Coste, y Control
Cuando usas OpenAI, Claude, o cualquier API de IA cloud:
-
Tus datos viajan al exterior. Tu planta envía información de sensores, tiempos de producción, y parámetros de proceso a servidores en EE.UU. Aunque haya “DPA” (Data Processing Agreement), los datos están fuera de tu perímetro.
-
No hay control total sobre el modelo. OpenAI actualiza sus modelos constantemente. De repente, tu clasificador que funcionaba perfectamente ayer devuelve resultados diferentes. ¿Cambió el modelo? ¿Cambió la API? No lo sabes.
-
Coste variable e impredecible. Comienza con €100/mes. En seis meses tienes 10 procesos automáticos consultando IA. Ahora cuesta €1.500/mes y no puedes parar porque los procesos dependen de ello.
-
GDPR es complejo. En teoría, las cláusulas contractuales estándar (SCCs) permiten transferencias a EE.UU. En práctica, tras el caso Schrems II, reguladores españoles/europeos son cada vez más estrictos. Algunos sectores (especialmente público, sanidad, crítica) no pueden usar cloud IA sin aprobación regulatoria explícita.
-
NIS2 (nueva directiva de ciberseguridad EU 2026) exige trazabilidad y aislamiento. Si tu planta es “entidad de importancia crítica”, NIS2 demanda que controles dónde residen tus datos. Terceros cloud no es suficiente.
La Solución: IA Local (Ollama)
Ollama es un proyecto open-source que descarga modelos de IA (Mistral, Llama2, Phi, etc.) y los ejecuta en tu máquina. Sin cloud. Sin APIs remotas. Sin tokens de pago. Solo tienes que:
- Instalar Ollama
- Descargar un modelo (ej:
ollama pull mistral) - Invocar la API local (localhost:11434)
Ventajas vs OpenAI:
| Aspecto | Ollama | OpenAI |
|---|---|---|
| Privacidad | Datos locales | Datos en cloud (GDPR riesgo) |
| Coste variable | No (costo hardware fijo) | Sí (pago por token) |
| Control del modelo | 100% (versión fija local) | 0% (OpenAI actualiza sin avisar) |
| GDPR | ✅ Full compliance local | ⚠️ Requiere legal review |
| Latencia | Baja (red local) | Alta (internet + cloud) |
| Capacidad | Modelos 7-70B (depende hardware) | Modelos gigantes en cloud |
| Costo mensual (100K tokens) | €2-8 (electricidad) | €50-150 |
Arquitectura: Ollama + n8n + Privacidad
Aquí va la arquitectura que recomendamos para producción:
┌─────────────────────────────────────────────────────────────┐
│ Infraestructura Industrial Privada (VPS / On-Premise) │
├─────────────────────────────────────────────────────────────┤
│ │
│ ┌──────────────────────────────────────────────────────┐ │
│ │ n8n (Orquestación) │ │
│ │ - Workflow: "Analizar reportes con Ollama" │ │
│ │ - Nodo HTTP → Ollama API (localhost:11434) │ │
│ │ - Lógica de negocio, webhooks, triggers │ │
│ └──────────────────────────────────────────────────────┘ │
│ ↓ (HTTP local) │
│ ┌──────────────────────────────────────────────────────┐ │
│ │ Ollama (IA Local) │ │
│ │ - Modelo: Mistral 7B │ │
│ │ - API REST en puerto 11434 │ │
│ │ - 0% datos hacia el exterior │ │
│ └──────────────────────────────────────────────────────┘ │
│ │
│ ┌──────────────────────────────────────────────────────┐ │
│ │ Base de Datos (PostgreSQL) │ │
│ │ - Historiales, auditoría, logs │ │
│ │ - Datos nunca salen de aquí │ │
│ └──────────────────────────────────────────────────────┘ │
│ │
└─────────────────────────────────────────────────────────────┘
↑ SSH Seguro ↓ HTTPS
Tu oficina/dashboard Webhooks (entrada)
Flujo real:
- Un operario carga un PDF de mantenimiento en n8n
- n8n extrae el texto (PyPDF2 node)
- n8n invoca Ollama en localhost:11434 con el contenido
- Ollama analiza el texto (Mistral 7B procesa ~100 tokens/seg en CPU)
- El resultado vuelve a n8n, se guarda en PostgreSQL, y se notifica al operario
- Cero datos salieron de tu infraestructura
Instalación y Configuración Paso a Paso
1. Instalar Ollama
En un VPS Linux o servidor local:
# Descargar e instalar Ollama
curl -fsSL https://ollama.ai/install.sh | sh
# Verificar instalación
ollama --version
# Iniciar el daemon (escucha en localhost:11434)
ollama serve
Si tienes GPU (NVIDIA, AMD), Ollama la detecta automáticamente. Si solo CPU, igual funciona (más lento).
2. Descargar un Modelo
En otra terminal:
# Descargar Mistral 7B (~5GB)
ollama pull mistral
# Listar modelos disponibles
ollama list
# Prueba rápida en CLI
ollama run mistral "¿Cuál es el riesgo de que una bomba centrífuga cavite?"
Respuesta esperada (en segundos):
La cavitación ocurre cuando la presión del lado de succión cae por debajo de la presión de vapor. Causas comunes: (1) velocidad de succión alta, (2) temperatura elevada, (3) altura de succión excesiva. Síntomas: ruido, vibración, daño del impulsor.
3. Conectar n8n a Ollama
En n8n, crea un workflow con un nodo HTTP Request:
Nodo 1: HTTP Request → Ollama
URL: http://localhost:11434/api/generate
Método: POST
Headers:
Content-Type: application/json
Cuerpo (Body):
{
"model": "mistral",
"prompt": "{{ $node.previousNode.json.text }}",
"stream": false
}
Respuesta (JSON):
{
"model": "mistral",
"created_at": "2026-09-02T12:04:00Z",
"response": "La cavitación... [análisis completo]",
"done": true,
"total_duration": 2345000000,
"load_duration": 123000000,
"prompt_eval_count": 42,
"eval_count": 156
}
Nodo 2: Procesar Respuesta
// JavaScript node en n8n
const analysis = $node.previousNode.json.response;
const duration = $node.previousNode.json.total_duration / 1e9; // segundos
return {
analysis: analysis,
processingTime: duration,
model: "mistral",
timestamp: new Date().toISOString()
};
Nodo 3: Guardar en PostgreSQL
INSERT INTO analyses (content, result, model, processing_time, created_at)
VALUES ({{ $node.input.json.text }}, {{ $node["Process Respuesta"].json.analysis }}, 'mistral', {{ $node["Process Respuesta"].json.processingTime }}, NOW())
Caso Real: Análisis Automático de Reportes de Mantenimiento
Imaginemos que tienes una planta con 50 máquinas. Cada máquina envía un reporte de mantenimiento predictivo cada día (sensores, temperatura, vibraciones, etc.). Un operario humano debería revisarlos todos y clasificarlos en 4 categorías:
- 🟢 Verde: Máquina normal, no requiere acción
- 🟡 Amarillo: Pequeña anomalía, monitorear próximos días
- 🔴 Rojo: Problema inminente, mantenimiento dentro de 48h
- ⚫ Negro: Crítico, parar máquina ahora
Sin IA local: Pagas OpenAI, envías datos, esperas. Coste: €200/mes.
Con Ollama + n8n:
Trigger: Reporte nuevo en carpeta (File Trigger)
↓
HTTP → Ollama: "Clasifica este reporte: [contenido]"
↓
Mistral analiza (2-5 segundos, CPU local)
↓
n8n obtiene: "Amarillo: vibración anormal en rodamiento, revisar próxima semana"
↓
PostgreSQL: Guardar análisis
↓
Email al operario: "Máquina XYZ: [clasificación y recomendación]"
↓
Dashboard n8n: Mostrar histórico de anomalías detectadas
Coste: €0 en IA (aparte del hardware). Privacidad: 100%.
Prompt Engineering para Ollama
Ollama responde mejor a prompts claros y estructurados. Ejemplo:
Mal prompt:
¿Qué le pasa a esta máquina?
[datos del reporte]
Buen prompt:
Eres un ingeniero de mantenimiento predictivo con 20 años de experiencia.
Analiza el siguiente reporte de máquina industrial.
REPORTE:
- Modelo: Bomba centrífuga Grundfos 1500 RPM
- Vibración RMS: 8.5 mm/s (límite: 7.1 mm/s) 🚩
- Temperatura: 65°C (normal: 55-60°C)
- Ruido: incremento 5dB en frecuencias 3-5 kHz
PREGUNTA:
Clasifica el estado (Verde/Amarillo/Rojo/Negro) y da 3 acciones recomendadas.
FORMATO RESPUESTA:
Estado: [color]
Riesgo: [1-10, siendo 10 crítico]
Causa probable: [análisis]
Acciones: [list]
Respuesta Mistral:
Estado: Amarillo
Riesgo: 6/10
Causa probable: Posible desalineación del acoplamiento o desgaste del rodamiento.
El incremento en vibraciones HF (3-5 kHz) sugiere fricción anormal.
Acciones:
1. Revisar alineación eje-motor en las próximas 72h
2. Medir temperatura en rodamiento (infrarrojo)
3. Planificar cambio preventivo de rodamientos en próximo mantenimiento programado
Seguridad: Ollama + Privacidad GDPR
Checklist de Seguridad
-
Encriptación en tránsito (TLS/SSL)
# Configurar nginx como reverse proxy con SSL # n8n → HTTPS:8443 → localhost:3000 (n8n) # n8n → HTTP:11434 → localhost:11434 (Ollama, local, sin TLS) -
Encriptación en reposo
# Discos del servidor cifrados (LUKS en Linux) # Base de datos PostgreSQL con cifrado por columnas (para datos sensibles) PRAGMA encrypted_key = 'tu_clave_fuerte'; -
Auditoría y Logs
- n8n: Activar
ENABLE_AUDITen variables de entorno - PostgreSQL:
log_statement = 'all'(registra cada query) - Ollama: Los logs no son tan detallados, pero puedes capturar las peticiones HTTP con nginx
- n8n: Activar
-
Aislamiento de Red
- Ollama: Solo escucha localhost (127.0.0.1:11434), no accesible desde internet
- n8n: Protegida por autenticación, detrás de firewall
- PostgreSQL: Solo n8n puede acceder (no expuesta)
-
Backup
# Backup diario de PostgreSQL pg_dump -U jarvis jarvis_db | gzip > backup_$(date +%Y%m%d).sql.gz # Copiar a almacenamiento cifrado (no cloud no-confiable) # Mejor: tu propio NAS en rack local
Rendimiento: Qué Esperar
Con Mistral 7B en CPU (Intel i7, 16GB RAM):
- Latencia primera token: 1-2 segundos (cargando modelo en RAM)
- Velocidad procesamiento: 20-40 tokens/segundo
- Promedio análisis (500 tokens input + 300 output): 10-15 segundos
- Simultaneidad: 1 petición CPU, 2-3 si tienes GPU
Para producción 24/7, recomendamos GPU:
- RTX 4090: 150-200 tokens/sec, 4-6 peticiones simultáneas
- RTX 4060: 60-80 tokens/sec, 1-2 peticiones simultáneas
- Costo hardware: €300-2000 (amortizable en 6 meses vs OpenAI)
Alternativa Híbrida: Ollama + OpenAI
No tienes que elegir entre todo local o todo cloud. Puedes combinar:
// En n8n
if (task === "clasificacion_simple") {
// Usa Ollama local, rápido y barato
return await callOllama(text);
} else if (task === "vision_o_analisis_complejo") {
// Usa OpenAI solo para lo que lo necesita
return await callOpenAI(text);
}
Así maximizas privacidad (datos sensibles con Ollama) y capacidad (tareas complejas con OpenAI premium).
Conclusión: El Futuro es Soberano
En 2026, la IA está evolucionando de “servicio cloud luxurioso” a “infraestructura crítica privada”. Reguladores (GDPR, NIS2, sectores público/sanidad) exigen soberanía de datos. Costes de cloud no paran de crecer. Y ahora, modelos locales de 7B parámetros (Mistral, Llama2) son lo suficientemente potentes para 80% de casos industriales.
Ollama + n8n = IA industrial privada, controlada y barata.
Si tu planta maneja datos sensibles, si Compliance te exige GDPR/NIS2 estricto, o si simplemente quieres saber dónde van tus datos: IA local no es opción, es obligación.
Próximos pasos
- Instala Ollama en un servidor test (puede ser un i5 con 8GB RAM)
- Crea un workflow de prueba en n8n invocando Ollama
- Clasifica 100 documentos reales y valida la calidad vs OpenAI
- Mide costes y latencia en tu contexto específico
- Escala a producción cuando estés seguro
Para auditorías de seguridad / cumplimiento NIS2: contacta con tu responsable de ciberseguridad. Tenemos templates de arquitectura segura para plantas críticas.