Open WebUI o n8n en Docker no se conectan a Ollama

Por MV2 de Munim, Inc. Comprobado el 12 de octubre de 2026 con la documentación de Open WebUI y n8n y el código fuente de Ollama. Esta página se tradujo con IA del original en inglés; si hay diferencias, prevalece el original.

Errores típicos: Open WebUI muestra «Ollama: Network Problem» o «Server Connection Error», o sus registros dicen Connect call failed ('127.0.0.1', 11434). La prueba de la credencial de Ollama en n8n falla con ECONNREFUSED 127.0.0.1:11434 o ECONNREFUSED ::1:11434. Dify, Flowise y AnythingLLM dan errores parecidos de «connection refused».

La causa: dentro de un contenedor, localhost y 127.0.0.1 son el propio contenedor, no su ordenador. Por defecto, Ollama escucha en 127.0.0.1:11434 en el host, así que un contenedor que usa http://localhost:11434 está llamando a la puerta equivocada.

El arreglo rápido que dan muchas guías es OLLAMA_HOST=0.0.0.0. Funciona, pero también abre Ollama, que no tiene inicio de sesión, a todos los dispositivos de su red. Pruebe antes las soluciones de abajo.

Primero, pruebe: un comando

Desde el host, compruebe que Ollama está activo: curl http://127.0.0.1:11434/api/version. Después pruebe la dirección que usa su aplicación desde dentro de un contenedor desechable:

docker run --rm --add-host=host.docker.internal:host-gateway curlimages/curl -s http://host.docker.internal:11434/api/version

Una respuesta como {"version":"0.x.y"} significa que esa URL funciona desde los contenedores. «Connection refused» o un tiempo de espera agotado significa que no; siga leyendo según su configuración. La imagen de Open WebUI incluye curl, así que también puede ejecutar docker exec open-webui curl -s http://host.docker.internal:11434/api/version.

Qué solución corresponde a su configuración

Su configuraciónURL base en la aplicaciónNotas
Docker Desktop (Mac o Windows), aplicación de Ollama en el hosthttp://host.docker.internal:11434Funciona sin más; Ollama puede quedarse en 127.0.0.1. Solución 1.
Linux, Ollama instalado en el host, aplicación en Dockerhttp://host.docker.internal:11434 más --add-hostOllama también tiene que escuchar donde los contenedores lleguen. Solución 2 o 3.
Ollama y la aplicación en el mismo archivo Composehttp://ollama:11434 (el nombre del servicio)La mejor opción; Ollama no necesita puerto publicado. Solución 4.
Ollama en Docker, aplicación instalada en el host (por ejemplo, n8n con npm)http://127.0.0.1:11434Publique con -p 127.0.0.1:11434:11434. Use 127.0.0.1, no localhost, para evitar el error ::1.

Solución 1: Docker Desktop (Mac, Windows)

Docker Desktop ofrece host.docker.internal a todos los contenedores y lo redirige a su ordenador, así que defina la URL de Ollama de la aplicación como http://host.docker.internal:11434. En Open WebUI es la variable de entorno OLLAMA_BASE_URL (o «Admin Settings» → «Connections»). En n8n, edite la «Base URL» de la credencial de Ollama. No hace falta cambiar OLLAMA_HOST en Ollama.

docker run -d -p 127.0.0.1:3000:8080 --add-host=host.docker.internal:host-gateway \
  -e OLLAMA_BASE_URL=http://host.docker.internal:11434 \
  -v open-webui:/app/backend/data --name open-webui --restart always \
  ghcr.io/open-webui/open-webui:main

127.0.0.1:3000 limita Open WebUI a este ordenador. Use -p 3000:8080 solo si otros dispositivos deben abrirlo, y en ese caso desactive el registro abierto. Para usarlo desde el teléfono sin abrirlo a la red, vea Open WebUI con Tailscale Serve.

Solución 2: Linux, la forma segura más sencilla: red del host para la aplicación

En Linux, --network=host pone el contenedor en la red del host, de modo que 127.0.0.1:11434 es de verdad el Ollama del host y Ollama puede seguir enlazado a localhost. La documentación de Open WebUI da esta solución; tenga en cuenta que el puerto pasa a ser 8080:

