ChatGPT가 OpenAI 서버가 아니라 당신의 노트북에 있었으면 좋겠다고 생각했다면, Open WebUI + Ollama가 정확히 원하는 스택입니다. Open WebUI는 세련된 채팅 인터페이스를 제공하고, Ollama는 모델을 로컬에서 실행합니다. API 키 없음, 토큰별 청구 없음, 데이터가 당신의 컴퓨터에서 나가지 않습니다. 이 가이드는 터미널에서 시작해 약 10분 만에 첫 번째 대화까지 도달시킵니다. 그 후 대부분의 튜토리얼에서 건너뛰는 내용들을 추가합니다: 음성 입출력, 파이프라인, MCP, Apple Silicon 벤치마크, 그리고 Caddy를 이용한 깔끔한 HTTPS 경로.

Open WebUI + Ollama가 정확히 무엇일까요?

Open WebUI는 오픈소스 자체 호스팅 웹 인터페이스로, Ollama(및 다른 로컬 LLM 런타임)에 ChatGPT 스타일의 채팅 UI를 제공합니다. 이 둘을 함께 사용하면 API 키 없이, 토큰당 비용 없이, 전체 데이터 제어가 가능한 자신의 컴퓨터에서 개인 AI 모델을 실행할 수 있습니다. Open WebUI는 채팅 계층이고, Ollama는 모델 계층입니다. 포트 11434의 HTTP를 통해 통신하며, 이것이 전체 아키텍처입니다.

이름이 서로 바꿔 써도 될 것처럼 들리지만 그렇지 않으므로 각 요소를 분해해 봅시다:

  • Open WebUI — 실제로 사용하는 브라우저 앱. 멀티 유저, RAG 내장, 플러그인 시스템, Docker 내에서 포트 8080에서 실행됩니다(호스트의 3000으로 매핑).
  • Ollama — 모델 서버. GGUF 파일을 가져오고(AI 모델용 MP3처럼 생각하세요), CPU/GPU에 로드한 후 포트 11434에서 정리된 HTTP API를 노출합니다.
  • 모델 — 실제 가중치 파일. llama3.2:3b, qwen2.5:14b, deepseek-r1:7b 등. ollama pull로 가져오며, Ollama의 모델 라이브러리에 나열됩니다.

이 조합이 우수한 이유: 프라이버시(데이터가 로컬에 머무름), 비용(토큰당 비용 0원), 오프라인 가능, 처음부터 멀티 유저, 실제 플러그인 생태계. 이 분야가 처음이라면 로컬에서 LLM 실행하기에 대한 우리의 가이드에서 하드웨어 측면을 다룹니다.

공식 Open WebUI 문서가 정규 참고자료입니다. 북마크해 두세요. 간결하지만 정확합니다.

Open WebUI를 Ollama와 함께 설치하려면? (빠른 설정)

Docker를 설치하고, Ollama를 설치한 후, docker run -d -p 3000:8080 --add-host=host.docker.internal:host-gateway -v open-webui:/app/backend/data --name open-webui ghcr.io/open-webui/open-webui:main을 실행하세요. http://localhost:3000 을 방문해 관리자 계정을 생성하고, Admin → Settings → Connections → Ollama에서 모델을 가져온 후 채팅을 시작하세요. 총 소요 시간: 온전한 머신에서 약 10분.

전체 과정을 단계별로 진행해봅시다:

  1. Docker Desktop을 설치하세요 — Mac/Windows는 docker.com에서 받고, Linux는 apt install docker.io 명령을 사용합니다.
  2. Ollama를 설치하세요
  3. 시작 모델을 가져오세요. 저는 llama3.2:3b로 시작하는 것을 추천합니다. 거의 모든 기기에서 빠르고 충분히 유용합니다. 가장 강력한 옵션들을 둘러보고 싶다면 최고의 오픈소스 LLM 목록을 확인하세요.
  4. Open WebUI 컨테이너를 실행하세요(정규 명령):
  5. http://localhost:3000 을 열고, 가입하면(첫 사용자가 자동으로 관리자가 됨) 채팅을 시작할 수 있습니다.

"10분" 약속에 대해: 이는 온전한 머신 기준입니다. Docker가 이미 설치되어 있고, ~2GB 이미지 풀과 ~2GB 모델 풀을 위한 양호한 인터넷이 있다는 뜻입니다. Docker 처음 설치에 캐시가 없다면? 여기에 10분을 추가하세요. 느린 연결? 추가로 5분을 더합니다. 마케팅 숫자가 아닌 정직한 기준입니다.

Docker Compose: 운영 환경 준비 설정

Open WebUI와 자체 포함된 Ollama 서비스의 재현 가능한 멀티 컨테이너 설정을 원한다면, Docker Compose가 깔끔한 경로입니다. 한 개의 YAML 파일이 두 서비스, 공유 네트워크, 데이터 지속을 위한 이름 지정 볼륨을 선언하고, 단일 docker compose up -d 명령으로 재배포할 수 있습니다. 서버, 홈랩, 또는 팀에 훌륭합니다.

사람들을 헷갈리게 하는 트릭: 두 서비스가 Compose 내에서 실행되면 host.docker.internal이 아니라 OLLAMA_BASE_URL=http://ollama:11434(Compose 서비스 이름)을 설정하세요. Docker의 내부 DNS가 자동으로 서비스 이름을 해결합니다.

실행시키세요:

두 가지 주목할 사항이 있습니다. 첫째, 이름 지정 볼륨(하단의 ollama:open-webui:)이 바인드 마운트보다 나습니다. Docker가 권한을 관리하고 채팅 히스토리/구성이 컨테이너 재구축에서도 유지됩니다. 둘째, 한 Open WebUI가 로컬 Ollama와 원격 OpenAI/Anthropic을 단일 URL을 통해 사용하기를 원한다면, LiteLLM 프록시를 앞에 놓으세요. 여전히 런타임 계층을 선택 중이라면 최고의 로컬 LLM 도구 정리에서 Ollama, vLLM, LM Studio 등을 다룹니다.

