Open WebUI: 로컬 및 클라우드에서 나만의 AI 인터페이스 실행하기
로컬 개발 및 클라우드 배포를 위한 Open WebUI 설정 — 자체 호스팅 AI 인터페이스와 상용 대안 비교.

제가 아는 모든 개발자는 항상 최소 세 개의 AI 채팅 탭을 열어둡니다. 하나는 ChatGPT, 다른 하나는 Claude, 그리고 멀티모달 작업을 위한 Gemini 창도 있을 수 있습니다. 각기 다른 대화 기록, 다른 컨텍스트, 다른 요금 청구를 가집니다. 이들 사이를 전환하는 것은 사라지기 전까지는 알아차리지 못하는 마찰입니다.
Open WebUI는 이러한 마찰을 제거합니다. 이는 여러 AI 백엔드에 연결되는 자체 호스팅 인터페이스입니다. Ollama를 통한 로컬 모델, OpenAI 및 Anthropic과 같은 클라우드 API, 또는 모든 OpenAI 호환 엔드포인트에 연결됩니다. 하나의 인터페이스, 하나의 대화 기록, 모든 것을 관리하는 한 곳. 그리고 직접 호스팅하기 때문에, 클라우드 API로 명시적으로 보내지 않는 한 데이터는 인프라를 벗어나지 않습니다.
Open WebUI란 무엇인가
Open WebUI (이전 명칭 Ollama WebUI)는 대규모 언어 모델과 상호 작용하기 위한 오픈 소스 자체 호스팅 웹 인터페이스입니다. LLM을 로컬에서 실행하는 도구인 Ollama의 프론트엔드로 시작했지만, 다음과 같은 기능을 지원하는 완전한 AI 플랫폼으로 발전했습니다.
- 여러 모델 백엔드 (Ollama, OpenAI, Anthropic, 모든 OpenAI 호환 API)
- 검색 및 정리 기능이 있는 대화 기록
- 문서 업로드를 통한 RAG (검색 증강 생성)
- 사용자 정의 모델 프리셋 및 시스템 프롬프트
- 사용자 관리 및 팀 접근 제어
- 함수 호출 및 도구 사용
- 이미지 생성 통합
- 음성 입력 및 출력
이것은 장난감 프로젝트가 아닙니다. 인터페이스는 세련되었고, 기능 세트는 포괄적이며, 커뮤니티는 활발합니다. 이 글을 쓰는 시점에서 GitHub 저장소는 75,000개 이상의 별을 받았으며, 약 2주마다 릴리스가 이루어집니다.
진정한 가치 제안은 '제어'입니다. 어디에서 실행할지, 어떤 모델에 연결할지, 누가 접근할지, 데이터가 어디로 갈지 직접 결정합니다. 민감한 코드, 독점적인 비즈니스 데이터 또는 규제 산업에서 작업하는 개발자에게는 어떤 기능 비교보다 이것이 더 중요합니다.
Docker를 이용한 로컬 설정
Open WebUI를 로컬에서 가장 빠르게 실행하는 방법은 Docker를 사용하는 것입니다. 하나의 명령으로, 설치할 종속성도, 작성할 구성 파일도 없습니다.
docker run -d \
-p 3000:8080 \
-v open-webui:/app/backend/data \
--name open-webui \
ghcr.io/open-webui/open-webui:main
이것으로 끝입니다. 브라우저에서 http://localhost:3000을 열고 관리자 계정을 생성하면 작동하는 AI 인터페이스를 사용할 수 있습니다. -v open-webui:/app/backend/data 플래그는 영구 저장을 위한 Docker 볼륨을 생성합니다. 대화, 설정, 업로드된 문서가 컨테이너 재시작 후에도 유지됩니다.
Ollama에 연결하기
로컬 모델을 사용하려면 Ollama가 머신에서 실행되고 있어야 합니다. ollama.com에서 설치한 다음 모델을 다운로드합니다.
ollama pull llama3.1
ollama pull codellama
ollama pull mistral
Open WebUI와 Ollama가 모두 동일한 머신에서 실행 중인 경우, Open WebUI는 macOS 및 Windows에서는 http://host.docker.internal:11434에서, --network host를 사용하는 Linux에서는 http://localhost:11434에서 Ollama를 자동으로 감지합니다.
Linux의 경우, Docker 명령은 Ollama에 도달하기 위해 네트워크 호스트 모드가 필요합니다.
docker run -d \
-p 3000:8080 \
--network host \
-v open-webui:/app/backend/data \
--name open-webui \
ghcr.io/open-webui/open-webui:main
연결되면 Ollama에서 다운로드한 모든 모델이 Open WebUI의 모델 드롭다운에 나타납니다. 대화 도중에 모델을 전환하고, 출력을 비교하고, 모델별 시스템 프롬프트를 설정할 수 있습니다.
클라우드 API에 연결하기
Open WebUI는 클라우드 모델 제공업체에도 연결됩니다. 관리자 설정의 "Connections"에서 API 키를 추가합니다.
- OpenAI: API 키를 추가하면 모든 GPT 모델을 사용할 수 있습니다.
- Anthropic: Claude 모델용 API 키를 추가합니다 (버전에 따라 OpenAI 호환 프록시 또는 직접 통합을 통해).
- 사용자 정의 엔드포인트: OpenAI 호환 API를 노출하는 모든 서비스 — Azure OpenAI, Together AI, Groq, 로컬 vLLM 인스턴스.
이것이 Open WebUI가 일상적인 드라이버로서 진정으로 유용해지는 지점입니다. 로컬 Llama 모델(무료, 비공개, 실험에 좋음)과 클라우드 모델(더 강력하고 사용량 기반 요금)을 위한 하나의 인터페이스를 얻습니다. 컨텍스트 전환 비용은 0으로 떨어집니다. 드롭다운에서 모델만 변경하면 됩니다.
전체 스택을 위한 Docker Compose
더 견고한 로컬 설정을 위해 Docker Compose를 사용하여 Open WebUI와 Ollama를 함께 실행합니다.
# docker-compose.yml
version: "3.8"
services:
ollama:
image: ollama/ollama
container_name: ollama
ports:
- "11434:11434"
volumes:
- ollama-data:/root/.ollama
deploy:
resources:
reservations:
devices:
- driver: nvidia
count: all
capabilities: [gpu]
open-webui:
image: ghcr.io/open-webui/open-webui:main
container_name: open-webui
ports:
- "3000:8080"
volumes:
- open-webui-data:/app/backend/data
environment:
- OLLAMA_BASE_URL=http://ollama:11434
depends_on:
- ollama
volumes:
ollama-data:
open-webui-data:
docker compose up -d
GPU 예약 섹션은 선택 사항입니다. CPU만 사용하는 경우 제거하십시오. Apple Silicon Mac에서는 Ollama가 Docker GPU 패스스루 없이 Metal GPU 프레임워크를 자동으로 사용합니다 (최고의 성능을 위해 Docker 대신 macOS에서 Ollama를 네이티브로 실행).
클라우드 배포 옵션
Open WebUI를 로컬에서 실행하는 것은 개인 사용에 좋습니다. 하지만 팀이 접근하거나 어떤 장치에서든 사용하고 싶다면 클라우드 배포가 필요합니다.
VPS 배포 (Hetzner, DigitalOcean 등)
가장 간단한 클라우드 경로는 Docker가 설치된 VPS입니다. Hetzner 또는 DigitalOcean의 월 20달러 서버는 Open WebUI 인터페이스 자체에 충분합니다. 서버에서도 모델을 실행하려면 GPU 인스턴스가 필요합니다 (GPU에 따라 월 50-150달러).
# VPS에서
apt update && apt install docker.io docker-compose-plugin -y
# docker-compose.yml 생성 (위와 동일, GPU 예약 제외)
docker compose up -d
# SSL로 리버스 프록시 설정
apt install nginx certbot python3-certbot-nginx -y
Nginx 리버스 프록시 구성:
server {
server_name ai.yourdomain.com;
location / {
proxy_pass http://localhost:3000;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
}
그런 다음 Let's Encrypt에서 무료 SSL을 위해 certbot --nginx -d ai.yourdomain.com을 실행합니다. 이제 어디서든 접근 가능한 비공개, SSL 보안 AI 인터페이스를 갖게 됩니다.
Railway / Fly.io 배포
서버 관리 없이 관리형 배포를 위해:
# Railway 사용
railway login
railway init
railway up
또는 Fly.io 사용:
fly launch --image ghcr.io/open-webui/open-webui:main
fly secrets set OLLAMA_BASE_URL=http://your-ollama-server:11434
fly deploy
이러한 플랫폼은 SSL, 스케일링 및 재시작을 자동으로 처리합니다. 단점은 VPS에 비해 인프라에 대한 제어력이 적고 대규모에서 비용이 더 많이 든다는 것입니다.
아키텍처 결정: 모델을 어디에서 실행할 것인가
클라우드 배포의 핵심 아키텍처 결정은 Open WebUI와 동일한 서버에서 모델을 실행할지 또는 외부 API 제공업체에 연결할지 여부입니다.
동일 서버: 낮은 지연 시간, 토큰당 API 비용 없음, 완전한 데이터 프라이버시. 하지만 GPU 장착 서버(괜찮은 GPU 인스턴스의 경우 월 100-300달러)가 필요하며, 모델 선택은 하드웨어에 의해 제한됩니다.
외부 API만: GPU 필요 없음, 모든 제공업체의 최고 모델에 접근, 토큰당 지불. Open WebUI 서버는 가볍고 호스팅 비용이 저렴합니다. 하지만 모든 대화는 타사 API를 통해 이루어지며, 비용은 사용량에 따라 증가합니다.
하이브리드: 일상적인 작업 및 개인 정보 보호에 민감한 작업에는 로컬 모델을 실행하고, 더 강력한 모델이 필요한 작업에는 클라우드 API에 연결합니다. 제가 사용하는 방식입니다. 개인 정보 보호가 중요한 빠른 질문 및 코드 완성에는 Llama 3.1을 사용하고, 복잡한 추론 및 생성 작업에는 Claude 또는 GPT-4o를 사용합니다.
상용 인터페이스와 비교
ChatGPT Plus (월 20달러)
ChatGPT는 GPT-4o, DALL-E 통합, 브라우징, 코드 인터프리터 및 사용자 정의 GPT를 제공합니다. 인터페이스는 세련되었고 모바일 앱은 훌륭합니다.
Open WebUI가 우세한 점: 모델 유연성 (OpenAI에 묶이지 않음), 데이터 프라이버시 (대화가 서버에 유지됨), 사용자 정의 (사용자 정의 시스템 프롬프트, RAG 파이프라인, 함수 호출). 로컬 모델에는 사용량 제한이 없습니다.
ChatGPT가 우세한 점: 네이티브 도구 통합, 코드 인터프리터 샌드박스, 모바일 경험, 제로 설정. 플러그인 및 GPT 스토어 생태계는 Open WebUI에 동등한 것이 없습니다.
결론: 즉시 사용 가능한 경험을 원하는 비기술 사용자에게는 ChatGPT Plus를 능가하기 어렵습니다. Open WebUI는 제어와 유연성을 원하는 개발자에게 더 좋습니다.
Claude Pro (월 20달러)
Claude Pro는 확장된 컨텍스트 창, 아티팩트 생성 및 영구 컨텍스트를 가진 프로젝트를 통해 Claude Sonnet 및 Opus 모델을 제공합니다. Claude의 지시 따르기 및 긴 문서 처리는 동급 최고입니다.
Open WebUI가 우세한 점: 다른 모든 모델에 접근하면서도 API를 통해 Claude 모델을 계속 사용할 수 있습니다. 대화 기록을 소유합니다. RAG 및 사용자 정의 도구를 추가할 수 있습니다.
Claude가 우세한 점: 영구 컨텍스트를 가진 프로젝트 기능, 코드 및 문서를 위한 아티팩트 시스템, 네이티브 사고/추론 표시. 이들은 Claude의 인터페이스에 깊이 통합되어 있으며 Open WebUI에 동등한 것이 없습니다.
결론: Claude가 주력 모델이라면 네이티브 인터페이스를 떠나기 어렵습니다. Open WebUI는 여러 제공업체를 사용할 때 통합 인터페이스로서 더 좋습니다.
팀을 위한 활용
Open WebUI의 가장 설득력 있는 사례는 팀 사용입니다. 상용 AI 인터페이스는 팀 플랜을 제공하지만, 일반적으로 사용자당 요금(사용자당 월 25-30달러)을 청구하고, 대화는 제공업체의 인프라에 저장되며, 경험을 사용자 정의할 수 없습니다.
팀 접근 권한이 있는 Open WebUI는 다음을 제공합니다. 사용자 수에 관계없이 하나의 호스팅 비용, 인프라에 저장되는 대화, 팀 또는 프로젝트별 사용자 정의 모델 프리셋, 공유 RAG 문서 컬렉션, 그리고 어떤 모델과 기능을 사용할 수 있는지에 대한 관리자 제어.
10명의 개발자로 구성된 팀의 경우, 상용 AI 채팅 구독료는 월 200-300달러입니다. 클라우드 API 접근 권한이 있는 자체 호스팅 Open WebUI 인스턴스는 호스팅 비용으로 월 20-40달러와 사용량에 따른 API 사용료가 발생합니다. 팀이 성장할수록 경제성은 더욱 유리해집니다.
RAG 파이프라인 설정
검색 증강 생성(RAG)은 Open WebUI의 가장 강력한 기능 중 하나입니다. 문서를 업로드하면 AI가 질문에 답변할 때 해당 문서를 참조할 수 있습니다. 이는 Open WebUI를 일반적인 채팅에서 특정 문서, 코드베이스 또는 비즈니스 데이터를 이해하는 지식 기반으로 전환시킵니다.
문서 업로드
Open WebUI는 인터페이스를 통한 직접 문서 업로드를 지원합니다. PDF, 마크다운 파일 또는 텍스트 파일을 채팅에 끌어다 놓으면 자동으로 청크로 분할되고, 임베딩되며, 검색을 위해 인덱싱됩니다. AI는 질문에 답변할 때 업로드된 문서를 참조합니다.
대량 문서 수집을 위해서는 관리자 패널의 문서 관리 섹션을 사용하십시오. 문서를 컬렉션으로 구성하고 어떤 컬렉션을 어떤 채팅에서 사용할 수 있는지 제어할 수 있습니다.
임베딩 구성
Open WebUI는 임베딩 모델을 사용하여 문서를 벡터로 변환하여 의미론적 검색을 수행합니다. 기본적으로 로컬 임베딩 모델을 사용하지만, 더 나은 품질을 위해 OpenAI의 임베딩 API를 사용하도록 구성할 수 있습니다.
관리자 설정의 "Documents"에서 다음을 구성합니다.
- 임베딩 모델:
text-embedding-3-small(OpenAI) 또는 Ollama를 통한 로컬 모델 - 청크 크기: 1000 토큰 (기본값, 문서에 따라 조정)
- 청크 오버랩: 100 토큰 (청크 간 컨텍스트 유지에 도움)
- Top K: 5 (쿼리당 검색할 관련 청크 수)
실용적인 RAG 사용 사례
코드베이스 문서: 프로젝트의 README, 아키텍처 문서 및 API 문서를 업로드합니다. AI에 자신의 프로젝트에 대한 질문을 하고 모델의 일반적인 훈련 데이터가 아닌 실제 문서에 기반한 답변을 얻습니다.
회의록 및 결정: 회의록 및 결정 로그를 업로드합니다. "지난주 회의에서 데이터베이스 마이그레이션 일정에 대해 무엇이 결정되었습니까?"라는 질문에 환각적인 답변 대신 정확한 답변을 얻습니다.
연구 논문 및 기술 사양: 작업 중인 논문이나 사양의 PDF를 업로드합니다. AI는 훈련 데이터에 없는 내용에 대해 요약하고, 비교하고, 질문에 답변할 수 있습니다.
RAG 답변의 품질은 문서 청크 분할 및 임베딩 품질에 크게 좌우됩니다. 답변이 관련 정보를 놓치는 것처럼 보이면 청크 크기를 줄이거나 (각 청크가 더 집중되도록) Top K를 늘려보십시오 (더 많은 청크가 검색되도록).
사용자 정의 모델 구성
Open WebUI를 사용하면 사용자 정의 시스템 프롬프트, 온도 설정 및 모델 선택이 포함된 저장된 구성인 모델 프리셋을 생성할 수 있습니다. 이는 기본 모델을 수정하지 않고도 목적별 도우미를 만드는 데 유용합니다.
코드 검토 프리셋 생성
Open WebUI 설정에서 새 모델 프리셋을 생성합니다.
- 이름: Code Reviewer
- 기본 모델: Claude Sonnet (또는 선호하는 모델)
- 시스템 프롬프트: "당신은 선임 코드 검토자입니다. 제공된 코드에서 버그, 보안 문제, 성능 문제 및 스타일 위반을 분석하십시오. 줄 번호를 구체적으로 명시하고 수정된 코드 스니펫을 제공하십시오. 심각도에 따라 문제를 우선순위화하십시오."
- 온도: 0.3 (더 일관되고 집중된 출력을 위해 낮게 설정)
글쓰기 도우미 프리셋 생성
- 이름: Technical Writer
- 기본 모델: GPT-4o
- 시스템 프롬프트: "당신은 기술 글쓰기 도우미입니다. 명확하고 간결한 기술 문서를 작성하는 데 도움을 주십시오. 능동태를 사용하십시오. 독자가 기술 전문가가 아닌 한 전문 용어를 피하십시오. 적절한 경우 헤더, 목록 및 코드 예제로 콘텐츠를 구성하십시오."
- 온도: 0.7 (더 창의적인 출력을 위해 높게 설정)
이러한 프리셋은 일반 모델과 함께 모델 드롭다운에 나타납니다. 코드를 검토할 때는 "Code Reviewer" 프리셋으로 전환하고, 문서를 작성할 때는 "Technical Writer"로 전환합니다. 시스템 프롬프트는 자동으로 적용됩니다.
개인 정보 보호 이점
자체 호스팅 AI의 개인 정보 보호 주장은 이론적이지 않습니다. 이는 다양한 사용 사례에 대해 구체적인 의미를 가집니다.
민감한 코드
독점 코드를 ChatGPT 또는 Claude에 붙여넣으면 타사 서버로 보내는 것입니다. 제공업체는 데이터 처리 정책을 가지고 있습니다. OpenAI와 Anthropic 모두 API 데이터로 훈련하지 않는다고 명시하고 있지만, 데이터는 여전히 인프라를 벗어납니다. 엄격한 IP 정책, 규제 산업 또는 정부 계약을 가진 회사에게는 이것이 시작부터 불가능할 수 있습니다.
Ollama에 연결된 Open WebUI를 사용하면 코드가 머신을 떠나지 않습니다. 모델은 로컬에서 실행되고, 추론은 로컬에서 발생하며, 대화 기록은 로컬에 저장됩니다. 클라우드 배포의 경우 데이터는 서버에 유지됩니다.
클라이언트 데이터
컨설턴트 또는 에이전시가 클라이언트 데이터로 작업하는 경우, 상용 AI 인터페이스를 사용하면 모든 클라이언트에 대해 답변해야 하는 데이터 처리 문제가 발생합니다. 자체 호스팅 Open WebUI는 명확한 답변을 제공합니다. 데이터는 인프라 내에, 통제 하에, 보안 정책에 따라 유지됩니다.
규정 준수
HIPAA, SOC 2, GDPR — 이러한 프레임워크는 데이터가 처리되고 저장되는 위치에 관심을 가집니다. 규정을 준수하는 인프라에 자체 호스팅된 AI 인터페이스는 타사 SaaS 도구보다 규정 준수 범위에 포함하기가 본질적으로 더 쉽습니다.
이것이 로컬이 항상 더 좋다는 의미는 아닙니다. 클라우드 AI API는 자체 규정 준수 인증을 가지고 있으며, 많은 사용 사례에서 OpenAI 또는 Anthropic의 엔터프라이즈 제품의 규정 준수 상태가 직접 구축하는 것보다 더 강력합니다. 요점은 자체 호스팅이 필요할 때 옵션을 제공한다는 것입니다.
성능 고려 사항
로컬 모델 성능
모델을 로컬에서 실행한다는 것은 하드웨어가 경험을 결정한다는 것을 의미합니다. Llama 3.1 8B에 대한 대략적인 벤치마크는 다음과 같습니다.
- Apple M1 Pro (16GB RAM): 초당 약 15 토큰 — 짧은 상호 작용에 사용 가능
- Apple M2 Ultra (64GB RAM): 초당 약 40 토큰 — 긴 대화에 편안함
- NVIDIA RTX 4090: 초당 약 80 토큰 — 거의 즉각적인 응답
- CPU 전용 (GPU 없음): 초당 약 2-5 토큰 — 고통스러울 정도로 느림, 권장하지 않음
Llama 3.1 70B와 같은 더 큰 모델의 경우, 최소 48GB의 RAM (Mac의 M2 Max 이상, 또는 서버급 GPU)이 필요합니다. 품질 향상은 상당하지만, 하드웨어 요구 사항은 가파릅니다.
지연 시간 비교
클라우드 API 연결의 경우, Open WebUI는 최소한의 오버헤드를 추가합니다. 일반적으로 API의 기본 지연 시간 외에 10-30ms 정도입니다. 병목 현상은 항상 인터페이스가 아닌 모델 추론입니다.
로컬 모델의 경우, 지연 시간은 모델 크기와 하드웨어의 함수입니다. 첫 토큰 지연 시간(모델이 생성을 시작하기 전 시간)은 빠른 하드웨어의 작은 모델의 경우 100ms에서 제한된 하드웨어의 큰 모델의 경우 몇 초까지 다양합니다. 스트리밍 디스플레이는 대부분의 지연 시간을 사용자에게 숨깁니다.
자체 호스팅 vs. 상용 인터페이스 사용 시점
다음과 같은 경우 자체 호스팅을 고려하십시오.
- 민감하거나 독점적인 데이터로 작업하는 경우
- 개인 정보 보호 또는 비용상의 이유로 로컬 모델을 사용하려는 경우
- 사용자당 라이선스 없이 팀 AI 인터페이스가 필요한 경우
- RAG 파이프라인을 사용자 정의하거나 사용자 정의 도구를 추가하려는 경우
- 여러 모델 제공업체를 사용하고 통합 인터페이스를 원하는 경우
다음과 같은 경우 상용 인터페이스를 사용하십시오.
- 특정 모델과의 가장 긴밀한 통합이 필요한 경우 (Claude Projects, ChatGPT 플러그인)
- 모바일 앱 및 장치 간 동기화를 중요하게 생각하는 경우
- 인프라를 관리하고 싶지 않은 경우
- 사용 사례에 민감한 데이터가 포함되지 않는 경우
- 가장 세련되고 최신 기능 경험이 필요한 경우
대부분의 개발자에게 정답은 둘 다입니다. 저는 Claude Projects의 이점을 얻는 심층 작업에는 Claude의 네이티브 인터페이스를 사용하고, 코드 인터프리터가 필요한 작업에는 ChatGPT를 사용하며, 그 외 모든 것에는 Open WebUI를 사용합니다. 특히 로컬 모델을 사용하거나, 제공업체 간 출력을 비교하거나, 클라우드 API로 보내고 싶지 않은 문서로 작업할 때 그렇습니다.
Open WebUI는 상용 인터페이스를 대체하는 것이 아닙니다. 제어가 중요할 때 AI 인프라를 제어할 수 있는 옵션을 갖는 것입니다. 설정은 30분밖에 걸리지 않습니다. 개인 정보 보호 및 유연성 이점은 영구적입니다.