Ollama와 Open WebUI를 함께 실행할 때는 웹 화면, 모델 API, 데이터 저장소를 각각 확인해야 원인을 빠르게 찾을 수 있습니다. 아래에서는 두 서비스를 분리된 Docker 환경에서 연결해 기동·API 응답·볼륨 유지 과정을 설명합니다.
배포 예시의 구성 요소
Ollama와 Open WebUI는 Compose 기본 네트워크에서 서비스 이름 ollama로 통신하고, 데이터는 이름 있는 볼륨에 저장합니다. 아래 Compose 예시는 Ollama API를 NAS의 loopback 주소에만 바인딩해 다른 기기에서 직접 접근하지 못하게 구성합니다.
services:
ollama:
image: ollama/ollama
container_name: ollama
ports:
- "127.0.0.1:11434:11434"
volumes:
- ollama_data:/root/.ollama
restart: unless-stopped
open-webui:
image: ghcr.io/open-webui/open-webui:main
container_name: open-webui
ports:
- "3000:8080"
environment:
- OLLAMA_BASE_URL=http://ollama:11434
volumes:
- open_webui_data:/app/backend/data
depends_on:
- ollama
restart: unless-stopped
volumes:
ollama_data:
open_webui_data:
docker compose up -d
docker exec -it ollama ollama pull llama3
docker compose ps
docker compose logs -f ollama
depends_on은 시작 순서를 정하지만 Ollama API 준비 완료까지 보장하는 healthcheck는 아닙니다. 운영에서는 이미지 태그와 digest를 기록하고, 모델 크기와 메모리 요구량을 확인한 뒤 모델을 선택합니다. GPU 사용 시에는 로컬 LLM의 VRAM 선택 기준에서 모델 크기와 문맥 길이가 메모리에 미치는 영향을 함께 확인하세요.
Ollama와 Open WebUI 연결을 확인합니다
검증 환경의 Compose는 운영 환경과 분리된 프로젝트·네트워크·볼륨을 사용하고 두 포트를 모두 127.0.0.1에만 바인딩합니다. Ollama /api/tags와 Open WebUI /health가 각각 HTTP 200을 반환한 뒤, 공식 라이브러리의 smollm2:135m-instruct-q4_1 모델 98,375,153바이트를 내려받았습니다.
짧은 생성 요청은 done=true, done_reason=stop, response_nonempty=true를 반환했습니다. Open WebUI 컨테이너 안에서도 http://ollama:11434/api/tags가 HTTP 200과 같은 모델 목록을 반환했습니다. 다음 화면은 재시작 뒤 Open WebUI가 해당 모델을 다시 표시한 실제 결과입니다.

이 예시는 모델 품질 평가가 아니라 생성 응답과 서비스 간 연결 확인에 초점을 둡니다. Ollama Generate API는 response와 완료 상태를 반환하며, 사용한 작은 모델의 크기와 실행 명령은 Ollama 모델 페이지에서 확인할 수 있습니다.
재시작 뒤 데이터 유지 확인
두 데이터 볼륨에 테스트 파일을 기록하고 컨테이너 두 개를 재시작했습니다. 시작 시각이 모두 바뀐 뒤에도 Ollama 모델 목록, Ollama 볼륨 마커, Open WebUI 볼륨 마커가 남았습니다. 따라서 이 예시 구성에서는 컨테이너 재시작과 볼륨 데이터 유지가 분리되어 동작했습니다.
docker compose down은 이름 있는 볼륨을 남기지만 docker compose down -v는 Compose가 관리하는 이름 있는 볼륨도 제거합니다. Docker 공식 설명에 따르면 외부로 선언된 볼륨은 제거 대상이 아닙니다. 격리 예시의 docker compose config에서도 관리 볼륨과 external: true 볼륨이 구분됐습니다. 이는 설정 해석 확인이며 실제 볼륨 삭제 실험은 하지 않았습니다. 테스트가 끝난 뒤에는 예시용 컨테이너·네트워크·볼륨만 down -v로 정리하고 운영 컨테이너는 건드리지 않습니다.
화면과 모델이 다르게 보일 때 확인합니다
Open WebUI 화면만 열리고 모델이 보이지 않으면 먼저 OLLAMA_BASE_URL이 Compose 네트워크에서 접근 가능한 http://ollama:11434인지 확인합니다. 다음으로 Open WebUI 컨테이너 안에서 /api/tags를 요청해 네트워크 연결과 모델 목록을 분리해서 검사합니다.
호스트의 curl -sS http://localhost:11434/api/tags가 실패하면 Ollama 프로세스와 포트 바인딩을 확인합니다. API는 정상인데 생성만 실패하면 모델 다운로드 상태, 정확한 모델 이름, Ollama 로그 순서로 범위를 줄입니다. 외부 접속이 필요할 때도 모델 API를 직접 공개하기보다 인증과 TLS를 제공하는 역방향 프록시 뒤에 둡니다.
공식 구성 기준은 Ollama Docker, Open WebUI 빠른 시작, Open WebUI 환경 변수, Docker Compose config에서 확인할 수 있습니다.
이 구성은 Docker 환경의 기동·API 응답·볼륨 유지 흐름을 기준으로 설명합니다. NAS의 방화벽과 외부 공개 경로는 제품·네트워크 구성에 따라 달라지므로 해당 환경의 설정을 별도로 확인하세요.