GPU 가속: NVIDIA, AMD, Apple Silicon

Ollama는 NVIDIA GPU를 NVIDIA Container Toolkit를 통해, AMD GPU를 Linux의 ROCm을 통해, Apple Silicon GPU를 Metal을 통해 네이티브로 자동 감지합니다. Open WebUI에 --gpus all을 전달할 필요가 없습니다. Ollama만 GPU가 필요합니다. 각 플랫폼에서 가장 빠른 설정은 다르며, 일부 "왜 이렇게 느릴까" 문제는 Ollama가 잘못된 위치에 있기 때문입니다.

NVIDIA (Linux + Windows WSL2)

NVIDIA Container Toolkit를 설치한 후, --gpus all로 Docker에서 Ollama를 실행하세요:

모델이 로드되는 동안 nvidia-smi로 검증하세요. ollama가 GPU 프로세스 목록에 보여야 합니다. OLLAMA_NUM_GPU 환경 변수를 사용하면 다른 워크로드와 VRAM을 주고받을 때 계층을 제한할 수 있습니다.

Apple Silicon (M1/M2/M3/M4)

Ollama를 Docker가 아닌 네이티브로 실행하세요. 아직(2026년 초 기준) Docker로의 Metal GPU 패스스루가 없어서, Mac에서 Docker화된 Ollama는 CPU로 폴백되며, M3 Max가 2015년 ThinkPad처럼 느껴질 겁니다. Open WebUI는 계속 Docker에서 실행되고, host.docker.internal:11434를 통해 Ollama에 도달합니다.

M2 Pro(16GB)에서 llama3.2:3b를 실행할 때, 대략 초당 45-55 토큰을 볼 수 있습니다. llama3.1:8b는 약 22-28 토큰/초로 떨어집니다. qwen2.5:14b는 약 9-12 토큰/초로 간신히 사용 가능합니다. 채팅에는 괜찮지만 배치 작업에는 답답합니다. 숫자는 양자화와 컨텍스트 길이에 따라 달라지지만, 이것이 대략적인 범위입니다.

모델 및 하드웨어별 토큰/초

AMD (Linux의 ROCm)

Ollama 0.5+는 RDNA2/RDNA3 카드(RX 6000/7000 시리즈, MI200/MI300 데이터센터 칩)에 대한 ROCm 지원을 포함합니다. 전용 이미지를 사용하세요:

AMD 성능은 2025년 내내 의미 있게 격차를 줄였습니다. NVIDIA 수준은 아니지만, 더 이상 과학 프로젝트는 아닙니다.

Open WebUI에 RAG(사용자 PDF)를 추가하려면 어떻게 하나요?

Open WebUI는 기본 RAG를 제공합니다. 프로필 → Workspace → Knowledge를 클릭하고, 지식 기반을 생성한 후 PDF, Word 문서, Markdown 또는 텍스트 파일을 놓으세요. 백그라운드에서 Open WebUI는 문서를 청크로 나누고, 구성된 임베딩 모델(기본값 nomic-embed-text)로 임베딩하고, ChromaDB에 저장한 후 쿼리 시점에 검색합니다. 외부 서비스는 필요 없습니다.

설정은 한 단계 더 필요합니다: 먼저 임베딩 모델을 가져오세요.

그런 다음 Admin → Settings → Documents에서 임베딩 모델을 nomic-embed-text로 설정하세요. 청크 크기(기본값 1500)와 오버랩(기본값 100)을 취향에 맞게 조정하세요. 고전적인 함정: 너무 큰 청크는 작은 모델의 컨텍스트 윈도우를 초과합니다. llama3.2:3b를 4K 컨텍스트로 실행 중이고 청크가 1500 토큰이면 실제 질문을 위한 공간이 거의 남지 않습니다. 800으로 오버랩 80으로 낮추세요.

채팅에서 지식 기반을 사용하려면 #을 입력하고 컬렉션을 선택하세요. 또는 Workspace → Models의 커스텀 모델에 영구적으로 첨부하세요. 웹 검색도 유사하게 작동합니다. Admin → Settings → Web Search에서 제공자(SearXNG, Brave, 또는 Tavily)를 켠 후 모델이 라이브 결과를 가져올 수 있습니다.

더 깊은 RAG 비교는 RAG 도구 정리를 참고하세요. ChromaDB가 규모에서 충분하지 않으면 벡터 데이터베이스 옵션 정리에서 Qdrant, pgvector 및 트레이드오프를 다룹니다.

음성 입출력: 로컬 AI와 대화하기

Open WebUI는 음성 인식(STT)과 텍스트 음성 변환(TTS) 모두를 지원합니다. STT의 경우 faster-whisper가 API 키 없이 로컬에서 실행됩니다. TTS의 경우 OpenAI의 TTS API를 연결하거나 coqui-tts 같은 로컬 엔진을 실행할 수 있습니다. 활성화되면 채팅 박스에 마이크 아이콘이 나타나고 로컬 AI가 다시 말하기 시작합니다.

Admin → Settings → Audio로 이동하세요. 두 개의 엔진, 두 개의 드롭다운.

STT 경로 — Whisper (Local)을 선택하고 모델 크기를 선택하세요: tiny, base, small, medium, 또는 large. 모델은 첫 사용 시 자동 다운로드됩니다. base는 대부분의 노트북에 적합한 선택입니다. GPU 여유가 있다면 medium을 선택하세요.

...

출처 바로가기