Guía de despliegue

Stack de IA open source en VPS: Ollama, Open WebUI y n8n

Desplegar en un VPS Cloud →

Tutorial

Stack de IA open source en VPS: Ollama, Open WebUI y n8n

Inteligencia Artificial8 min de lectura7 pasos

Ollama ejecuta un LLM directamente en su servidor. Open WebUI añade una interfaz de chat multiusuario. n8n conecta ambos con sus herramientas para automatizar pipelines de IA — resúmenes, clasificación, generación de contenido. Los tres son open source, cada uno dispone de una imagen Docker oficial, y sus estrellas combinadas en GitHub superan los 560.000: Ollama y n8n se acercan cada uno a los 205.000, Open WebUI supera los 152.000. Esta combinación se cita regularmente en r/selfhosted como la más solicitada para construir un pipeline de IA self-hosted completo en septiembre de 2026. Esta guía le muestra cómo ensamblarlos en un solo VPS y hacer que colaboren sin enviar un solo token a una API cloud de terceros.

Contenido· Por qué ensamblar este stack en lugar de usar cada herramienta por separado1/9
  1. 01Por qué ensamblar este stack en lugar de usar cada herramienta por separado
  2. 02Lo que el stack aporta concretamente
  3. 03Requisitos: RAM, CPU y dominio
  4. 04Desplegar el stack con Docker Compose
  5. 05RAM justa: cargar el modelo bajo demanda
  6. 06Asegurar el stack antes de exponerlo
  7. 07Perfiles de VPS para el stack
  8. 08Caso de uso: automatizar un pipeline de resumen con n8n
  9. 09Documentación oficial

Por qué ensamblar este stack en lugar de usar cada herramienta por separado

Ollama, Open WebUI y n8n se citan regularmente juntos en r/selfhosted como la combinación más solicitada para un pipeline de IA self-hosted completo. La razón es sencilla: tomadas por separado, cada herramienta resuelve un tercio del problema. Ollama expone una API local compatible con OpenAI — pero sin interfaz para sus usuarios. Open WebUI proporciona esa interfaz — pero sin automatización. n8n orquesta flujos de trabajo — pero sin un motor LLM integrado debe llamar a una API externa de pago. Las tres juntas forman un pipeline autónomo: la inferencia permanece en su máquina, el chat es accesible desde un navegador, y sus automatizaciones consumen directamente la API local de Ollama a través del nodo HTTP Request nativo de n8n, sin ningún plugin de terceros y sin coste por token. Todos los datos — prompts, documentos, historiales de conversación — permanecen en sus volúmenes Docker.

Lo que el stack aporta concretamente

  • Inferencia privada — Mistral 7B, Llama 3, Phi-3 o cualquier modelo GGUF se ejecuta localmente; ningún prompt abandona nunca su VPS.
  • Interfaz de chat multiusuario — Open WebUI expone cuentas separadas, historiales aislados y un endpoint compatible con la API OpenAI de Ollama.
  • Automatización sin plugins — n8n consume http://ollama:11434 mediante su nodo HTTP Request nativo; la documentación n8n.io/integrations confirma que no se requiere ninguna dependencia adicional.
  • Coste predecible — un único precio mensual de VPS reemplaza las tarifas por token de una API cloud; 8 GB de RAM son suficientes para Mistral 7B, Open WebUI y n8n en modo cola.
  • Control de versiones — cada herramienta se actualiza de forma independiente; ninguna migración forzada impuesta por un proveedor SaaS.
  • Portabilidad total — un docker compose down && docker compose up basta para migrar el stack a un VPS más potente; los volúmenes Docker transportan todo el estado.
  • Imágenes Docker oficiales verificadasdocker.io/ollama/ollama, ghcr.io/open-webui/open-webui y docker.io/n8nio/n8n son mantenidas por cada proyecto respectivo.
  • Malla interna segura — los tres servicios se comunican a través de una red Docker privada; ningún puerto LLM queda expuesto públicamente.

Requisitos: RAM, CPU y dominio

