Monta tu propia suite de automatización local con Docker, n8n y Ollama

Automatización con IA
Solucionex
27
Ago 25

En este artículo te enseñamos cómo desplegar una potente suite de automatización en tu entorno local utilizando herramientas open source: n8n para los flujos de trabajo, Ollama como motor LLM local, y Docker Compose para orquestarlo todo fácilmente.

🧪 ¿Qué vamos a construir?

Crearemos un entorno que permite automatizar tareas con flujos visuales gracias a n8n y resolver peticiones de lenguaje natural con Ollama, todo ejecutándose en tu equipo.

Como ejemplo práctico, desarrollaremos un flujo de trabajo en n8n que:

  1. Leemos un archivo PDF desde el disco.
  2. Extraemos su contenido en texto.
  3. Construimos un prompt para Ollama solicitando un resumen del contenido.
  4. Enviamos la petición a Ollama para que procese el prompt.
  5. Devolvemos el resumen en formato JSON.

⚙️ Requisitos previos

  • Docker y Docker Compose instalados.
  • Tarjeta gráfica compatible con aceleración por GPU (recomendado para Ollama).
  • Nvidia Container Toolkit habilitado para el uso de la GPU con Docker.
  • Un archivo PDF de ejemplo para probar.

🐳 Paso 1: Preparar el entorno con Docker Compose

Creamos un archivo docker-compose.yml con los siguientes servicios:

services:
  n8n:
    image: n8nio/n8n:latest
    container_name: n8n
    restart: always
    ports:
      - "${N8N_PORT}:5678"
    environment:
      - N8N_BASIC_AUTH_ACTIVE=${N8N_BASIC_AUTH_ACTIVE}
      - N8N_BASIC_AUTH_USER=${N8N_BASIC_AUTH_USER}
      - N8N_BASIC_AUTH_PASSWORD=${N8N_BASIC_AUTH_PASSWORD}
      - N8N_HOST=localhost
      - N8N_PORT=5678
      - N8N_PROTOCOL=http
      - NODE_ENV=production
      - TZ=Europe/Madrid
    volumes:
      - n8n_data:/home/node/.n8n
      - ./input:/files #Directorio donde tendremos el archivo PDF
  ollama:
    image: ollama/ollama
    environment:
      - NVIDIA_VISIBLE_DEVICES=all
      - NVIDIA_DRIVER_CAPABILITIES=compute,utility,graphics
    gpus: all
    volumes:
      - ollama_data:/root/.ollama
    restart: unless-stopped
volumes:
  ollama_data:
  n8n_data:

Puedes definir las variables de entorno en un archivo .env:

N8N_PORT=5678
N8N_BASIC_AUTH_ACTIVE=true
N8N_BASIC_AUTH_USER=admin
N8N_BASIC_AUTH_PASSWORD=admin123
DATA_FOLDER=/home/node/.n8n

Iniciamos el entorno con:

docker compose up -d

🧠 Paso 2: Cargar un modelo en Ollama

Una vez arrancado el contenedor ollama, descarga el modelo que prefieras (por ejemplo llama3):

docker compose exec ollama ollama pull llama3

Esto pondrá en marcha el servidor local de inferencia LLM en http://localhost:11434.

🔧 Paso 3: Crear el flujo en n8n

Accede a http://localhost:5678 con las credenciales que hayas definido.

Flujo de automatización

Crea un nuevo workflow que contenga los siguientes nodos:

1. Comienzo

Creamos un nuevo nodo de comienzo haciendo click con el botón derecho y seleccionando la opción 'Add node' y en la barra lateral que aparecerá seleccionamos la opción 'Trigger manually'. En el editor aparecerá un nuevo artefacto con el icono del puntero.

2. Leer archivo PDF

Hacemos click sobre el símbolo '+' que aparece a la derecha del artefacto y en la barra que aparece a la derecha buscamos la opción 'Read/Write Files From Disk' y a continuación seleccionamos la opción 'Read File(s) From Disk'. Esto abrirá una nueva ventana en la que tendremos que definir la ruta del archivo, en nuestro caso /files/ejemplo.pdf

Leer archivo PDF

3. Extraer texto del PDF

Una vez tenemos acceso al archivo, procedemos a su lectura. Para ello hacemos el mismo paso anterior pero seleccionando la opción 'Extract from File' y luego seleccionamos 'Extract from PDF'. Configuramos el nuevo artefacto como se muestra en la siguiente imagen.

Extraer texto de PDF

4. Construir prompt

A continuación, para construir nuestro prompt, necesitaremos crear un artefacto que nos permita ejecutar un código Javascript. Para ello seleccionamos la opción 'Code' y añadimos el siguiente fragmento de código.

const pdf = $input.first().json.text;
const prompt = `Hazme un resumen del siguiente documento: ${pdf}`;
return [{ json: { prompt } }];

 

Construir prompt

5. Petición a Ollama

Ya con nuestro prompt listo, lo único que nos queda es enviarlo al servicio de Ollama. Para ello añadimos un nuevo artefacto de tipo 'HTTP Request' y los configuramos de la siguiente manera:

  • Método: POST
  • URL: http://ollama:11434/api/generate
  • Headers: Content-Type: application/json
  • Body (RAW JSON):
{
  "model": "llama3",
  "prompt": "{{$json["prompt"]}}",
  "stream": false
}

 

Petición HTTP a Ollama

6. Procesar respuesta

Para terminar, aunque no es necesario, vamos a hacer un ejemplo de lo que en otro caso sería un procesamiento de la respuesta que nos devuelve Ollama. Para ello volvemos a crear una función con el artefacto 'Code' y le añadimos el siguiente código Javascript:

// Obtener el texto de la respuesta
const raw = $('Petición HTTP a Ollama').first().json.response;
// Devolver el texto formateado
return [{ json: { 'resumen' : raw } }];

 

Devolver resultado procesado

✅ Resultado

Volvemos al editor y ejecutamos el flujo completo pulsando en el botón 'Execute workflow'. Esto iniciará todo el proceso, mostrándonos el log de ejecución y al finalizar nos devolverá un resultado como el que podemos observar en la siguiente imagen:

Resultado de nuestra automatización

🏁 Conclusión

Esta solución demuestra cómo puedes combinar herramientas open source para construir flujos de automatización avanzados, sin depender de servicios externos. Es ideal para entornos seguros, pruebas internas, o desarrollos rápidos que no requieran de procesos muy costosos de cómputo y uso de GPU.

Además, este enfoque es especialmente útil cuando se trabaja con datos sensibles o comprometidos, ya que permite ejecutar modelos de inteligencia artificial en entornos propios, sin enviar información a servicios externos, garantizando así la privacidad y el control total sobre los datos.

Con n8n + Ollama + Docker tienes a tu alcance una suite de automatización avanzada, extensible y fácil de desplegar en cualquier tipo de entorno.


¿Quieres integrar automatizaciones o soluciones IA en los procesos de tu negocio? ¿Te gustaría explorar otros casos de uso personalizados? Contáctanos y te ayudaremos.

n8n
docker
ollama
Inteligencia artificial
automatización