
10분 만에 로컬 ChatGPT 구축하기: Open WebUI + Ollama (2026)
ChatGPT가 OpenAI의 서버가 아닌 여러분의 노트북에서 실행되기를 바랐다면, Open WebUI + Ollama는 정확히 여러분이 원하는 스택입니다. Open WebUI는 세련된 채팅 인터페이스를 제공하고, Ollama는 모델을 로컬에서 실행합니다. API 키도, 토큰당 과금도, 머신 밖으로 유출되는 데이터도 없습니다. 이 가이드는 깨끗한 터미널 상태에서 첫 채팅까지 약 10분 만에 도달하게 해주고, 대부분의 튜토리얼이 건너뛰는 부분들(음성 입출력, 파이프라인, MCP, Apple Silicon 벤치마크, Caddy를 통한 깔끔한 HTTPS 경로)을 추가로 다룹니다.
핵심 요약:
- Open WebUI는 자체 호스팅 가능한 ChatGPT 스타일의 프론트엔드이며, Ollama는 이를 구동하는 로컬 모델 런너입니다.
- 단일 컨테이너 Docker 경로를 사용하면 준비된 환경에서 약 10분 만에 첫 채팅이 가능합니다.
- "연결할 수 없음" 오류의 90%는
OLLAMA_BASE_URL을http://host.docker.internal:11434로 설정하면 해결됩니다.- Open WebUI의 강력한 기능은 파이프라인/함수, 네이티브 RAG, 음성 입출력, MCP이며, 이는 LM Studio가 따라오지 못하는 부분입니다.
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의 모델 라이브러리에 목록이 있습니다.
이 조합이 승리하는 이유: 프라이버시(데이터가 로컬에 유지됨), 비용(토큰당 제로), 오프라인 가능, 기본 다중 사용자 지원, 그리고 진정한 플러그인 생태계입니다. 이 분야가 처음이라면, 하드웨어 측면을 다루는 저희의 로컬에서 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 설치
# macOS / Linux
curl -fsSL https://ollama.com/install.sh | sh
# Windows: download installer from ollama.com3. 시작용 모델 가져오기. 거의 모든 환경에서 빠르고 유용하게 느껴질 만큼 똑똑한 llama3.2:3b로 시작하는 것을 추천합니다. 가장 강력한 옵션들을 둘러보고 싶다면 최고의 오픈 소스 LLM 목록을 확인하세요.
ollama pull llama3.2:3b4. Open WebUI 컨테이너 실행 (표준 명령어):
docker run -d \
-p 3000:8080 \
--add-host=host.docker.internal:host-gateway \
-v open-webui:/app/backend/data \
--name open-webui \
--restart always \
ghcr.io/open-webui/open-webui:main5. http://localhost:3000 열기, 가입하기(첫 번째 사용자가 자동으로 관리자가 됨), 이제 채팅할 수 있습니다.
프로 팁: Apple Silicon Mac에서는 Ollama를 Docker가 아닌 네이티브로 실행하세요. 이는 설계상 Metal GPU를 사용하도록 하기 위함입니다. Open WebUI는 Docker에서 실행되며, 둘은
host.docker.internal:11434를 통해 통신합니다.
'10분'이라는 약속에 대하여: 이는 Docker가 이미 설치되어 있고, ~2GB 이미지 풀링 및 ~2GB 모델 풀링을 위한 괜찮은 인터넷 연결이 있는 '준비된 머신' 기준입니다. 캐시가 없는 상태에서 처음으로 Docker를 설치한다면? 여기에 10분을 더 추가하세요. 느린 연결인가요? 5분을 더 추가하세요. 마케팅 숫자가 아닌 솔직한 기준선입니다.
Docker Compose: 프로덕션 준비 완료 설정
Open WebUI와 자체 포함된 Ollama 서비스를 위한 재현 가능하고 다중 컨테이너 설정을 원한다면, Docker Compose가 더 깔끔한 경로입니다. 하나의 YAML 파일이 두 서비스, 공유 네트워크, 영속성을 위한 명명된 볼륨을 선언하며, 단일 docker compose up -d로 다시 배포할 수 있게 해줍니다. 서버, 홈랩 또는 팀에게 적합합니다.
사람들이 헷갈리는 요령: 두 서비스가 모두 Compose 내부에서 실행될 때, OLLAMA_BASE_URL=http://ollama:11434(Compose 서비스 이름)로 설정해야 하며, host.docker.internal이 아닙니다. Docker의 내부 DNS가 서비스 이름을 자동으로 해결합니다.
services:
ollama:
image: ollama/ollama:latest
container_name: ollama
ports:
- "11434:11434"
volumes:
- ollama:/root/.ollama
restart: always
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:/app/backend/data
depends_on:
- ollama
restart: always
volumes:
ollama:
open-webui:실행하기:
docker compose up -d
docker compose logs -f두 가지 주목할 점이 있습니다. 첫째, 여기서는 바인드 마운트보다 명명된 볼륨(ollama: 및 open-webui: 하단 참조)이 더 낫습니다. Docker가 권한을 관리하며, 채팅 기록/구성이 컨테이너 재빌드 시에도 유지됩니다. 둘째, 하나의 Open WebUI가 로컬 Ollama와 원격 OpenAI/Anthropic에 단일 URL을 통해 연결되기를 원한다면, 앞에 LiteLLM 프록시를 배치하세요. 여전히 런타임 계층을 선택 중이라면, Ollama, vLLM, LM Studio 등을 다루는 최고의 로컬 LLM 도구 모음을 참고하세요.
GPU 가속: NVIDIA, AMD 및 Apple Silicon
Ollama는 NVIDIA Container Toolkit을 통해 NVIDIA GPU를, Linux에서 ROCm을 통해 AMD GPU를, 그리고 Metal을 통해 Apple Silicon GPU를 네이티브로 자동 감지합니다. Open WebUI에 --gpus all을 전달하지 않아도 됩니다. GPU가 필요한 것은 Ollama뿐입니다. 각 플랫폼에서의 가장 빠른 설정은 다르며, 일부 "왜 이렇게 느리지?" 하는 순간들은 Ollama가 잘못된 위치에 있기 때문인 경우가 많습니다.
NVIDIA (Linux + Windows WSL2)
NVIDIA Container Toolkit을 설치한 후, Docker에서 Ollama를 --gpus all 옵션과 함께 실행하세요:
docker run -d --gpus=all \
-v ollama:/root/.ollama \
-p 11434:11434 \
--name ollama \
ollama/ollama모델이 로드된 상태에서 nvidia-smi로 확인하면 GPU 프로세스 목록에서 ollama를 볼 수 있어야 합니다. OLLAMA_NUM_GPU 환경 변수는 다른 워크로드와 VRAM을 공유할 때 레이어 수를 제한할 수 있게 해줍니다.
Apple Silicon (M1/M2/M3/M4)
Ollama를 Docker가 아닌 네이티브로 실행하세요. 2026년 초 현재 Docker로 Metal GPU 패스sthrough가 아직 지원되지 않으므로, Mac에서 Docker화된 Ollama는 CPU로 fallback되며, M3 Max가 2015년형 ThinkPad처럼 느껴지는 이유를 궁금해하게 될 것입니다. Open WebUI는 여전히 Docker에서 실행되며, host.docker.internal:11434를 통해 Ollama에 접근합니다.
16GB RAM의 M2 Pro에서 llama3.2:3b를 실행할 때 초당 약 45-55토큰이 표시됩니다. llama3.1:8b는 초당 ~22-28토큰으로 떨어집니다. qwen2.5:14b는 초당 ~9-12토큰으로 겨우 사용 가능하며, 채팅에는 괜찮지만 배치 작업에는 고통스럽습니다. 숫자는 양자화 및 컨텍스트 길이에 따라 다르지만, 대략적인 규모는 이와 같습니다.
"Tokens/sec by Model and Hardware"
데이터 테이블
| "Model" | "Apple M2 Pro 16GB" | "RTX 3060 12GB" | "RTX 4090 24GB" |
|---|---|---|---|
| "llama3.2:3b" | 50 | 75 | 180 |
| "llama3.1:8b" | 25 | 45 | 110 |
| "qwen2.5:14b" | 11 | 22 | 65 |
AMD (Linux에서 ROCm)
Ollama 0.5+는 RDNA2/RDNA3 카드(RX 6000/7000 시리즈, MI200/MI300 데이터센터 칩)용 ROCm 지원을 제공합니다. 전용 이미지를 사용하세요:
docker run -d --device=/dev/kfd --device=/dev/dri \
-v ollama:/root/.ollama \
-p 11434:11434 \
--name ollama \
ollama/ollama:rocmAMD 성능은 2025년을 거치며 의미 있게 격차를 좁혔습니다. 아직 NVIDIA 수준은 아니지만, 더 이상 실험실 수준의 프로젝트는 아닙니다.
Open WebUI에 RAG(자체 PDF) 추가하는 방법
Open WebUI는 네이티브 RAG를 탑재하고 있습니다. 프로필 → Workspace → Knowledge를 클릭하고, 지식 베이스를 생성한 후 PDF, Word 문서, Markdown 또는 텍스트 파일을 드롭하세요. 백그라운드에서 Open WebUI는 문서를 청킹하고, 구성된 임베딩 모델(기본값 nomic-embed-text)로 임베딩하며, ChromaDB에 저장하고 쿼리 시 검색합니다. 외부 서비스가 필요하지 않습니다.
설정은 한 단계가 더 필요합니다: 먼저 임베딩 모델을 가져오세요.
ollama pull nomic-embed-text그런 다음 Admin → Settings → Documents에서 임베딩 모델을 nomic-embed-text로 설정하세요. 청크 크기(기본값 1500)와 오버랩(기본값 100)은 취향에 맞게 조정하세요. 일반적인 함정: 너무 큰 청크는 작은 모델의 컨텍스트 창을 넘어섭니다. 4K 컨텍스트로 llama3.2:3b를 실행 중이라면, 1500토큰 청크는 실제 질문에 대한 공간을 거의 남기지 않으므로, 오버랩 80과 함께 800으로 낮추세요.
채팅에서 지식 베이스를 사용하려면 #를 입력하고 컬렉션을 선택하세요. 또는 Workspace → Models에서 Custom Model에 영구적으로 첨부하세요. 웹 검색도 유사하게 작동하며, Admin → Settings → Web Search에서 제공자(SearXNG, Brave 또는 Tavily)를 켜면 모델이 실시간 결과를 가져올 수 있습니다.
더 깊은 RAG 비교를 위해 RAG 도구 모음을 참조하세요. ChromaDB가 규모 확장 시 부족하다면, Qdrant, pgvector 및 tradeoff를 다루는 벡터 데이터베이스 옵션 분석을 확인하세요.
음성 입출력: 로컬 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을 선택하세요.
TTS 경로, 가장 간단한 방법은 OpenAI TTS입니다: API 키를 붙여넣고, tts-1과 음성(alloy, nova 등)을 선택하세요. 완전 로컬 경로: 별도의 Docker 이미지가 있는 coqui-tts 엔진. 대부분의 사람들은 실용적인 중간 지점으로 로컬 Whisper + OpenAI TTS를 선택합니다. 입력용 오디오는 박스 밖으로 나가지 않으며, 출력용 API 호출은 짧은 텍스트 문자열일 뿐입니다.
환경 변수를 사용하여 컨테이너에 선택 사항을 포함할 수 있습니다:
docker run -d \
-e WHISPER_MODEL=base \
-e AUDIO_STT_ENGINE=whisper \
-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전체 오디오 참조는 Open WebUI GitHub 문서에 있습니다.
파이프라인 및 함수: Open WebUI의 킬러 기능
파이프라인과 함수는 Open WebUI를 포크하지 않고 확장하는 방법입니다. 파이프라인은 필터, 모델 라우터 또는 완전한 custom 핸들러 역할을 하는 외부 Python 서비스입니다. 함수는 Open WebUI 내부에 존재하는 인라인 Python(필터, 액션 또는 파이프)입니다. together they are why Open WebUI beats LM Studio for serious users.
세 가지 함수 유형, 각각 한 문장으로 설명:
- 필터: 메시지의 전처리/후처리(PII 삭제, 욕설 필터, 프롬프트 재작성).
- 액션: 채팅 UI의 버튼으로 Python을 트리거합니다(재요약, Notion에 저장, SQL 쿼리 실행).
- 파이프: 완전한 custom 모델 핸들러(원격 API로 라우팅, 여러 모델 체이닝, 에이전트 구축).
다음은 모델에 도달하기 전에 사용자 프롬프트에서 이메일 주소를 제거하는 최소한의 필터 예제입니다:
from pydantic import BaseModel
import re
class Filter:
class Valves(BaseModel):
priority: int = 0
def __init__(self):
self.valves = self.Valves()
def inlet(self, body: dict, __user__: dict = None) -> dict:
for message in body.get("messages", []):
if message.get("role") == "user":
message["content"] = re.sub(
r"[\w\.-]+@[\w\.-]+",
"[REDACTED_EMAIL]",
message["content"],
)
return body이를 Admin → Settings → Functions → New에 넣고 저장한 후, 모든 모델에 대해 토글하여 활성화하세요. 완료.
외부 파이프라인의 경우, Open WebUI와 함께 전용 컨테이너를 실행하세요:
pipelines:
image: ghcr.io/open-webui/pipelines:main
container_name: pipelines
ports:
- "9099:9099"
volumes:
- pipelines:/app/pipelines
restart: always그런 다음 Admin → Settings → Connections에서 http://pipelines:9099를 OpenAI 호환 API로 추가하세요. Admin → Settings → Pipelines에서 .py 파일을 업로드하세요. 공식 Pipelines repo에는 번역 라우터, Langfuse 로깅, 함수 호출 등 수많은 예제가 있습니다.
MCP: Open WebUI를 외부 도구와 연결하기
**Open WebUI 0.6+**는 **Model Context Protocol (MCP)**를 지원합니다. 이는 로컬 모델이 Claude Desktop이 사용하는 동일한 프로토콜을 통해 외부 도구, 파일 검색, GitHub, Slack, 자체 custom 서버를 호출할 수 있음을 의미합니다. 파이프라인을 작성하지 않고 로컬 모델에 실제 도구 사용을 부여하는 가장 깔끔한 방법입니다.
Admin → Settings → Tools에서 MCP 서버를 추가하세요: 서버 URL을 붙여넣고, 이름을 지정하며, 모델별로 활성화하세요. 모델은 채팅 중에 이를 호출할 시기를 결정합니다. 우리는 Model Context Protocol (MCP) 가이드에서 프로토콜을 엔드투엔드로 다루며, Claude Desktop 대신 Open WebUI 측면에서 동일한 패턴을 사용합니다.
이것이 중요한 이유: 2026년 중반 현재, MCP를 언급하는 Open WebUI 튜토리얼은 거의 없습니다. Claude 또는 Cursor 설정을 위해 MCP 서버를 이미 표준화했다면, Open WebUI를 정확히 같은 서버로 pointing할 수 있습니다. 하나의 프로토콜, 모든 클라이언트.
Open WebUI가 내 Ollama 모델을 보지 못하는 이유는? (문제 해결)
Open WebUI가 로드되지만 모델 드롭다운이 비어 있다면, 컨테이너가 Ollama에 도달할 수 없다는 뜻입니다. 90%의 경우 해결책은 --add-host=host.docker.internal:host-gateway 플래그와 OLLAMA_BASE_URL=http://host.docker.internal:11434 설정입니다. host-gateway 플래그가 없는 Linux에서는 Docker의 브리지 네트워크가 호스트의 포트 11434를 볼 수 없습니다. 고객의 Linux 머신에 처음 배포했을 때 정확히 이 문제에 부딪혀 한 시간을 날렸습니다.
빈도 순으로 세 가지 근본 원인:
-
누락된
--add-host플래그 (Linux에서 가장 흔함). macOS Docker Desktop은host.docker.internal을 자동으로 설정하지만, Linux는 명시적 플래그가 필요합니다. -
Ollama가
127.0.0.1에만 바인딩됨. 컨테이너 관점에서는 도달 불가능합니다. 해결:bashOLLAMA_HOST=0.0.0.0:11434 ollama serve또는 Linux의 systemd unit에서
Environment="OLLAMA_HOST=0.0.0.0:11434"를 설정하세요. -
방화벽 / 안티바이러스가 11434 차단. 덜 흔하지만,
ufw, Windows Defender 또는 기업용 엔드포인트 보호를 확인하세요.
진단: Open WebUI 컨테이너 내부에서 이것을 실행하세요:
docker exec open-webui curl http://host.docker.internal:11434/api/tags모델 목록이 포함된 JSON을 반환하면 네트워킹은 정상이며 문제는 Open WebUI 설정에 있습니다(Admin → Connections → Ollama URL 확인). 중단되거나 거부되면 호스트 측 문제이므로 원인 #2부터 시작하세요.
Open WebUI vs LM Studio vs Jan vs AnythingLLM
Open WebUI는 다중 사용자, RAG 깊이, 파이프라인/함수에서 승리합니다. LM Studio는 기본 GPU 성능과 세련된 단일 사용자 UI에서 승리합니다. Jan은 마찰 없는 첫 실행에서 승리합니다. AnythingLLM은 문서 수집 인간공학에서 승리합니다. 팀을 위한 자체 호스팅 ChatGPT 대체재를 원한다면, Open WebUI가 정답입니다.
| 기능 | Open WebUI | LM Studio | Jan | AnythingLLM |
|---|---|---|---|---|
| 다중 사용자 | 예 | 아니오 | 아니오 | 예 |
| 네이티브 RAG | 예 (깊음) | 플러그인만 | 기본 | 예 (최고 UX) |
| 플러그인 / 확장 | 파이프라인 + 함수 | 제한적 | 확장 | 플러그인 |
| GPU 지원 | Ollama 백엔드経由 | 내장 (최고) | 내장 | 백엔드経由 |
| 최적 대상 | 자체 호스팅 팀 | 솔로 데스크톱 파워 유저 | 최초 로컬 AI 사용자 | 문서 중심 워크플로우 |
판결: 게이밍 GPU에서 모델을 실행하고 채팅하려는 솔로 개발자라면 LM Studio가 설정이 더 빠릅니다. 팀을 위한 프라이빗 ChatGPT를 구축하거나, 진지한 RAG를 수행하거나, custom Python 로직을 연결하려는 경우 Open WebUI가 유일한 현실적인 선택입니다. 더 넓은 최고의 로컬 LLM 도구 게시물은 이러한 UI 아래의 런타임 계층(vLLM, llama.cpp, Ollama)을 비교합니다.
Open WebUI를 HTTPS로 안전하게 노출하는 방법
두 가지 깔끔한 경로: 실제 Let's Encrypt 인증서를 위한 Open WebUI 앞의 5줄 Caddyfile(프로덕션 수준), 또는 포트 개방 없이 팀과 공유하기 위한 Cloudflare Tunnel. 둘 다 Open WebUI를 localhost:3000에 유지하면서 HTTPS가 적용된 깔끔한 공개 URL을 노출합니다. 도메인에 대한 DNS를 제어하는지 여부에 따라 선택하세요.
Caddy 경로, 도메인을 박스에 연결한 후:
ai.example.com {
reverse_proxy localhost:3000
}これが 전체 설정입니다. Caddy는 첫 요청 시 Let's Encrypt 인증서를 자동으로 가져옵니다. caddy run --config Caddyfile을 실행하거나(systemd unit 사용). 전체 참조: Caddy docs.
Cloudflare Tunnel 경로, cloudflared tunnel create open-webui, Cloudflare 영역에서 호스트명을 라우팅한 후 cloudflared tunnel run. 개방된 포트 제로, Cloudflare가 TLS를 처리합니다. "방화벽에 구멍을 내지 않고 팀이 이에 접근하기를 원할 때" 훌륭합니다.
하나의 엄격한 규칙: 포트 3000을 공공 인터넷에 raw로 절대 노출하지 마세요. Open WebUI의 가입은 기본적으로 개방되어 있어, URL에 접근하는 누구나 계정을 생성할 수 있습니다. WEBUI_AUTH=False는 LAN에서는 괜찮지만 공개용으로는 절대 사용하지 마세요. 항상 리버스 프록시로 앞에 두고 인증된 가입 화이트리스트를 사용하세요(계정을 생성한 후 Admin → Settings → General → "Enable Signup" 끄기).
Techsy의 로컬 LLM 배포 접근 방식
우리는 OpenAI에 데이터를 보낼 수 없거나(또는 보내지 않으려는) 법률, 의료 및 내부 도구 팀의 고객들을 위해 Open WebUI + Ollama 설정을 제공해 왔습니다. 패턴이 충분히 반복되어 처음부터 작성하는 것을 멈췄지만, 모든 배포에는 동일한 세 가지 우선순위가 있습니다.
우리가 실제로 하는 일:
- 하드웨어와 예산에 맞춰 모델 크기 조정. 3B–8B 범위가 대부분 sweet spot을 차지합니다. 지연 시간과 월별 비용이 중요할 때 항상 더 큰 것이 더 나은 것은 아닙니다.
- 배포 강화. 앞에 Caddy 배치, 가입 비활성화, 백업된 명명된 볼륨에
/app/backend/data저장, 주간 스냅샷, 그리고 실제 재난 복구 계획. - 조직 특정 요구를 위한 파이프라인 연결. PII 삭제 필터, 내부 SharePoint 또는 Confluence를 향하는 custom RAG 파이프라인, 안전한 셸 액세스를 위한 함수 호출 도구, 채팅 UI를 회사 내에서 실제로 유용하게 만드는 것들.
설정을 건너뛰고 실행 중인 프라이빗 AI 스택을 받고 싶다면, 무료 상담 예약하세요. 범위 설정을 도와드리겠습니다.
마무리
세 가지 빠른 요약:
- 단일 컨테이너 경로, 첫 채팅까지 가장 빠른 방법, 준비된 머신에서 솔직히 10분.
- Docker Compose, 재부팅 후에도 살아남아야 하는 모든 것에 실제로 원하는 것.
- 파이프라인 + RAG + MCP, LM Studio나 Jan보다 Open WebUI를 선택할 가치가 있게 하는 해자(moat).
10분 안에 여러분의 AI와 채팅하게 됩니다. 그 이후는 모두 점진적입니다. 문서가 있을 때 RAG 추가, 휴대폰에서 사용하려 할 때 Caddy 추가, 실제 작업을 수행하게 하려 할 때 파이프라인 추가. 로컬 모델 선택을 더 깊이 알고 싶다면, 로컬에서 LLM 실행하기 가이드가 하드웨어 측면을 심도 있게 다룹니다.
FAQ
Open WebUI를 Ollama와 함께 어떻게 설치하나요?
세 단계: Docker Desktop 설치, Ollama 설치(macOS/Linux에서 curl -fsSL https://ollama.com/install.sh | sh), 그런 다음 표준 Open WebUI 컨테이너를 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을 열고 관리자 계정을 생성하세요.
Open WebUI는 무료인가요?
예, Open WebUI는 MIT 라이선스이며 완전히 오픈 소스입니다. 자체 호스팅은 무료이며, 실행하는 하드웨어(노트북, 홈랩 서버 또는 클라우드 VM) 비용만 지불하면 됩니다. 선택적 유료 항목에는 음성을 위한 OpenAI의 TTS API 또는 Open WebUI의 OpenAI 호환 커넥터를 통해 액세스되는 상업용 모델이 포함됩니다. 핵심 기능은 모두 무상입니다.
Open WebUI를 Ollama 없이 실행할 수 있나요?
예, Open WebUI는 모든 OpenAI 호환 API와 통신합니다. OpenAI에 직접 연결하거나, LiteLLM 프록시를 통해 Anthropic에 연결하거나, vLLM 서버, llama.cpp의 HTTP 서버, Groq 및 Together와 같은 호스팅 제공업체에 연결할 수 있습니다. 하지만 "Open WebUI + Ollama"는 Ollama가 모델 관리를 매우 간단하게 만들기 때문에 표준 로컬 AI 조합입니다.
Open WebUI가 Ollama에 연결되지 않는 이유는 무엇인가요?
가장 흔한 원인: 누락된 --add-host=host.docker.internal:host-gateway 플래그와 Open WebUI 설정에서 설정되지 않은 OLLAMA_BASE_URL. 두 번째로 흔한 원인: Ollama가 127.0.0.1에만 바인딩되어 컨테이너 내부에서 도달 불가능함, OLLAMA_HOST=0.0.0.0:11434 ollama serve로 수정. 빠르게 진단하려면 docker exec open-webui curl http://host.docker.internal:11434/api/tags를 실행하세요.
Open WebUI에 모델을 어떻게 추가하나요?
가장 쉬운 경로: 호스트에서 ollama pull llama3.2:3b(또는 ollama.com/library의 모든 모델) 실행. 모델은 Open WebUI의 드롭다운에 자동으로 표시되며 재시작이 필요하지 않습니다. 또는 Open WebUI에서 Admin → Settings → Connections → Ollama로 이동하여 UI 내 가져오기 버튼을 사용하세요. 어느 쪽이든 모델은 Ollama 측에 존재합니다.
Open WebUI와 LM Studio의 차이점은 무엇인가요?
LM Studio는 모델 관리 плюс 채팅에 초점을 맞춘 단일 사용자 데스크톱 앱으로, 강력한 GPU 기본값, 세련된 UI, 다중 사용자 없음. Open WebUI는 다중 사용자를 지원하는 자체 호스팅 서버로, 네이티브 RAG, 음성 입출력, 파이프라인/함수 및 MCP를 제공합니다. 대상 독자가 다릅니다: LM Studio는 솔로 데스크톱 파워 유저용, Open WebUI는 팀 또는 확장 가능한 프라이빗 ChatGPT를 원하는 모든 사람용.
휴대폰에서 Open WebUI를 사용할 수 있나요?
예, Open WebUI는 완전히 반응형이므로 모든 모바일 브라우저에서 작동합니다. HTTPS(Caddy와 Let's Encrypt 인증서 또는 Cloudflare Tunnel)와 쌍을 이루면 완전히 기능하는 모바일 채팅 앱이 됩니다. iOS 또는 Android의 홈 화면에 추가하여 네이티브에 가까운 PWA 경험을 즐기세요. 다만 인증 없이 공개적으로 노출하지는 마세요.
Open WebUI를 어떻게 업데이트하나요?
최신 이미지를 가져오고 재시작: docker pull ghcr.io/open-webui/open-webui:main && docker stop open-webui && docker rm open-webui 그런 다음 원래 docker run 명령을 다시 실행. 명명된 볼륨은 모든 데이터, 채팅 기록, 사용자, RAG 컬렉션 및 설정을 보존합니다. Docker Compose 사용 시: docker compose pull && docker compose up -d. 업데이트는 대략 매주 제공됩니다.
Open WebUI는 음성 채팅을 지원하나요?
예, 음성 인식(로컬 faster-whisper経由)과 텍스트 음성 변환(OpenAI의 TTS API 또는 로컬 coqui-tts経由)을 모두 지원합니다. Admin → Settings → Audio에서 둘 다 구성하세요. 활성화되면 채팅 상자에 마이크 아이콘이 나타납니다. 실용적인 설정은 로컬 Whisper plus OpenAI TTS로, 완전 오프라인 입력과 빠르고 깔끔한 출력을 제공합니다. env-var 구성은 위의 음성 입출력 섹션을 참조하세요.
Open WebUI에 내 PDF를 어떻게 추가하나요?
프로필 → Workspace → Knowledge → New collection을 클릭한 후 PDF, Word 문서, Markdown 또는 텍스트 파일을 업로드하세요. Open WebUI는 문서를 청킹하고, nomic-embed-text로 임베딩하며(ollama pull nomic-embed-text로 먼저 가져오기), ChromaDB에 저장합니다. 채팅에서 #collection-name으로 모든 컬렉션을 참조하거나, Custom Model에 영구적으로 첨부하세요.