La RAM es el factor limitante. Ollama cargado con Mistral 7B consume entre 5 y 6 GB según la cuantización elegida (documentado en el repositorio de Ollama). Open WebUI requiere aproximadamente 256 MB adicionales. n8n en modo cola añade aproximadamente 512 MB. El total ronda por tanto los 7 GB bajo carga ligera, lo que significa que un VPS con 8 GB de RAM soporta el stack completo sin swap activo — un VPS {{vps.business.name}} con {{vps.business.vcpu}} vCPU y {{vps.business.ram}} es el perfil de referencia para esta configuración. Para modelos más grandes (13B y superiores), calcule 16 GB. En almacenamiento, prevea al menos 20 GB para las capas Docker y los modelos. Necesitará un subdominio para cada servicio expuesto, Docker y Docker Compose instalados, y el puerto 443 abierto en su firewall.

Desplegar el stack con Docker Compose

  1. Preparar el VPS

    Conéctese por SSH e instale Docker si no lo está ya: curl -fsSL https://get.docker.com | sh. Verifique que Docker Compose está disponible con docker compose version. Cree un directorio de trabajo: mkdir -p /opt/ia-stack && cd /opt/ia-stack.

  2. Escribir el docker-compose.yml

    Declare los tres servicios en un único archivo docker-compose.yml sobre una red interna compartida:

    services:
      ollama:
        image: docker.io/ollama/ollama
        volumes:
          - ollama_data:/root/.ollama
        networks:
          - ia
        restart: unless-stopped
    
      open-webui:
        image: ghcr.io/open-webui/open-webui:main
        environment:
          - OLLAMA_BASE_URL=http://ollama:11434
        volumes:
          - webui_data:/app/backend/data
        networks:
          - ia
        restart: unless-stopped
    
      n8n:
        image: docker.io/n8nio/n8n
        environment:
          - N8N_BASIC_AUTH_ACTIVE=true
          - N8N_BASIC_AUTH_USER=admin
          - N8N_BASIC_AUTH_PASSWORD=cambie-esta-contrasena
          - WEBHOOK_URL=https://n8n.su-dominio.com
        volumes:
          - n8n_data:/home/node/.n8n
        networks:
          - ia
        restart: unless-stopped
    
    networks:
      ia:
        driver: bridge
    
    volumes:
      ollama_data:
      webui_data:
      n8n_data:

    Ningún puerto queda expuesto en el host: el reverse proxy será la única puerta de entrada.

  3. Iniciar los contenedores

    Lance el stack: docker compose up -d. Verifique que los tres contenedores están activos con docker compose ps. Para consultar los registros de un servicio: docker compose logs -f ollama. En este punto, ningún servicio es accesible desde el exterior.

  4. Descargar un modelo en Ollama

    Entre en el contenedor de Ollama para obtener un modelo: docker compose exec ollama ollama pull mistral. El comando descarga y cuantiza el modelo en el volumen ollama_data. Verifique la lista de modelos disponibles con docker compose exec ollama ollama list. Open WebUI detectará automáticamente los modelos presentes en Ollama al arrancar.

  5. Configurar el reverse proxy

    Instale Caddy o Nginx en el host para exponer Open WebUI y n8n sobre HTTPS. Con Caddy, dos bloques bastan en su Caddyfile:

    chat.su-dominio.com {
      reverse_proxy open-webui:8080
    }
    
    n8n.su-dominio.com {
      reverse_proxy n8n:5678
    }

    Caddy obtiene y renueva los certificados Let's Encrypt automáticamente. Ollama no queda expuesto directamente — permanece accesible solo desde los otros contenedores a través de la red ia.

  6. Crear la cuenta de administrador de Open WebUI

    Abra https://chat.su-dominio.com en su navegador. En el primer acceso, Open WebUI le invita a crear una cuenta de administrador (correo electrónico + contraseña). Esta cuenta es local a su instancia — ningún dato transita a un servicio externo. Puede entonces crear cuentas adicionales desde la interfaz de administración y seleccionar un modelo predeterminado entre los listados por Ollama.

  7. Conectar n8n a la API de Ollama

    En n8n (https://n8n.su-dominio.com), cree un flujo de trabajo y añada un nodo HTTP Request. Configúrelo así: método POST, URL http://ollama:11434/api/generate, cuerpo JSON {"model": "mistral", "prompt": "{{ $json.prompt }}", "stream": false}. n8n se comunica con Ollama a través de la red Docker interna — sin clave API, sin cuota externa. Este nodo es nativo de n8n y está documentado en n8n.io/integrations.

RAM justa: cargar el modelo bajo demanda

Por defecto, Ollama mantiene el modelo en memoria durante 5 minutos tras la última solicitud y luego lo descarga. Este comportamiento es configurable mediante la variable OLLAMA_KEEP_ALIVE. En un VPS con 8 GB, establecer OLLAMA_KEEP_ALIVE=0 libera RAM entre las llamadas programadas de n8n — útil si Open WebUI y n8n no funcionan simultáneamente a plena carga. Por el contrario, OLLAMA_KEEP_ALIVE=-1 mantiene el modelo en memoria permanentemente para respuestas sin retardo de carga.

Asegurar el stack antes de exponerlo

Un stack de IA self-hosted maneja datos sensibles: prompts, claves de flujos de trabajo, historiales de conversación. Antes de cualquier exposición pública, verifique tres puntos. Primero, cierre el puerto 11434 de Ollama en el host (ufw deny 11434) — debe ser accesible únicamente desde la red Docker interna, nunca desde el exterior; un puerto LLM abierto expone la API de generación sin autenticación. Segundo, cambie la contraseña de autenticación de n8n en las variables de entorno; la autenticación HTTP Basic está habilitada por defecto en la configuración anterior, pero utilice una contraseña larga y aleatoria. Tercero, active la autenticación en Open WebUI: por defecto, cualquier persona que acceda a la URL puede crear una cuenta — restrinja los registros desactivando ENABLE_SIGNUP una vez creadas sus cuentas. Los volúmenes Docker (ollama_data, webui_data, n8n_data) deben incluirse en sus copias de seguridad periódicas; contienen el estado completo del stack.

Perfiles de VPS para el stack

Desplace la tabla

PerfilRAMCaso de uso recomendado
VPS Start4 GBPruebas y desarrollo — modelos ligeros (Phi-3 Mini, Gemma 2B)
VPS Power8 GBUso moderado — Mistral 7B, uno o dos usuarios simultáneos
VPS Business16 GBStack completo — Mistral 7B o Llama 3 8B, equipo, flujos n8n programados

Caso de uso: automatizar un pipeline de resumen con n8n

Un caso de uso concreto ilustra el valor del stack ensamblado. Imagine un flujo de trabajo de n8n activado por un Webhook: recibe la URL de un artículo, obtiene el texto mediante un nodo HTTP, luego lo envía a Ollama para su resumen. El nodo HTTP Request apunta a http://ollama:11434/api/generate con el modelo mistral y un prompt del tipo Resume este texto en 3 puntos clave: {{$json.text}}. La respuesta se analiza y se envía a Slack, por correo electrónico o se vuelca en una base de datos — según los nodos siguientes del flujo. Este tipo de pipeline — scraping → LLM → acción — no requiere ninguna clave API externa, se ejecuta continuamente en su VPS y consume cero coste por token. Otros pipelines habituales: clasificación de tickets de soporte entrantes, generación de descripciones de producto a partir de fichas técnicas, o extracción de entidades en documentos contractuales. En todos estos casos, los datos nunca abandonan su infraestructura. Para pipelines más complejos que involucren documentos PDF o bases de datos vectoriales, puede añadir Flowise o LangFlow en la misma red Docker, usando Ollama como proveedor de inferencia común.

Documentación oficial

Cada herramienta tiene su documentación de referencia para la configuración avanzada: Ollama en GitHub, documentación de Open WebUI y documentación de n8n. Esta guía cubre el ensamblaje en VPS; la documentación del editor sigue siendo la referencia para opciones avanzadas, actualizaciones mayores y casos de uso específicos de cada herramienta.

Su stack de IA en un VPS ServOrbit

Un VPS `{{vps.business.name}}` (8 vCPU, 16 GB de RAM, acceso root, IPv4 dedicada) soporta el stack completo Ollama + Open WebUI + n8n. Centros de datos europeos, SSD NVMe, escalabilidad vertical bajo demanda. Desde `{{vps.start.price}}`/mes.

¿Necesita ayuda?

Consulte nuestro centro de ayuda y nuestra FAQ, o contacte con nuestro equipo: llamada, WhatsApp o correo electrónico. Soporte en francés, inglés y árabe.

Escribir por WhatsAppse abre en una pestaña nueva