최근 Cursor, Claude Code, GPT, Gemini 등 다양한 AI 도구를 사용하면서도 인터넷 연결 없이 사용할 수 있는 로컬 LLM 환경에 대한 관심이 높아지고 있다. 이번 글에서는 MacBook Pro M5 32GB 환경에서 Qwen3 8B와 Gemma 3 4B를 설치하고 Open WebUI를 이용하여 ChatGPT처럼 사용하는 방법을 정리한다.
구성 목표
다음과 같은 환경을 구축하는 것을 목표로 한다.
메인 모델 - Qwen3 8B 보조 모델 - Gemma 3 4B 모델 실행 - Ollama 웹 UI - Open WebUI 개발 도구 - IntelliJ - VSCode - Cursor - Claude Code
1. Ollama 설치
먼저 Ollama를 설치한다.
brew install ollama
설치 확인
ollama --version
2. Ollama 실행
ollama serve
정상적으로 실행되면 Ollama API가 다음 포트에서 동작한다.
http://localhost:11434
3. Qwen3 8B 설치
ollama pull qwen3:8b
설치 확인
ollama list
예상 결과
NAME qwen3:8b
4. Gemma 3 4B 설치
ollama pull gemma3:4b
설치 확인
ollama list
예상 결과
NAME qwen3:8b gemma3:4b
5. Docker 설치
Open WebUI를 사용하기 위해 Docker Desktop을 설치한다.
Docker 최초 실행 시 아래와 같은 로그인 화면이 표시될 수 있다.
Welcome to Docker
이 화면에서는 로그인하지 않아도 된다.
우측 상단 Skip 클릭
Open WebUI 사용에는 Docker Hub 계정이 필수가 아니다.
6. Docker 정상 동작 확인
docker --version
docker ps
정상이라면 빈 컨테이너 목록이 출력된다.
7. Open WebUI 설치
React 개발 서버는 보통 3000 포트를 사용하고, Spring Boot는 8080 포트를 사용하므로 포트 충돌을 피하기 위해 Open WebUI는 13000 포트를 사용한다.
docker run -d \ --name open-webui \ -p 13000:8080 \ -v open-webui:/app/backend/data \ ghcr.io/open-webui/open-webui:main
8. Docker 포트 매핑 이해하기
다음 설정은 매우 중요하다.
-p 13000:8080
의미는 다음과 같다.
외부 포트 : 13000 내부 포트 : 8080
즉 브라우저에서는 다음 주소로 접속한다.
http://localhost:13000
실제 Open WebUI 컨테이너 내부에서는 8080 포트로 서비스가 동작한다.
구조를 그림으로 표현하면 다음과 같다.
브라우저 ↓ localhost:13000 ↓ Docker ↓ Open WebUI (8080)
9. Open WebUI 접속
브라우저에서 접속한다.
http://localhost:13000
최초 접속 시 관리자 계정을 생성한다.
10. Ollama 연동
Open WebUI는 자동으로 Ollama를 감지하는 경우가 많다.
수동 설정 시 다음 주소를 사용한다.
http://host.docker.internal:11434
Open WebUI를 컨테이너 없이 같은 호스트에서 직접 실행하는 경우에만 다음 localhost 주소를 검토한다.
http://localhost:11434
11. 모델 사용
연동이 완료되면 모델 목록에서 다음 모델을 선택할 수 있다.
Qwen3 8B Gemma 3 4B
권장 사용 방식은 다음과 같다.
Qwen3 8B - Java - Spring Boot - JPA - jOOQ - React - Next.js - Python - SQL - 아키텍처 검토 Gemma 3 4B - 문서 요약 - 번역 - 로그 해석 - 블로그 초안
12. 최종 권장 구성
MacBook Pro M5 32GB Ollama ├─ Qwen3 8B └─ Gemma 3 4B Open WebUI └─ localhost:13000 Ollama API └─ localhost:11434 React └─ localhost:3000 Spring Boot └─ localhost:8080
결론
Mac M5 32GB 환경에서는 Qwen3 8B를 메인 모델로 사용하고 Gemma 3 4B를 보조 모델로 사용하는 구성이 가장 균형이 좋다. Open WebUI를 함께 사용하면 ChatGPT와 유사한 인터페이스로 로컬 LLM을 사용할 수 있으며, 인터넷 연결 없이도 코드 분석, 문서 작성, 로그 분석 등의 작업을 수행할 수 있다.
연결 실패와 메모리 사용 확인
Docker 컨테이너 안의 localhost는 Mac 호스트가 아니라 그 컨테이너 자신입니다. Mac의 Ollama에 연결하는 Open WebUI 설정은 host.docker.internal을 기준으로 확인하고, 컨테이너에서 11434 포트로 접근 가능한지 점검합니다. 브라우저에서 쓰는 localhost:13000과 서버 간 연결 주소를 혼동하지 마세요. Docker Desktop 네트워킹.
ollama --version
ollama list
ollama ps
docker ps --filter name=open-webui
docker logs --tail 100 open-webui
모델 태그·양자화, 컨텍스트 길이, 동시 모델 수에 따라 메모리와 지연이 달라집니다. 활동 모니터의 메모리 압력·스왑과 첫 응답 시간을 같은 질문으로 비교하세요. 32GB라는 용량만으로 특정 모델 조합의 성능을 보장할 수는 없습니다. main 이미지 태그는 변경될 수 있으므로 재현 기록에는 실제 Open WebUI 이미지 버전 또는 digest도 남깁니다.
이어서 확인할 문제 해결 글
로컬 모델 설치 후 코드베이스 RAG 구성에는 Open WebUI에서 GitHub 프로젝트를 학습시켜 Spring Boot 소스를 기억하게 만드는 방법 (RAG 구축 가이드) 글을 함께 참고하세요.