안녕하세요, 물개발자입니다. 오늘은 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. 원인 분석
문제의 원인을 분석해보면:
- Ollama는 기본적으로 localhost(127.0.0.1)에서만 리스닝
- Docker 컨테이너는 독립된 네트워크 환경
- 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에 바인딩하면 모든 네트워크 인터페이스에서 접근 가능하므로:
- 방화벽 설정으로 접근 제한
$ sudo ufw allow from 172.17.0.0/16 to any port 11434
- Docker 네트워크 분리
version: '3.8' networks: ollama_net: driver: bridge
마치며
Ollama와 Docker 기반 Open WebUI의 연동 문제는 네트워크 바인딩 설정으로 해결할 수 있었습니다. 이는 Docker 컨테이너와 호스트 시스템 간의 네트워크 통신을 이해하는 좋은 경험이 되었습니다.
추가 질문이나 다른 해결 방법을 알고 계신다면 댓글로 공유해 주세요!
참고자료:
'Develop' 카테고리의 다른 글
물개발자 - 프로젝트 포트폴리오 (0) | 2024.12.28 |
---|---|
음식 이미지 분석 flutter 앱 개발 (0) | 2024.12.24 |
2024 주니어 백엔드 개발자 면담: 현장에서 듣는 진짜 고민 (1) | 2024.12.18 |
식사진 - 개인정보처리방침 (0) | 2024.12.17 |
Google Play 앱 심사 거절 해결하기 - 개인정보처리방침 문제 (0) | 2024.12.14 |