docker run -d --network=host \
  -e OLLAMA_BASE_URL=http://127.0.0.1:11434 \
  -v open-webui:/app/backend/data --name open-webui --restart always \
  ghcr.io/open-webui/open-webui:main

Abra http://localhost:8080. Con la red del host, Open WebUI escucha en el puerto 8080 como un programa normal, y aquí el cortafuegos del host (ufw, firewalld) sí se aplica. Permita el 8080 solo desde donde lo necesite.

Solución 3: Linux, host.docker.internal con Ollama accesible solo desde contenedores

En Linux, --add-host=host.docker.internal:host-gateway (o extra_hosts: ["host.docker.internal:host-gateway"] en Compose) apunta ese nombre a la dirección del puente de Docker, normalmente 172.17.0.1. Ollama en 127.0.0.1 no escucha ahí, así que tiene que escuchar de forma más amplia, y un cortafuegos debe dejar fuera a todos salvo a los contenedores:

  1. Haga que Ollama escuche en todas las interfaces: sudo systemctl edit ollama.service, añada
    [Service]
    Environment="OLLAMA_HOST=0.0.0.0:11434"
    y después sudo systemctl daemon-reload && sudo systemctl restart ollama.
  2. Permita solo las redes de Docker y bloquee el resto (ejemplo con ufw; las redes por defecto de Docker están en 172.16.0.0/12):
    sudo ufw allow from 172.16.0.0/12 to any port 11434 proto tcp
    sudo ufw deny 11434/tcp
    El orden importa: la regla allow debe ir primero (sudo ufw status numbered muestra el orden). Si ufw está activo con su «deny incoming» por defecto, la regla allow es lo único que deja entrar a los contenedores. Un contenedor bloqueado suele ver un tiempo de espera agotado en lugar de «refused».
  3. Desde otro dispositivo de su red, curl http://<this machine's LAN IP>:11434/api/version (con la IP de esta máquina en la red local) debería fallar ahora, mientras que la prueba del contenedor desechable de arriba funciona.

A diferencia de los puertos publicados con docker -p, que se saltan ufw, Ollama instalado en el host es un programa normal, así que estas reglas de ufw sí se le aplican.

Solución 4: ponga Ollama en el mismo archivo Compose

Los contenedores de la misma red de Compose se alcanzan por el nombre del servicio, así que Ollama no necesita puerto publicado y nada fuera de Docker puede llegar a él:

services:
  ollama:
    image: ollama/ollama
    volumes: [ "ollama:/root/.ollama" ]
    # no "ports:" - only containers on this network can reach it
  open-webui:
    image: ghcr.io/open-webui/open-webui:main
    environment:
      - OLLAMA_BASE_URL=http://ollama:11434
    ports: [ "127.0.0.1:3000:8080" ]
    volumes: [ "open-webui:/app/backend/data" ]
volumes:
  ollama: {}
  open-webui: {}

(El comentario del archivo dice: sin «ports:», solo los contenedores de esta red pueden alcanzarlo.) n8n, Dify, Flowise o AnythingLLM en el mismo archivo también usan http://ollama:11434. Para una GPU, añada al servicio ollama la reserva de dispositivos de la documentación de Docker de Ollama. Si la aplicación está en otro proyecto de Compose, conecte ambos a una misma red externa compartida.

¿Sigue fallando?

Cuando se conecte, compruebe que no ha abierto más de lo que quería: ejecute el script gratuito local-ai-checkup (solo lee y no envía nada fuera de la máquina), que informa de la dirección en la que escucha Ollama, los puertos publicados de Docker y las versiones. Vea también ¿Mi Ollama está expuesto?

¿Prefiere que se lo revisen?

MV2 de Munim, Inc. ofrece una revisión de IA local de 49 USD para una máquina, o una revisión para oficinas pequeñas de 199 USD para hasta 5 máquinas o un servidor compartido de Ollama, Open WebUI o n8n. Recibe un informe escrito de lo que está expuesto, es arriesgado o va lento y qué arreglar primero, con los comandos exactos para su sistema operativo. El informe está en inglés. Vea un informe de ejemplo (en inglés). Pague 49 USD o pague 199 USD en Stripe y después envíe a munimversion2@gmail.com la salida de python3 local_ai_checkup.py --json, su sistema operativo y para qué lo usa. MV2 nunca pide contraseñas, claves ni acceso remoto.