Open WebUI
Open WebUI๋ ํ์ฅ์ฑ์ด ๋ฐ์ด๋๊ณ , ๋ค์ํ ๊ธฐ๋ฅ์ ๊ฐ์ถ์์ผ๋ฉฐ, ์ฌ์ฉ์ ์นํ์ ์ธ ์๊ฐ ํธ์คํ AI ํ๋ซํผ์ผ๋ก, ์์ ํ ์คํ๋ผ์ธ์์ ์๋ํ๋๋ก ์ค๊ณ๋์์ต๋๋ค. Ollama ๋ฐ OpenAI ํธํ API์ ๊ฐ์ ์ฌ๋ฌ LLM ์คํ๊ธฐ๋ฅผ ์ง์ํ๋ฉฐ, RAG๋ฅผ ์ํ ๋ด์ฅ ์ถ๋ก ์์ง์ ํฌํจํ์ฌ ๊ฐ๋ ฅํ AI ๋ฐฐํฌ ์๋ฃจ์ ์ ๋๋ค.

์ํฐํ๋ผ์ด์ฆ ํ๋์ ์ฐพ๊ณ ๊ณ์ญ๋๊น? โ ์ค๋ ์์ ํ๊ณผ ์๋ดํด๋ณด์ธ์!
๋ง์ถค ํ ๋ง ๋ฐ ๋ธ๋๋ฉ, ์๋น์ค ์์ค ํ์ฝ(SLA) ์ง์, ์ฅ๊ธฐ ์ง์(LTS) ๋ฒ์ ๋ฑ์ ํฅ์๋ ๊ธฐ๋ฅ์ ์ด์ฉํ์ค ์ ์์ต๋๋ค!
Docker๋ก ๋น ๋ฅด๊ฒ ์์ํ๊ธฐ ๐ณโ
WebSocket ์ง์์ Open WebUI๊ฐ ์ฌ๋ฐ๋ฅด๊ฒ ์๋ํ๊ธฐ ์ํ ํ์ ์กฐ๊ฑด์ ๋๋ค. ๋คํธ์ํฌ ์ค์ ์์ WebSocket ์ฐ๊ฒฐ์ ํ์ฉํด์ผ ํฉ๋๋ค.
Ollama๊ฐ ์ปดํจํฐ์ ์ค์น๋ ์ด ์๋ ๊ฒฝ์ฐ, ๋ค์ ๋ช ๋ น์ ์ฌ์ฉํ์ธ์:
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:main
Nvidia GPU ์ง์๊ณผ ํจ๊ป Open WebUI๋ฅผ ์คํํ๋ ค๋ฉด, ๋ค์ ๋ช ๋ น์ ์ฌ์ฉํ์ธ์:
docker run -d -p 3000:8080 --gpus all --add-host=host.docker.internal:host-gateway -v open-webui:/app/backend/data --name open-webui --restart always ghcr.io/open-webui/open-webui:cuda
Ollama์ ํจ๊ป ๋ฒ๋ค๋ Open WebUIโ
์ด ์ค์น ๋ฐฉ๋ฒ์ Ollama์ Open WebUI๋ฅผ ํจ๊ป ๋ฒ๋คํ ๋จ์ผ ์ปจํ ์ด๋ ์ด๋ฏธ์ง๋ฅผ ์ฌ์ฉํ์ฌ ๋จ์ผ ์ปค๋งจ๋๋ฅผ ํตํด ๊ฐ๋จํ๊ฒ ์ค์ ํ ์ ์๋๋ก ํด์ค๋๋ค. ํ๋์จ์ด ์ค์ ์ ๋ฐ๋ผ ์ ์ ํ ๋ช ๋ น์ ์ ํํ์ธ์:
-
GPU ์ง์ ํฌํจ: GPU ๋ฆฌ์์ค๋ฅผ ํ์ฉํ๋ ค๋ฉด ๋ค์ ๋ช ๋ น์ ์คํํ์ธ์:
docker run -d -p 3000:8080 --gpus=all -v ollama:/root/.ollama -v open-webui:/app/backend/data --name open-webui --restart always ghcr.io/open-webui/open-webui:ollama -
CPU ์ ์ฉ: GPU๋ฅผ ์ฌ์ฉํ์ง ์๋ ๊ฒฝ์ฐ, ๋์ ์ด ๋ช ๋ น์ ์ฌ์ฉํ์ธ์:
docker run -d -p 3000:8080 -v ollama:/root/.ollama -v open-webui:/app/backend/data --name open-webui --restart always ghcr.io/open-webui/open-webui:ollama
๋ ๋ช ๋ น ๋ชจ๋ Open WebUI์ Ollama๋ฅผ ๊ฐ๋จํ๊ณ ๋ฒ๊ฑฐ๋กญ์ง ์์ ์ค์น ๊ณผ์ ์ผ๋ก ์ค์ ํ์ฌ ์ ์ํ๊ฒ ๋ชจ๋ ๊ฒ์ ์คํํ ์ ์์ต๋๋ค.
์ค์น ํ http://localhost:3000์์ Open WebUI๋ฅผ ์ฌ ์ฉํ ์ ์์ต๋๋ค. ์ฆ๊ธฐ์ธ์! ๐
Dev ๋ธ๋์น๋ฅผ ์ฌ์ฉํ๊ธฐ ๐โ
:dev ๋ธ๋์น๋ ์ต์ ๋ถ์์ ํ ๊ธฐ๋ฅ๊ณผ ๋ณ๊ฒฝ ์ฌํญ์ด ํฌํจ๋์ด ์์ต๋๋ค. ์ค๋ฅ๊ฐ ์๊ฑฐ๋ ๊ธฐ๋ฅ์ด ์์ฑ๋์ง ์์ ์ํ์ผ ์ ์์ผ๋ฏ๋ก ์ฌ์ฉ์ ์ฃผ์ํ์ธ์.
์ต์ ์ฒจ๋จ ๊ธฐ๋ฅ์ ์๋ํด๋ณด๊ณ ์ถ์ผ๋ฉฐ, ๊ฐ๋ ๋ถ์์ ํจ์ ๊ฐ์ํ ์ ์๋ค๋ฉด, :dev ํ๊ทธ๋ฅผ ๋ค์๊ณผ ๊ฐ์ด ์ฌ์ฉํ ์ ์์ต๋๋ค:
docker run -d -p 3000:8080 -v open-webui:/app/backend/data --name open-webui --restart always ghcr.io/open-webui/open-webui:dev
Open WebUI ์ ๋ฐ์ดํธํ๊ธฐโ
Open WebUI ์ปจํ ์ด๋๋ฅผ ์ฝ๊ฒ ์ ๋ฐ์ดํธํ๋ ค๋ฉด ๋ค์ ๋จ๊ณ๋ฅผ ๋ฐ๋ฅด์ธ์:
์๋ ์ ๋ฐ์ดํธโ
Watchtower๋ฅผ ์ฌ์ฉํ์ฌ Docker ์ปจํ ์ด๋๋ฅผ ์๋์ผ๋ก ์ ๋ฐ์ดํธํ์ธ์:
docker run --rm -v /var/run/docker.sock:/var/run/docker.sock containrrr/watchtower --run-once open-webui
์๋ ์ ๋ฐ์ดํธโ
์ปจํ ์ด๋๋ฅผ 5๋ถ๋ง๋ค ์๋์ผ๋ก ์ ๋ฐ์ดํธํ์ธ์:
docker run -d --name watchtower --restart unless-stopped -v /var/run/docker.sock:/var/run/docker.sock containrrr/watchtower --interval 300 open-webui
๐ง ์ฐธ๊ณ : ์ปจํ
์ด๋ ์ด๋ฆ์ด ๋ค๋ฅผ ๊ฒฝ์ฐ open-webui๋ฅผ ํด๋น ์ด๋ฆ์ผ๋ก ๋ฐ๊พธ์ธ์.
์๋ ์ค์นโ
Open WebUI๋ฅผ ์ค์นํ๊ณ ์คํํ๋ ๋ฐฉ๋ฒ์ uv ๋ฐํ์ ๊ด๋ฆฌ์๋ฅผ ์ฌ์ฉํ๋ ๋ฐฉ๋ฒ๊ณผ Python์ pip์ ์ฌ์ฉํ๋ ๋ฐฉ๋ฒ ๋ ๊ฐ์ง๊ฐ ์์ต๋๋ค. ๋ ๋ฐฉ๋ฒ ๋ชจ๋ ํจ๊ณผ์ ์ด์ง๋ง, uv ์ฌ์ฉ์ ๊ฐ๋ ฅํ ๊ถ์ฅํฉ๋๋ค. ์ด๋ ํ๊ฒฝ ๊ด๋ฆฌ๋ฅผ ๊ฐ์ํํ๊ณ ์ ์ฌ์ ์ถฉ๋์ ์ต์ํํ๊ธฐ ๋๋ฌธ์
๋๋ค.
uv๋ฅผ ์ฌ์ฉํ ์ค์น (๊ถ์ฅ)โ
uv ๋ฐํ์ ๊ด๋ฆฌ์๋ Open WebUI์ ๊ฐ์ ์ ํ๋ฆฌ์ผ์ด์
์ ์ํ Python ํ๊ฒฝ ๊ด๋ฆฌ๊ฐ ์ํํ๊ฒ ์ด๋ฃจ์ด์ง๋๋ก ํฉ๋๋ค. ๋ค์ ๋จ๊ณ๋ฅผ ํตํด ์์ํ์ญ์์ค:
1. uv ์ค์นโ
์ด์ ์ฒด์ ์ ์ ํฉํ ์ค์น ๋ช ๋ น์ ์ ํํ์ญ์์ค:
-
macOS/Linux:
curl -LsSf https://astral.sh/uv/install.sh | sh -
Windows:
powershell -ExecutionPolicy ByPass -c "irm https://astral.sh/uv/install.ps1 | iex"
2. Open WebUI ์คํโ
uv๊ฐ ์ค์น๋๋ฉด Open WebUI ์คํ์ด ๊ฐํธํฉ๋๋ค. ์๋ ๋ช
๋ น์ ์ฌ์ฉ ํ๋ฉฐ, ๋ฐ์ดํฐ ์์ค์ ๋ฐฉ์งํ๊ธฐ ์ํด DATA_DIR ํ๊ฒฝ๋ณ์๋ฅผ ์ค์ ํด์ผ ํฉ๋๋ค. ๊ฐ ํ๋ซํผ์ ๋ํ ์์ ๊ฒฝ๋ก๊ฐ ์ ๊ณต๋ฉ๋๋ค:
-
macOS/Linux:
DATA_DIR=~/.open-webui uvx --python 3.11 open-webui@latest serve -
Windows:
$env:DATA_DIR="C:\open-webui\data"; uvx --python 3.11 open-webui@latest serve
pip๋ฅผ ์ฌ์ฉํ ์ค์นโ
Python์ ํจํค์ง ๊ด๋ฆฌ์ pip์ ์ฌ์ฉํ์ฌ Open WebUI๋ฅผ ์ค์นํ๋ ์ฌ์ฉ์์๊ฒ๋ uv๋ conda์ ๊ฐ์ Python ๋ฐํ์ ๊ด๋ฆฌ์๋ฅผ ์ฌ์ฉํ๋ ๊ฒ์ ๊ฐ๋ ฅํ ๊ถ์ฅํฉ๋๋ค. ์ด๋ฌํ ๋๊ตฌ๋ Python ํ๊ฒฝ์ ํจ๊ณผ์ ์ผ๋ก ๊ด๋ฆฌํ๊ณ ์ถฉ๋์ ๋ฐฉ์งํฉ๋๋ค.
Python 3.11์ ๊ฐ๋ฐ ํ๊ฒฝ์ ๋๋ค. Python 3.12๋ ์๋ํ๋ ๊ฒ์ผ๋ก ๋ณด์ด์ง๋ง ์ฒ ์ ํ ํ ์คํธ๋์ง ์์์ต๋๋ค. Python 3.13์ ์ ํ ํ ์คํธ๋์ง ์์์ผ๋ ์ฌ์ฉ์ ์ฑ ์ ํ์ ์ฌ์ฉํ์ญ์์ค.
-
Open WebUI ์ค์น:
ํฐ๋ฏธ๋์ ์ด๊ณ ๋ค์ ๋ช ๋ น์ ์คํํ์ญ์์ค:
pip install open-webui -
Open WebUI ์์:
์ค์น ์๋ฃ ํ ์๋ฒ๋ฅผ ์์ํ๋ ค๋ฉด ๋ค์์ ์คํํ์ญ์์ค:
open-webui serve
Open WebUI ์ ๋ฐ์ดํธโ
์ต์ ๋ฒ์ ์ผ๋ก ์ ๋ฐ์ดํธํ๋ ค๋ฉด ๊ฐ๋จํ ๋ค์์ ์คํํ์ญ์์ค:
pip install --upgrade open-webui
์ด ๋ฐฉ๋ฒ์ ํ์ ์ข ์์ฑ์ ๋ชจ๋ ์ค์นํ๊ณ Open WebUI๋ฅผ ์์ํ์ฌ ๊ฐ๋จํ๊ณ ํจ์จ์ ์ธ ์ค์ ์ ์ ๊ณตํฉ๋๋ค. ์ค์น ํ, http://localhost:8080์์ Open WebUI์ ์ก์ธ์คํ ์ ์์ต๋๋ค. ์ฆ๊ธฐ์ธ์! ๐
๊ธฐํ ์ค์น ๋ฐฉ๋ฒโ
Docker๋ฅผ ์ฌ์ฉํ์ง ์๋ ๊ธฐ๋ณธ ์ค์น ๋ฐฉ๋ฒ, Docker Compose, Kustomize ๋ฐ Helm์ ํฌํจํ ๋ค์ํ ์ค์น ์ต์ ์ ์ ๊ณตํฉ๋๋ค. ์์ธํ ๊ฐ์ด๋๋ Open WebUI Documentation ๋๋ Discord ์ปค๋ฎค๋ํฐ๋ฅผ ๋ฐฉ๋ฌธํ์ญ์์ค.
์ ์ฒด ์์ ๊ฐ์ด๋๋ฅผ ๊ณ์ ์งํํ์ญ์์ค.
ํ์์ ๐โ
์ฐ๋ฆฌ๋ ํ์์๋ค์ ๊ด๋ํ ์ง์์ ๋ํด ๋๋จํ ๊ฐ์ฌ๋๋ฆฝ๋๋ค. ๊ทธ๋ค์ ๊ธฐ์ฌ๋ ์ฐ๋ฆฌ์ ํ๋ก์ ํธ๋ฅผ ์ ์งํ๊ณ ๊ฐ์ ํ ์ ์๊ฒ ๋์์ฃผ๋ฉฐ, ์ปค๋ฎค๋ํฐ๋ฅผ ์ํ ์์ง์ ์์ ์ ์ง์์ ์ผ๋ก ์ ๊ณตํ ์ ์๋๋ก ๋ณด์ฅํฉ๋๋ค. ๊ฐ์ฌํฉ๋๋ค!
๊ฐ์ฌ ์ธ์ฌ ๐โ
๋ค์ ๊ธฐ๊ด์ผ๋ก๋ถํฐ ๋ฐ์ ๊ด๋ํ ์ง์์ ๋ํด ๊น์ด ๊ฐ์ฌ๋๋ฆฝ๋๋ค:





