Munim, Inc.의 MV2 작성. 2026년 10월 12일에 Open WebUI와 n8n 문서, Ollama 소스 코드와 대조해 확인했습니다. 이 페이지는 영어 원문을 AI로 번역한 것입니다. 내용이 다를 경우 원문이 우선합니다.
흔한 오류: Open WebUI에 "Ollama: Network Problem"이나 "Server Connection Error"가 뜨거나, 로그에 Connect call failed ('127.0.0.1', 11434)가 찍힙니다. n8n의 Ollama 자격 증명(credential) 테스트가 ECONNREFUSED 127.0.0.1:11434 또는 ECONNREFUSED ::1:11434로 실패합니다. Dify, Flowise, AnythingLLM에서도 비슷한 "connection refused" 오류가 납니다.
원인: 컨테이너 안에서 localhost와 127.0.0.1은 여러분의 컴퓨터가 아니라 그 컨테이너 자신을 가리킵니다. Ollama는 기본적으로 호스트의 127.0.0.1:11434에서 대기하므로, http://localhost:11434를 쓰는 컨테이너는 엉뚱한 집 문을 두드리고 있는 셈입니다.
많은 가이드가 알려 주는 빠른 해결책은 OLLAMA_HOST=0.0.0.0입니다. 동작은 하지만, 로그인이 없는 Ollama를 네트워크의 모든 기기에 열어 버립니다. 아래 방법을 먼저 시도해 보세요.
호스트에서 Ollama가 실행 중인지 확인합니다: curl http://127.0.0.1:11434/api/version. 그다음, 앱이 쓰는 주소를 일회용 컨테이너 안에서 테스트합니다:
docker run --rm --add-host=host.docker.internal:host-gateway curlimages/curl -s http://host.docker.internal:11434/api/version
{"version":"0.x.y"} 같은 응답이 오면 그 URL은 컨테이너에서 쓸 수 있습니다. "Connection refused"나 타임아웃이면 쓸 수 없으니, 자신의 구성에 맞는 부분을 계속 읽어 주세요. Open WebUI 이미지에는 curl이 들어 있어서 docker exec open-webui curl -s http://host.docker.internal:11434/api/version으로도 테스트할 수 있습니다.
| 내 구성 | 앱에 넣을 Base URL | 참고 |
|---|---|---|
| Docker Desktop(Mac 또는 Windows), Ollama 앱은 호스트에 설치 | http://host.docker.internal:11434 | 바로 동작합니다. Ollama는 127.0.0.1에 그대로 두면 됩니다. 방법 1. |
| Linux, Ollama는 호스트에 설치, 앱은 Docker | http://host.docker.internal:11434와 --add-host | Ollama가 컨테이너에서 닿는 곳에서도 대기해야 합니다. 방법 2 또는 3. |
| Ollama와 앱이 같은 Compose 파일 | http://ollama:11434(서비스 이름) | 가장 좋은 방법입니다. Ollama에 포트 공개가 필요 없습니다. 방법 4. |
| Ollama는 Docker, 앱은 호스트에 설치(예: npm으로 설치한 n8n) | http://127.0.0.1:11434 | -p 127.0.0.1:11434:11434로 공개합니다. ::1 오류를 피하려면 localhost 대신 127.0.0.1을 쓰세요. |
Docker Desktop은 모든 컨테이너에 host.docker.internal을 제공하고 이를 여러분의 컴퓨터로 전달합니다. 그러니 앱의 Ollama URL을 http://host.docker.internal:11434로 설정하세요. Open WebUI에서는 환경 변수 OLLAMA_BASE_URL(또는 Admin Settings → Connections)이고, n8n에서는 Ollama 자격 증명의 Base URL을 수정합니다. Ollama 쪽 OLLAMA_HOST는 바꿀 필요가 없습니다.
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으로 두면 Open WebUI는 이 컴퓨터에서만 열립니다. 다른 기기에서도 열어야 할 때만 -p 3000:8080을 쓰고, 그 경우에는 누구나 가입할 수 있는 설정을 꺼 주세요. 네트워크에 열지 않고 휴대폰에서 쓰려면 Tailscale Serve를 통한 Open WebUI를 참고하세요.
Linux에서는 --network=host를 주면 컨테이너가 호스트 네트워크에서 동작하므로, 127.0.0.1:11434가 실제로 호스트의 Ollama를 가리키고 Ollama는 localhost에 바인드한 채로 둘 수 있습니다. Open WebUI 문서에도 나오는 방법입니다. 포트가 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
http://localhost:8080을 엽니다. 호스트 네트워크에서는 Open WebUI가 일반 프로그램처럼 8080 포트에서 대기하므로, 이때는 호스트 방화벽(ufw, firewalld)이 제대로 적용됩니다. 8080은 필요한 곳에서만 허용하세요.
Linux에서는 --add-host=host.docker.internal:host-gateway(Compose에서는 extra_hosts: ["host.docker.internal:host-gateway"])가 그 이름을 Docker 브리지 주소(보통 172.17.0.1)로 연결합니다. 127.0.0.1의 Ollama는 그 주소에서 대기하지 않으므로 더 넓게 대기하도록 하고, 컨테이너가 아닌 모든 접근은 방화벽으로 막아야 합니다:
sudo systemctl edit ollama.service로 다음을 추가하고
[Service] Environment="OLLAMA_HOST=0.0.0.0:11434"
sudo systemctl daemon-reload && sudo systemctl restart ollama를 실행합니다.sudo ufw allow from 172.16.0.0/12 to any port 11434 proto tcp sudo ufw deny 11434/tcp순서가 중요합니다. allow 규칙이 먼저 와야 합니다(순서는
sudo ufw status numbered로 확인). ufw가 기본값 "deny incoming"으로 켜져 있다면, 컨테이너를 들여보내는 것은 이 allow 규칙뿐입니다. 차단된 컨테이너는 보통 "refused"가 아니라 타임아웃을 받습니다.curl http://<this machine's LAN IP>:11434/api/version(이 컴퓨터의 LAN IP로 바꿔서)을 실행하면 이제 실패해야 합니다. 반면 위의 일회용 컨테이너 테스트는 성공합니다.docker -p로 공개한 포트는 ufw를 우회하지만, 호스트에 설치한 Ollama는 일반 프로그램이므로 이 ufw 규칙이 적용됩니다.
같은 Compose 네트워크의 컨테이너끼리는 서비스 이름으로 서로 닿으므로, Ollama는 포트를 공개할 필요가 없고 Docker 밖에서는 접근할 수 없습니다:
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: {}
(파일 안의 주석은 "ports:를 쓰지 않는다. 이 네트워크의 컨테이너만 닿을 수 있다"라는 뜻입니다.) 같은 파일에 넣은 n8n, Dify, Flowise, AnythingLLM도 http://ollama:11434를 씁니다. GPU를 쓰려면 Ollama Docker 문서에 있는 장치 예약(device reservation) 설정을 ollama 서비스에 추가하세요. 앱이 다른 Compose 프로젝트에서 돌아간다면 둘 다 하나의 공유 외부 네트워크에 연결합니다.
ECONNREFUSED ::1:11434: localhost가 IPv6로 해석됐는데 Ollama는 IPv4에서 대기하고 있습니다. n8n 문서는 localhost 대신 127.0.0.1을 쓰라고 안내합니다.host.containers.internal입니다.OLLAMA_ORIGINS가 막고 있는 경우. 브라우저 점검(영어)을 참고하세요. Open WebUI, n8n, Dify는 자기 서버에서 Ollama를 호출하므로 OLLAMA_ORIGINS가 필요 없습니다. (2) 리버스 프록시나 터널이 127.0.0.1에서 대기하는 Ollama에 자기 호스트 이름을 넘기는 경우. 이 모드의 Ollama는 localhost 계열의 Host 이름만 받아들입니다. host.docker.internal이 통하는 이유도 이것입니다(.internal로 끝나기 때문). Ollama FAQ의 예시처럼 프록시가 Host: localhost:11434를 보내도록 하세요. Tailscale Serve도 같은 검사에 걸립니다. tailscale serve가 403을 반환하는 이유를 참고하세요.연결되면 의도보다 더 많이 열어 두지 않았는지 확인하세요. 무료 스크립트 local-ai-checkup(읽기 전용이며 컴퓨터 밖으로 아무것도 보내지 않음)을 실행하면 Ollama의 바인드 주소, 공개된 Docker 포트, 버전을 알려 줍니다. 내 Ollama가 외부에 노출되어 있을까?도 함께 보세요.
Munim, Inc.의 MV2는 컴퓨터 1대를 위한 로컬 AI 상태 점검(49달러)과, 최대 5대 또는 공유 Ollama·Open WebUI·n8n 서버 1대를 위한 소규모 사무실 점검(199달러)을 제공합니다. 무엇이 노출되어 있고 무엇이 위험하거나 느린지, 무엇부터 고쳐야 하는지를 여러분의 OS에 맞는 정확한 명령과 함께 보고서로 드립니다. 보고서는 영어로 작성됩니다. 보고서 샘플을 보세요. Stripe에서 49달러 결제 또는 199달러 결제 후, munimversion2@gmail.com으로 python3 local_ai_checkup.py --json의 출력, 사용 중인 OS, 용도를 이메일로 보내 주세요. MV2는 비밀번호, 키, 원격 접속을 절대 요청하지 않습니다.