본문 바로가기

Develop

Ubuntu에서 Ollama와 Docker 기반 Open WebUI 연동 트러블슈팅

안녕하세요, 물개발자입니다. 오늘은 Ollama와 Open WebUI를 연동하면서 겪었던 네트워크 연결 이슈와 해결 과정을 공유하려 합니다.

1. 구성 환경

  • Ubuntu Linux
  • NVIDIA GeForce RTX 2080
  • Ollama (네이티브 설치)
  • Open WebUI (Docker 컨테이너)

2. 문제 상황

Open WebUI를 Docker로 실행하고 Ollama에 연결을 시도했을 때 다음과 같은 오류가 발생했습니다:

INFO  [open_webui.apps.ollama.main] get_all_models()                                                                   
ERROR [open_webui.apps.ollama.main] Connection error: Cannot connect to host host.docker.internal:11434 ssl:default [Connect call failed ('172.17.0.1', 11434)]

이는 Docker 컨테이너에서 호스트 시스템의 Ollama 서비스에 접근하지 못하는 문제였습니다.

3. 원인 분석

문제의 원인을 분석해보면:

  1. Ollama는 기본적으로 localhost(127.0.0.1)에서만 리스닝
  2. Docker 컨테이너는 독립된 네트워크 환경
  3. host.docker.internal이 172.17.0.1로 해석되지만 Ollama가 해당 인터페이스에서 리스닝하지 않음

4. 해결 방법

4.1 Ollama 바인딩 주소 변경

Ollama를 모든 네트워크 인터페이스에서 리스닝하도록 설정:

# Ollama 서비스 중지
$ sudo systemctl stop ollama

# 모든 인터페이스에서 리스닝하도록 실행
$ OLLAMA_HOST=0.0.0.0 ollama serve

# 연결 확인
$ curl http://localhost:11434/api/tags

4.2 Docker Compose 설정

version: '3.8'
services:
  openwebui:
    image: ghcr.io/open-webui/open-webui:main
    ports:
      - "3000:8080"
    environment:
      - OLLAMA_API_BASE_URL=http://host.docker.internal:11434
    extra_hosts:
      - "host.docker.internal:host-gateway"

5. 작동 확인

Open WebUI가 정상적으로 Ollama와 통신하는지 확인:

# Docker 로그 확인
$ docker compose logs -f openwebui

# 예상되는 출력
INFO  [open_webui.apps.ollama.main] Successfully connected to Ollama at http://host.docker.internal:11434

6. 보안 고려사항

Ollama를 0.0.0.0에 바인딩하면 모든 네트워크 인터페이스에서 접근 가능하므로:

  1. 방화벽 설정으로 접근 제한
  2. $ sudo ufw allow from 172.17.0.0/16 to any port 11434
  3. Docker 네트워크 분리
  4. version: '3.8' networks: ollama_net: driver: bridge

마치며

Ollama와 Docker 기반 Open WebUI의 연동 문제는 네트워크 바인딩 설정으로 해결할 수 있었습니다. 이는 Docker 컨테이너와 호스트 시스템 간의 네트워크 통신을 이해하는 좋은 경험이 되었습니다.

추가 질문이나 다른 해결 방법을 알고 계신다면 댓글로 공유해 주세요!

참고자료: