Open WebUI์ ๊ธฐ์ฌํ ์ค๋น๊ฐ ๋์ จ๋์? ์์ํด๋ด ์๋ค! ๐
Open WebUI ๊ฐ๋ฐ์ ๋ฐ์ด๋ค ์ค๋น๊ฐ ๋์๋์? ์ด ์ข ํฉ์ ์ธ ๊ฐ์ด๋๋ ๋ก์ปฌ ๊ฐ๋ฐ ํ๊ฒฝ์ ๋น ๋ฅด๊ณ ์ฝ๊ฒ ์ค์ ํ ์ ์๋๋ก ๋์์ค ๊ฒ์ ๋๋ค. ๊ฒฝํ ๋ง์ ๊ฐ๋ฐ์๋ ์ด๋ณด์๋ ๊ด๊ณ์์ด, ํ๋ฐํธ์๋๋ฅผ ์์ ํ๊ณ , ๋ฐฑ์๋๋ฅผ ๊ฐ์ ํ๋ฉฐ Open WebUI์ ๋ฏธ๋์ ๊ธฐ์ฌํ ์ค๋น๋ฅผ ํ ์ ์๋๋ก ์๋ดํฉ๋๋ค! ๊ฐ๋จํ๊ณ ์์ธํ ๋จ๊ณ๋ก ๊ฐ๋ฐ ํ๊ฒฝ์ ์ค๋นํด๋ด ์๋ค!
์ฌ์ ์ค๋นโ
์์ํ๊ธฐ ์ ์ ์์คํ ์ด ๋ค์ ์ต์ ์๊ตฌ ์ฌํญ์ ์ถฉ์กฑํ๋์ง ํ์ธํ์ธ์:
- ์ด์ ์ฒด์ : Linux (๋๋ Windows์ WSL), Windows 11, ๋๋ macOS. (์ต์์ ํธํ์ฑ์ ์ํด ๊ถ์ฅ)
- Python: 3.11 ์ด์ ๋ฒ์ . (๋ฐฑ์๋ ์๋น์ค ํ์)
- Node.js: 22.10 ์ด์ ๋ฒ์ . (ํ๋ฐํธ์๋ ๊ฐ๋ฐ ํ์)
- ๊ถ์ฅ IDE: VSCode์ ๊ฐ์ IDE๋ฅผ ์ฌ์ฉํ์ฌ ์ฝ๋ ํธ์ง, ๋๋ฒ๊น ๋ฐ ํตํฉ ํฐ๋ฏธ๋ ์ ๊ทผ์ ๊ถ์ฅํฉ๋๋ค. ์ ํธํ๋ IDE๊ฐ ์๋ค๋ฉด ์ฌ์ฉํ์ ๋ ์ข์ต๋๋ค!
- [์ ํ ์ฌํญ] GitHub Desktop: ์ปค๋งจ๋๋ผ์ธ Git ์ฌ์ฉ์ด ์ต์ํ์ง ์์ ๊ฒฝ์ฐ Git ์ ์ฅ์ ๊ด๋ฆฌ๋ฅผ ๋ ์ฝ๊ฒ ํ๊ธฐ ์ํด GitHub Desktop ์ค์น๋ฅผ ๊ณ ๋ คํด ๋ณด์ธ์.
๋ก์ปฌ ํ๊ฒฝ ์ค์ โ
Open WebUI์ ํ๋ฐํธ์๋ (์ฌ์ฉ์ ์ธํฐํ์ด์ค)์ ๋ฐฑ์๋ (API ๋ฐ ์๋ฒ ๋ก์ง) ๋ชจ๋๋ฅผ ์ค์ ํ๊ฒ ์ต๋๋ค.
1. ๋ฆฌํฌ์งํ ๋ฆฌ ํด๋ก โ
๋จผ์ git clone
๋ช
๋ น์ ์ฌ์ฉํ์ฌ Open WebUI ๋ฆฌํฌ์งํ ๋ฆฌ๋ฅผ ๋ก์ปฌ ๋จธ์ ์ ๋ค์ด๋ก๋ํ์ธ์. ์ด๋ ๋ก์ปฌ ์ปดํจํฐ์ ํ๋ก์ ํธ ๋ณต์ฌ๋ณธ์ ์์ฑํฉ๋๋ค.
- ํฐ๋ฏธ๋ ์ด๊ธฐ (Windows์์ Git Bash๋ฅผ ์ฌ์ฉ ์ค์ด๋ผ๋ฉด Git Bash๋ฅผ ์ฝ๋๋ค).
- Open WebUI ํ๋ก์ ํธ๋ฅผ ์ ์ฅํ ๋๋ ํ ๋ฆฌ๋ก ์ด๋.
- ๋ฆฌํฌ์งํ ๋ฆฌ๋ฅผ ํด๋ก : ๋ค์ ๋ช ๋ น์ ์คํํ์ธ์:
git clone https://github.com/open-webui/open-webui.git
cd open-webui
git clone
๋ช
๋ น์ด GitHub์์ ํ๋ก์ ํธ ํ์ผ์ ๋ค์ด๋ก๋ํฉ๋๋ค. cd open-webui
๋ช
๋ น์ ์๋ก ์์ฑ๋ ํ๋ก์ ํธ ๋๋ ํ ๋ฆฌ๋ก ์ด๋ํฉ๋๋ค.
2. ํ๋ฐํธ์๋ ์ค์ (์ฌ์ฉ์ ์ธํฐํ์ด์ค)โ
๋จผ์ ์ฌ์ฉ์ ์ธํฐํ์ด์ค(๋ธ๋ผ์ฐ์ ์ ํ์๋๋ ๋ถ๋ถ)๋ฅผ ์คํํด๋ด ์๋ค:
- ํ๊ฒฝ ๋ณ์ ๊ตฌ์ฑ:
-
์์ ํ๊ฒฝ ๋ณ์๋ฅผ
.env
๋ก ๋ณต์ฌ:cp -RPp .env.example .env
์ด ๋ช ๋ น์
.env.example
ํ์ผ์.env
๋ผ๋ ์ ํ์ผ๋ก ๋ณต์ฌํฉ๋๋ค..env
ํ์ผ์ ํ๋ฐํธ์๋์ ํ๊ฒฝ ๋ณ์๋ฅผ ๊ตฌ์ฑํฉ๋๋ค. -
.env
ํ์ผ ์ปค์คํฐ๋ง์ด์ง: ์ฝ๋ ํธ์ง๊ธฐ(์: VSCode)์์.env
ํ์ผ์ ์ฝ๋๋ค. ์ด ํ์ผ์๋ API ์๋ํฌ์ธํธ ๋ฐ ๊ธฐํ ์ค์ ๊ณผ ๊ฐ์ ํ๋ฐํธ์๋ ๊ตฌ์ฑ ๋ณ์๊ฐ ํฌํจ๋์ด ์์ต๋๋ค. ๋ก์ปฌ ๊ฐ๋ฐ์์๋.env.example
์ ๊ธฐ๋ณธ ์ค์ ์ผ๋ก๋ ์ถฉ๋ถํ ์์ํ ์ ์์ต๋๋ค. ๊ทธ๋ฌ๋ ํ์ํ๋ฉด ์ด๋ฅผ ์ปค์คํฐ๋ง์ด์งํ ์ ์์ต๋๋ค.
-
์ค์: ๋ฆฌํฌ์งํ ๋ฆฌ์ ๊ธฐ์ฌํ ๋ .env
์ ๋ฏผ๊ฐํ ์ ๋ณด๋ฅผ ์ปค๋ฐํ์ง ๋ง์ธ์.
-
ํ๋ฐํธ์๋ ์ข ์์ฑ ์ค์น:
-
ํ๋ฐํธ์๋ ๋๋ ํ ๋ฆฌ๋ก ์ด๋: ํ๋ก์ ํธ ๋ฃจํธ(
open-webui
๋๋ ํ ๋ฆฌ)์ ์๋์ง ํ์ธํ์ธ์.# ํ๋ก์ ํธ ๋ฃจํธ๊ฐ ์๋ ๊ฒฝ์ฐ ์คํ:
cd open-webui -
ํ์ํ JavaScript ํจํค ์ง ์ค์น:
npm install
์ด ๋ช ๋ น์
npm
(Node ํจํค์ง ๊ด๋ฆฌ์)์ ์ฌ์ฉํ์ฌ ํ๋ก์ ํธ ๋ฃจํธ ๋๋ ํ ๋ฆฌ์package.json
ํ์ผ์ ์ฝ๊ณ ํ๋ฐํธ์๋ ์คํ์ ํ์ํ ๋ชจ๋ JavaScript ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ๋๊ตฌ๋ฅผ ๋ค์ด๋ก๋ํฉ๋๋ค. ์ธํฐ๋ท ์ฐ๊ฒฐ ์๋์ ๋ฐ๋ผ ์๊ฐ์ด ์ข ๊ฑธ๋ฆด ์ ์์ต๋๋ค.
-
-
ํ๋ฐํธ์๋ ๊ฐ๋ฐ ์๋ฒ ์์:
npm run dev
์ด ๋ช ๋ น์ ํ๋ฐํธ์๋ ๊ฐ๋ฐ ์๋ฒ๋ฅผ ์คํํฉ๋๋ค. ๋จ๊ณ๋ฅผ ์ฌ๋ฐ๋ฅด๊ฒ ๋ฐ๋ฅด๋ฉด ์๋ฒ๊ฐ ์คํ ์ค์์ ๋ํ๋ด๊ณ ๋ก์ปฌ URL์ ์ ๊ณตํ ๊ฒ์ ๋๋ค.
๐ ํ๋ฐํธ์๋ ์ ๊ทผ: ์น ๋ธ๋ผ์ฐ์ ๋ฅผ ์ด๊ณ http://localhost:5173์ผ๋ก ์ด๋ํ์ธ์. Open WebUI์ ํ๋ฐํธ์๋๊ฐ ์คํ ์ค์ด๋ฉฐ ๋ฐฑ์๋๊ฐ ์ฌ์ฉ ๊ฐ๋ฅํด์ง๊ธฐ๋ฅผ ๊ธฐ๋ค๋ฆฌ๋ ๋ฉ์์ง๊ฐ ํ์๋ ๊ฒ์ ๋๋ค. ์์ง ๊ฑฑ์ ํ์ง ๋ง์ธ์! ์ด์ ๋ฐฑ์๋๋ฅผ ์ค์ ํด๋ด ์๋ค. ์ด ํฐ๋ฏธ๋์ ๊ณ์ ์คํ ์ํ๋ก ์ ์งํ์ธ์ โ ํ๋ฐํธ์๋๋ฅผ ์ ๊ณตํ๊ณ ์์ต๋๋ค!
3. ๋ฐฑ์๋ ์ค์ (API ๋ฐ ์๋ฒ)โ
๋ ์ํํ ๊ฐ๋ฐ ๊ฒฝํ์ ์ํด ํ๋ฐํธ์๋ ๋ฐ ๋ฐฑ์๋ ํ๋ก์ธ์ค์ ๋ณ๋์ ํฐ๋ฏธ๋ ์ธ์คํด์ค๋ฅผ ์ฌ์ฉํ๋ ๊ฒ์ ๊ฐ๋ ฅํ ๊ถ์ฅํฉ๋๋ค. ์ด๋ ์์ ํ๋ฆ์ ๋ ์ฒด๊ณ์ ์ผ๋ก ์ ์งํ๊ณ ์ ํ๋ฆฌ์ผ์ด์ ์ ๊ฐ ๋ถ๋ถ์ ๋ ๋ฆฝ์ ์ผ๋ก ๊ด๋ฆฌํ๊ธฐ ์ฝ๊ฒ ๋ง๋ญ๋๋ค.
์ ๋ณ๋์ ํฐ๋ฏธ๋์ด ํ์ํ๊ฐ์?
- ํ๋ก์ธ์ค ๋ถ๋ฆฌ: ํ๋ฐํธ์๋์ ๋ฐฑ์๋ ๊ฐ๋ฐ ์๋ฒ๋ ๋ณ๊ฐ์ ํ๋ก๊ทธ๋จ์ ๋๋ค. ๋ณ๋์ ํฐ๋ฏธ๋์์ ์คํํ๋ฉด ์๋ก ๊ฐ์ญํ์ง ์๊ณ ๋ ๋ฆฝ์ ์ผ๋ก ์ฌ์์ํ๊ฑฐ๋ ์ค์งํ ์ ์์ต๋๋ค.
- ๋ ๋ช ํํ ๋ก๊ทธ์ ์ถ๋ ฅ: ๊ฐ ํฐ๋ฏธ๋์ ํ๋ก ํธ์๋ ๋๋ ๋ฐฑ์๋์ ๊ด๋ จ๋ ๋ก๊ทธ์ ์ถ๋ ฅ์ ๋ณ๋๋ก ํ์ํฉ๋๋ค. ๋ก๊ทธ๊ฐ ์์ฌ ์์ด ์ฐพ๊ธฐ ์ด๋ ค์ด ๊ฒฝ์ฐ ์์ด, ๋๋ฒ๊น ๊ณผ ๋ชจ๋ํฐ๋ง์ด ํจ์ฌ ์ฌ์์ง๋๋ค.
- ํฐ๋ฏธ๋ ํผ๋ ๊ฐ์: ํ๋์ ํฐ๋ฏธ๋์์ ํ๋ก ํธ์๋์ ๋ฐฑ์๋ ๋ช ๋ น์ด๋ฅผ ํผํฉํ์ฌ ์คํํ๋ฉด ํผ๋์ค๋ฌ์ธ ์ ์์ต๋๋ค. ๋ถ๋ฆฌ๋ ํฐ๋ฏธ๋์ ๋ช ๋ น์ด ๊ธฐ๋ก๊ณผ ํ์ฑ ํ๋ก์ธ์ค๋ฅผ ์ฒด๊ณ์ ์ผ๋ก ์ ์งํฉ๋๋ค.
- ์ํฌํ๋ก์ฐ ํจ์จ์ฑ ํฅ์: ํ ํฐ๋ฏธ๋์์๋ ํ๋ก ํธ์๋ ์์
(
npm run dev
์คํ ๋ฑ)์ ์ํํ๊ณ , ๋์์ ๋ค๋ฅธ ํฐ๋ฏธ๋์์๋ ๋ฐฑ์๋ ์์ (์๋ฒ ์์, ๋ก๊ทธ ํ์ธ ๋ฑ)์ ๊ด๋ฆฌํ ์ ์์ต๋๋ค. ์ด ๋ฐฉ์์ ํ ํฐ๋ฏธ๋์์ ๊ณ์ ์ปจํ ์คํธ๋ฅผ ์ ํํ์ง ์์๋ ๋๋ฏ๋ก ํจ์จ์ ์ ๋๋ค.
VSCode ํตํฉ ํฐ๋ฏธ๋ ์ฌ์ฉ (๊ถ์ฅ):
VSCode์ ํตํฉ ํฐ๋ฏธ๋ ๊ธฐ๋ฅ์ ์ฌ๋ฌ ํฐ๋ฏธ๋ ๊ด๋ฆฌ๋ฅผ ๋งค์ฐ ๊ฐ๋จํ๊ฒ ๋ง๋ค์ด์ค๋๋ค. ํ๋ก ํธ์๋์ ๋ฐฑ์๋ ๋ถ๋ฆฌ๋ฅผ ์ํด ๋ค์์ ํ์ฉํด๋ณด์ธ์:
-
ํ๋ก ํธ์๋ ํฐ๋ฏธ๋ (์ด๋ฏธ ์ด๋ ค ์์ ๊ฐ๋ฅ์ฑ์ด ๋์): ํ๋ก ํธ์๋ ์ค์ ๋จ๊ณ๋ฅผ ๋ฐ๋๋ค๋ฉด, ์๋ง ์ด๋ฏธ ํ๋ก์ ํธ ๋ฃจํธ(
open-webui
๋๋ ํ ๋ฆฌ)์์ VSCode ํฐ๋ฏธ๋์ ์ด์์ ๊ฒ์ ๋๋ค. ์ฌ๊ธฐ์ ํ๋ก ํธ์๋ ๋ช ๋ น์ด(npm run dev
๋ฑ)๋ฅผ ์คํํฉ๋๋ค. ๋ค์ ๋จ๊ณ๋ฅผ ์งํํ๊ธฐ ์ ์open-webui
๋๋ ํ ๋ฆฌ์ ์๋์ง ํ์ธํ์ธ์. -
๋ฐฑ์๋ ํฐ๋ฏธ๋ (์๋ก ์ด๊ธฐ):
- VSCode์์ Terminal > New Terminal๋ก ์ด๋ (๋๋ Windows/Linux์ ๊ฒฝ์ฐ
Ctrl+Shift+
๋จ์ถํค, macOS์ ๊ฒฝ์ฐCmd+Shift+
์ฌ์ฉ)ํ์ฌ ์ ํตํฉ ํฐ๋ฏธ๋ ํจ๋์ ์ฝ๋๋ค. backend
๋๋ ํ ๋ฆฌ๋ก ์ด๋: ์ด ์๋ก์ด ํฐ๋ฏธ๋์์cd backend
๋ช ๋ น์ด๋ฅผ ์ฌ์ฉํ์ฌ ํ๋ก์ ํธ์backend
ํด๋๋ก ๋๋ ํ ๋ฆฌ๋ฅผ ๋ณ๊ฒฝํฉ๋๋ค. ์ด๋ ๊ฒ ํ๋ฉด ๋ชจ๋ ๋ฐฑ์๋ ๊ด๋ จ ๋ช ๋ น์ด๊ฐ ์ฌ๋ฐ๋ฅธ ์ปจํ ์คํธ์์ ์คํ๋ฉ๋๋ค.
์ด์ VSCode ๋ด์์ ํ๋ก ํธ์๋(
open-webui
๋๋ ํ ๋ฆฌ)์ ๋ํ ํฐ๋ฏธ๋๊ณผ ๋ฐฑ์๋(backend
๋๋ ํ ๋ฆฌ)์ ๋ํ ํฐ๋ฏธ๋ ๋ ๊ฐ๋ฅผ ๊ฐ์ง๊ฒ ๋ฉ๋๋ค. VSCode ๋ด์์ ์ด๋ค ํฐ๋ฏธ๋ ๊ฐ์ ์ฝ๊ฒ ์ ํํ์ฌ ํ๋ก ํธ์๋์ ๋ฐฑ์๋ ํ๋ก์ธ์ค๋ฅผ ๋ ๋ฆฝ์ ์ผ๋ก ๊ด๋ฆฌํ ์ ์์ต๋๋ค. ์ด ์ค์ ์ ๋ณด๋ค ๊น๋ํ๊ณ ํจ์จ์ ์ธ ๊ฐ๋ฐ ์ํฌํ๋ก์ฐ๋ฅผ ์ํด ๊ฐ๋ ฅํ ์ถ์ฒ๋ฉ๋๋ค. - VSCode์์ Terminal > New Terminal๋ก ์ด๋ (๋๋ Windows/Linux์ ๊ฒฝ์ฐ
๋ฐฑ์๋ ์ค์ ๋จ๊ณ (๋ฐฑ์๋ ํฐ๋ฏธ๋์์):
-
๋ฐฑ์๋ ๋๋ ํ ๋ฆฌ๋ก ์ด๋: (์ด์ ๋จ๊ณ์์ ์๋ก์ด ํฐ๋ฏธ๋์์ ์ด๋ฏธ
backend
๋๋ ํ ๋ฆฌ์ ์์ด์ผ ํฉ๋๋ค.) ๊ทธ๋ ์ง ์๋ค๋ฉด ๋ค์์ ์คํํ์ธ์:cd backend
-
Conda ํ๊ฒฝ ์์ฑ ๋ฐ ํ์ฑํ (๊ถ์ฅ):
-
Conda๋ฅผ ์ฌ์ฉํ์ฌ Python ์ข ์์ฑ๊ณผ ํ๋ก์ ํธ ํ๊ฒฝ์ ๊ด๋ฆฌํ๋ ๊ฒ์ ๊ฐ๋ ฅํ ๊ถ์ฅ๋๋ฆฝ๋๋ค. ์ด๋ ์์คํ ๋ด ๋ค๋ฅธ Python ํ๋ก์ ํธ์์ ์ถฉ๋์ ๋ฐฉ์งํ๊ณ , ์ฌ๋ฐ๋ฅธ Python ๋ฒ์ ๋ฐ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ๋ณด์ฅํฉ๋๋ค.
conda create --name open-webui python=3.11
conda activate open-webuiconda create --name open-webui python=3.11
: ์ด ๋ช ๋ น์ด๋ Python 3.11 ๋ฒ์ ์ ์ฌ์ฉํ๋open-webui
๋ผ๋ ์ด๋ฆ์ ์๋ก์ด Conda ํ๊ฒฝ์ ์์ฑํฉ๋๋ค. ์ ํํ Python 3.11.x ๋ฒ์ ์ด ๋ค๋ฅด๋๋ผ๋ ๊ด์ฐฎ ์ต๋๋ค.conda activate open-webui
: ์ด ๋ช ๋ น์ด๋ ์๋ก ์์ฑ๋ Conda ํ๊ฒฝ์ ํ์ฑํํฉ๋๋ค. ํ์ฑํ๋๋ฉด ํฐ๋ฏธ๋ ํ๋กฌํํธ๊ฐ ์ผ๋ฐ์ ์ผ๋กopen-webui
ํ๊ฒฝ์ ์์์ ๋ํ๋ด๋๋ก ๋ณ๊ฒฝ๋ฉ๋๋ค (์:(open-webui)
๊ฐ ์ค์ ์์์ ํ์๋ ์ ์์).
๋ฐฑ์๋ ํฐ๋ฏธ๋์์ ํ๊ฒฝ์ ํ์ฑํํ ํ ์งํํ์ญ์์ค.
(Conda ์ฌ์ฉ์ ์ ํ ์ฌํญ์ด์ง๋ง, Python ์ข ์์ฑ ๊ด๋ฆฌ ๋ฐ ์ถฉ๋ ๋ฐฉ์ง๋ฅผ ์ํด ๊ฐ๋ ฅํ ๊ถ์ฅ๋ฉ๋๋ค.) Conda ์ฌ์ฉ์ ์ ํํ์ง ์๋๋ผ๋, Python 3.11 ์ด์์ ์ฌ์ฉํ๊ณ ์๋ค๋ฉด ๋ค์ ๋จ๊ณ๋ก ์งํํ ์ ์์ง๋ง ์ข ์์ฑ ์ถฉ๋ ๊ฐ๋ฅ์ฑ์ ์ ์ํ์ญ์์ค.
-
-
๋ฐฑ์๋ ์ข ์์ฑ ์ค์น:
- ๋ฐฑ์๋ ํฐ๋ฏธ๋์์ (Conda๋ฅผ ์ฌ์ฉํ๋ ๊ฒฝ์ฐ ํ์ฑํ๋ ์ํ์์) ๋ค์์ ์คํํ์ธ์:
pip install -r requirements.txt -U
์ด ๋ช ๋ น์ด๋
pip
(Python ํจํค์ง ๊ด๋ฆฌ์)๋ฅผ ์ฌ์ฉํ์ฌbackend
๋๋ ํ ๋ฆฌ ๋ด์requirements.txt
ํ์ผ์ ์ฝ์ต๋๋ค.requirements.txt
๋ ๋ฐฑ์๋ ์คํ์ ํ์ํ ๋ชจ๋ Python ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ๋์ดํฉ๋๋ค.pip install
์ ์ด๋ฌํ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ํ์ฑ Python ํ๊ฒฝ (Conda ํ๊ฒฝ ์ฌ์ฉ ์ ํด๋น ํ๊ฒฝ, ์๋๋ฉด ์์คํ ์ ์ฒด Python ํ๊ฒฝ)์ ๋ค์ด๋ก๋ํ๊ณ ์ค์นํฉ๋๋ค.-U
ํ๋๊ทธ๋ ํธํ๋๋ ์ต์ ๋ฒ์ ์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ๋ณด์ฅํฉ๋๋ค. -
๋ฐฑ์๋ ๊ฐ๋ฐ ์๋ฒ ์์:
- ๋ฐฑ์๋ ํฐ๋ฏธ๋์์ ๋ค์์ ์คํํฉ๋๋ค:
sh dev.sh
์ด ๋ช ๋ น์ด๋
dev.sh
์คํฌ๋ฆฝํธ๋ฅผ ์คํํฉ๋๋ค. ์ด ์คํฌ๋ฆฝํธ๋ ๋ฐฑ์๋ ๊ฐ๋ฐ ์๋ฒ๋ฅผ ์์ํ๋ ๋ช ๋ น์ด๋ฅผ ํฌํจํ๊ณ ์์ ๊ฐ๋ฅ์ฑ์ด ํฝ๋๋ค. (๋ช ๋ น์ด๊ฐ ์คํ ์ค ๋ฌด์์ ํ๋์ง ๊ถ๊ธํ๋ค๋ฉด, ์ฝ๋ ํธ์ง๊ธฐ์์dev.sh
ํ์ผ์ ์ด์ด ๊ตฌ์ฒด์ ์ธ ๋ด์ฉ์ ํ์ธํ ์ ์์ต๋๋ค.) ๋ฐฑ์๋ ์๋ฒ๋ ์ผ๋ฐ์ ์ผ๋ก ์์ ํ ํฐ๋ฏธ๋์ ์ถ๋ ฅ์ ํ์ํฉ๋๋ค.๐ API ๋ฌธ์ ํ์ํ๊ธฐ: ๋ฐฑ์๋๊ฐ ์คํ ์ค์ผ ๋, ์น ๋ธ๋ผ์ฐ์ ์์ ์๋ ์์ฑ๋ API ๋ฌธ์์ http://localhost:8080/docs์์ ์ก์ธ์คํ ์ ์์ต๋๋ค. ์ด ๋ฌธ์๋ ๋ฐฑ์๋ API ์๋ํฌ์ธํธ, ๋ฐฑ์๋์ ์ํธ ์์ฉํ๋ ๋ฐฉ๋ฒ ๋ฐ ์์/๋ฐํ๋๋ ๋ฐ์ดํฐ๋ฅผ ์ดํดํ๋ ๋ฐ ๋งค์ฐ ์ ์ฉํฉ๋๋ค. ๊ฐ๋ฐ ์ค ์ด ๋ฌธ์๋ฅผ ์ ํ์ฉํ์ธ์!
๐ ์ถํํฉ๋๋ค! ๋ชจ๋ ๋จ๊ณ๋ฅผ ๋ฐ๋๋ค๋ฉด ๋ก์ปฌ์์ ํ๋ก ํธ์๋์ ๋ฐฑ์๋ ๊ฐ๋ฐ ์๋ฒ๊ฐ ๋ชจ๋ ์คํ ์ค์ผ ๊ฒ์ ๋๋ค. ํ๋ก ํธ์๋์ ์ก์ธ์คํ๋ ๋ธ๋ผ์ฐ์ ํญ(๋ณดํต http://localhost:5173)์ผ๋ก ๋์๊ฐ์ธ์. ํ์ด์ง๋ฅผ ์๋ก๊ณ ์นจํ์ธ์. ์ด์ ๋ธ๋ผ์ฐ์ ์์ ๋ก์ปฌ ๋ฐฑ์๋์ ์ฐ๊ฒฐ๋ ์ ์ฒด Open WebUI ์ ํ๋ฆฌ์ผ์ด์ ์ ๋ณผ ์ ์์ต๋๋ค!
์ผ๋ฐ์ ์ธ ๋ฌธ์ ํด๊ฒฐโ
์ค์น๋ ๊ฐ๋ฐ ์ค์ ๋ฐ์ํ ์ ์๋ ๋ช ๊ฐ์ง ์ผ๋ฐ์ ์ธ ๋ฌธ์ ์ ๋ํ ํด๊ฒฐ ๋ฐฉ๋ฒ์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค:
๐ฅ "FATAL ERROR: Reached Heap Limit" (ํ๋ก ํธ์๋)โ
์ด ์ค๋ฅ๋ ์ฃผ๋ก ๋๊ท๋ชจ ํ๋ก ํธ์๋ ์ ํ๋ฆฌ์ผ์ด์ ์ ์์ ํ ๋ ๋น๋ ๊ณผ์ ์์ Node.js๊ฐ ๋ฉ๋ชจ๋ฆฌ ๋ถ์กฑ์ผ๋ก ์ธํด ๋ฐ์ํฉ๋๋ค.
ํด๊ฒฐ ๋ฐฉ๋ฒ: Node.js ํ ํฌ๊ธฐ๋ฅผ ๋๋ ค Node.js๊ฐ ์ฌ์ฉํ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ๋ ํ๋ณดํ์ธ์. ๋ช ๊ฐ์ง ์ต์ ์ด ์์ต๋๋ค:
-
NODE_OPTIONS
ํ๊ฒฝ ๋ณ์ ์ฌ์ฉ (๊ฐ๋ฐ ๊ถ์ฅ):-
ํ์ฌ ํฐ๋ฏธ๋ ์ธ์ ์์ ๋ฉ๋ชจ๋ฆฌ ์ ํ์ ์์๋ก ๋๋ฆฌ๋ ๋ฐฉ๋ฒ์ ๋๋ค. ํ๋ก ํธ์๋ ํฐ๋ฏธ๋์์
npm run dev
๋๋npm run build
๋ฅผ ์คํํ๊ธฐ ์ ์NODE_OPTIONS
ํ๊ฒฝ ๋ณ์๋ฅผ ์ค์ ํ์ธ์:export NODE_OPTIONS="--max-old-space-size=4096" # Linux/macOS (bash, zsh)์ฉ
# set NODE_OPTIONS=--max-old-space-size=4096 # Windows (๋ช ๋ น ํ๋กฌํํธ)์ฉ
# $env:NODE_OPTIONS="--max-old-space-size=4096" # Windows (PowerShell)์ฉ
npm run dev์ด์ ์ฒด์ ๋ฐ ํฐ๋ฏธ๋์ ๋ง๋ ๋ช ๋ น์ ์ ํํ์ธ์.
4096
์ 4GB ๋ฉ๋ชจ๋ฆฌ๋ฅผ ๋ํ๋ ๋๋ค. ํ์์ ๋ฐ๋ผ ๊ฐ์ ๋ ์ฆ๊ฐ์ํฌ ์๋ ์์ต๋๋ค(์: 8GB์ ๋ํด8192
). ์ด ์ค์ ์ ํ์ฌ ํฐ๋ฏธ๋ ์ธ์ ์์ ์คํ๋๋ ๋ช ๋ น์๋ง ์ ์ฉ๋ฉ๋๋ค.
-
-
Dockerfile
์์ ํ๊ธฐ (๋์ปค ํ๊ฒฝ์ฉ):-
๋์ปค๋ฅผ ์ฌ์ฉํ๋ ๊ฒฝ์ฐ
Dockerfile
๋ด์์NODE_OPTIONS
ํ๊ฒฝ ๋ณ์๋ฅผ ์๊ตฌ์ ์ผ๋ก ์ค์ ํ ์ ์์ต๋๋ค. ์ด๋ ๋์ปค ํ๊ฒฝ์์ ์ผ๊ด๋ ๋ฉ๋ชจ๋ฆฌ ํ ๋น์ ์ ์ฉํฉ๋๋ค. ์์๋ ๋ค์๊ณผ ๊ฐ์ต๋๋ค:ENV NODE_OPTIONS=--max-old-space-size=4096
-
์ถฉ๋ถํ RAM ํ ๋น: ๋ฐฉ๋ฒ์ ๊ด๊ณ์์ด, Node.js์์ ์ฌ์ฉํ ์ ์๋ ์ถฉ๋ถํ RAM์ด ์์คํ ๋๋ ๋์ปค ์ปจํ ์ด๋์ ์๋์ง ํ์ธํ์ธ์. ์ต์ 4GB RAM์ ๊ถ์ฅํ๋ฉฐ, ๋ํ ํ๋ก์ ํธ๋ ๋ณต์กํ ๋น๋์ ๊ฒฝ์ฐ ๋ ๋ง์ RAM์ด ํ์ํ ์ ์์ต๋๋ค. ๋ถํ์ํ ์ ํ๋ฆฌ์ผ์ด์ ์ ๋ซ์ RAM์ ํ๋ณดํ์ธ์.
-
โ ๏ธ ํฌํธ ์ถฉ๋ (ํ๋ก ํธ์๋ & ๋ฐฑ์๋)โ
ํฌํธ์ ๊ด๋ จ๋ "Address already in use" ๋๋ "Port already bound"์ ๊ฐ์ ์ค๋ฅ๊ฐ ๋ฐ์ํ๋ฉด, ์ด๋ ์์คํ
์ ๋ค๋ฅธ ์ ํ๋ฆฌ์ผ์ด์
์ด 5173
(ํ๋ก ํธ์๋ ๊ธฐ๋ณธ๊ฐ) ๋๋ 8080
(๋ฐฑ์๋ ๊ธฐ๋ณธ๊ฐ) ํฌํธ๋ฅผ ์ด๋ฏธ ์ฌ์ฉ ์ค์์ ์๋ฏธํฉ๋๋ค. ํน์ ํฌํธ๋ ํ ๋ฒ์ ํ๋์ ์ ํ๋ฆฌ์ผ์ด์
๋ง ์ฌ์ฉํ ์ ์์ต๋๋ค.
ํด๊ฒฐ ๋ฐฉ๋ฒ:
-
์ถฉ๋ํ๋ ํ๋ก์ธ์ค ์๋ณ: ํ์ํ ํฌํธ๋ฅผ ์ฌ์ฉ ์ค์ธ ์ ํ๋ฆฌ์ผ์ด์ ์ ์ฐพ์์ผ ํฉ๋๋ค.
- Linux/macOS: ์ ํฐ๋ฏธ๋์ ์ด๊ณ
lsof
๋๋netstat
๋ช ๋ น์ ์ฌ์ฉํ์ธ์:lsof -i :5173
(๋๋ ๋ฐฑ์๋ ํฌํธ์ ๊ฒฝ์ฐ:8080
)netstat -tulnp | grep 5173
(๋๋8080
) ์ด๋ฌํ ๋ช ๋ น์ ์ฌ์ฉ ์ค์ธ ํฌํธ์ ํ๋ก์ธ์ค ID(PID)์ ํ๋ก์ธ์ค ์ด๋ฆ์ ๋์ดํฉ๋๋ค.
- Windows: ๊ด๋ฆฌ์ ๊ถํ์ผ๋ก ๋ช
๋ น ํ๋กฌํํธ ๋๋ PowerShell์ ์ด๊ณ
netstat
๋๋Get-NetTCPConnection
์ ์ฌ์ฉํ์ธ์:netstat -ano | findstr :5173
(๋๋:8080
) (๋ช ๋ น ํ๋กฌํํธ)Get-Process -Id (Get-NetTCPConnection -LocalPort 5173).OwningProcess
(PowerShell) ์ด๋ฌํ ๋ช ๋ น๋ ํฌํธ๋ฅผ ์ฌ์ฉํ๋ ํ๋ก์ธ์ค์ PID๋ฅผ ๋ณด์ฌ์ค๋๋ค.
- Linux/macOS: ์ ํฐ๋ฏธ๋์ ์ด๊ณ
-
์ถฉ๋ํ๋ ํ๋ก์ธ์ค ์ข ๋ฃ: ํ๋ก์ธ์ค ID(PID)๋ฅผ ์๋ณํ ํ, ํด๋น ํฌํธ๋ฅผ ์ฌ์ฉํ๋ ์ ํ๋ฆฌ์ผ์ด์ ์ ์ค์งํ ์ ์์ต๋๋ค. ํ๋ก์ธ์ค๋ฅผ ์ข ๋ฃํ๊ธฐ ์ ์ ๋ฌด์์ธ์ง ํ์ ์ด ์๋ ๊ฒฝ์ฐ ์ฃผ์ํ์ธ์.
- Linux/macOS:
kill
๋ช ๋ น์ ์ฌ์ฉํ์ธ์:kill <PID>
(์ฌ๊ธฐ์<PID>
๋ ์ค์ ํ๋ก์ธ์ค ID๋ก ๋์ฒด).kill
๋ก ํ๋ก์ธ์ค๊ฐ ์ข ๋ฃ๋์ง ์๋ ๊ฒฝ์ฐkill -9 <PID>
(๊ฐ์ ์ข ๋ฃ)๋ฅผ ์ฌ์ฉํ ์ ์์ง๋ง ์ ์คํ ์ฌ์ฉํ์ธ์. - Windows: ๊ด๋ฆฌ์ ๊ถํ์ผ๋ก ๋ช
๋ น ํ๋กฌํํธ ๋๋ PowerShell์์
taskkill
๋ช ๋ น์ ์ฌ์ฉํ์ธ์:taskkill /PID <PID> /F
(์ฌ๊ธฐ์<PID>
๋ ํ๋ก์ธ์ค ID๋ก ๋์ฒด)./F
ํ๋๊ทธ๋ ๊ฐ์ ์ข ๋ฃ๋ฅผ ์๋ฏธํฉ๋๋ค.
- Linux/macOS:
-
๋์์ผ๋ก ํฌํธ ๋ณ๊ฒฝ (๊ณ ๊ธ):
- ์ถฉ๋ํ๋ ํ๋ก์ธ์ค๋ฅผ ์ข
๋ฃํ ์ ์๋ ๊ฒฝ์ฐ(์: ํ์ํ ์์คํ
์๋น์ค์ธ ๊ฒฝ์ฐ), ํ๋ก ํธ์๋ ๋ฐ/๋๋ ๋ฐฑ์๋๊ฐ ๋ค๋ฅธ ํฌํธ๋ฅผ ์ฌ์ฉํ๋๋ก Open WebUI๋ฅผ ๊ตฌ์ฑํ ์ ์์ต๋๋ค. ์ผ๋ฐ์ ์ผ๋ก ๊ตฌ์ฑ ํ์ผ์ ์์ ํด์ผ ํฉ๋๋ค.
- ํ๋ก ํธ์๋ ํฌํธ: ํ๋ก ํธ์๋ ๋ฌธ์๋ ๊ตฌ์ฑ ํ์ผ(์ข
์ข
vite.config.js
๋๋ ์ ์ฌ)์์ ๊ฐ๋ฐ ์๋ฒ ํฌํธ๋ฅผ ๋ณ๊ฒฝํ๋ ๋ฐฉ๋ฒ์ ํ์ธํ์ธ์. ํ๋ก ํธ์๋์์ ํฌํธ๋ฅผ ์ํด ํ๊ฒฝ ๋ณ์๋ฅผ ์ฌ์ฉํ๋ ๊ฒฝ์ฐ.env
ํ์ผ๋ ์กฐ์ ํด์ผ ํ ์ ์์ต๋๋ค. - ๋ฐฑ์๋ ํฌํธ:
dev.sh
์คํฌ๋ฆฝํธ ๋๋ ๋ฐฑ์๋ ๊ตฌ์ฑ ํ์ผ์ ํ์ธํ์ฌ ๋ฐฑ์๋ ํฌํธ๊ฐ ์ด๋ป๊ฒ ์ค์ ๋์ด ์๋์ง ํ์ธํฉ๋๋ค. ๋ฐฑ์๋ ํฌํธ๋ฅผ ๋ณ๊ฒฝํ๋ ค๋ฉด ์์ ๋ช ๋ น ๋๋ ๊ตฌ์ฑ ํ์ผ์ ์์ ํด์ผ ํ ์ ์์ต๋๋ค. ๋ฐฑ์๋ ํฌํธ๋ฅผ ๋ณ๊ฒฝํ๋ฉด ํ๋ก ํธ์๋์.env
ํ์ผ์ ์ ๋ฐ์ดํธํ์ฌ ์๋ก์ด ๋ฐฑ์๋ URL์ ๊ฐ๋ฆฌํค๋๋ก ํด์ผ ํ ๊ฐ๋ฅ์ฑ์ด ๋์ต๋๋ค.
- ํ๋ก ํธ์๋ ํฌํธ: ํ๋ก ํธ์๋ ๋ฌธ์๋ ๊ตฌ์ฑ ํ์ผ(์ข
์ข
- ์ถฉ๋ํ๋ ํ๋ก์ธ์ค๋ฅผ ์ข
๋ฃํ ์ ์๋ ๊ฒฝ์ฐ(์: ํ์ํ ์์คํ
์๋น์ค์ธ ๊ฒฝ์ฐ), ํ๋ก ํธ์๋ ๋ฐ/๋๋ ๋ฐฑ์๋๊ฐ ๋ค๋ฅธ ํฌํธ๋ฅผ ์ฌ์ฉํ๋๋ก Open WebUI๋ฅผ ๊ตฌ์ฑํ ์ ์์ต๋๋ค. ์ผ๋ฐ์ ์ผ๋ก ๊ตฌ์ฑ ํ์ผ์ ์์ ํด์ผ ํฉ๋๋ค.
๐ ํซ ๋ฆฌ๋ก๋๊ฐ ์๋ํ์ง ์์โ
ํซ ๋ฆฌ๋ก๋(๋๋ ํซ ๋ชจ๋ ๊ต์ฒด - HMR)๋ ์ฝ๋ ๋ณ๊ฒฝ ์ ๋ธ๋ผ์ฐ์ ๋ฅผ ์๋์ผ๋ก ์๋ก๊ณ ์นจํ๋ ๋ฉ์ง ๊ฐ๋ฐ ๊ธฐ๋ฅ์ ๋๋ค. ์ด ๊ธฐ๋ฅ์ด ์๋ํ์ง ์์ผ๋ฉด ๊ฐ๋ฐ ์ํฌํ๋ก๊ฐ ํฌ๊ฒ ๋๋ ค์ง ์ ์์ต๋๋ค.
๋ฌธ์ ํด๊ฒฐ ๋จ๊ณ:
- ๊ฐ๋ฐ ์๋ฒ ์คํ ์ฌ๋ถ ํ์ธ:
npm run dev
(ํ๋ก ํธ์๋)์sh dev.sh
(๋ฐฑ์๋)๊ฐ ๊ฐ๊ฐ์ ํฐ๋ฏธ๋์์ ์คํ ์ค์ด๋ฉฐ ์ค๋ฅ๊ฐ ๋ฐ์ํ์ง ์์๋์ง ํ์ธํ์ญ์์ค. ํฐ๋ฏธ๋ ์ถ๋ ฅ์์ ์๋ฒ๊ฐ ์คํ ์ค์ด๊ณ "๊ฐ์ ๋ชจ๋" ๋๋ "๊ฐ๋ฐ ๋ชจ๋"๋ผ๊ณ ํ์๋์ด ์๋ ๋ฉ์์ง๋ฅผ ์ฐพ์๋ณด์ธ์. ์ค๋ฅ๊ฐ ์๋ ๊ฒฝ์ฐ ๋จผ์ ํด๊ฒฐํ์ญ์์ค. - ๊ฐ์ ๋ชจ๋/HMR ๋ฉ์์ง ํ์ธ: ๊ฐ๋ฐ ์๋ฒ๊ฐ ์์๋ ๋ ํฐ๋ฏธ๋์์ ํซ ๋ฆฌ๋ก๋ ๋๋ ๊ฐ์ ๋ชจ๋๊ฐ ํ์ฑํ๋์๋ค๋ ๋ฉ์์ง๋ฅผ ์ถ๋ ฅํด์ผ ํฉ๋๋ค. "HMR ํ์ฑํ๋จ", "ํ์ผ ๋ณ๊ฒฝ ์ฌํญ ๊ฐ์ ์ค" ๋๋ ์ด์ ์ ์ฌํ ๋ฌธ๊ตฌ๋ฅผ ์ฐพ์๋ณด์ธ์. ์ด๋ฌํ ๋ฉ์์ง๊ฐ ์์ผ๋ฉด ๊ตฌ์ฑ ๋ฌธ์ ์ผ ์ ์์ต๋๋ค.
- ๋ธ๋ผ์ฐ์ ์บ์: ๋๋ก๋ ๋ธ๋ผ์ฐ์ ์บ์ ๋๋ฌธ์ ํซ ๋ฆฌ๋ก๋๊ฐ ์ ์์ ์ผ๋ก ์๋ํ๋๋ผ๋ ์ต์ ๋ณ๊ฒฝ ์ฌํญ์ ๋ณผ ์ ์์ต๋๋ค. ๋ธ๋ผ์ฐ์ ์์ ๊ฐ์ ์๋ก๊ณ ์นจ์ ์๋ํ์ธ์:
- Windows/Linux: Ctrl+Shift+R
- macOS: Cmd+Shift+R
- ๋๋ ๋ธ๋ผ์ฐ์ ์บ์๋ฅผ ์ง์ฐ๊ฑฐ๋ ํ๋ฐํธ์๋๋ฅผ ๋น๊ณต๊ฐ/์ํฌ๋ฆฟ ๋ธ๋ผ์ฐ์ ์ฐฝ์์ ์ด์ด๋ณด์ธ์.
- ์ข
์์ฑ ๋ฌธ์ (ํ๋ก ํธ์๋): ์ค๋๋ ๋๋ ์์๋ ํ๋ก ํธ์๋ ์ข
์์ฑ์ ํซ ๋ฆฌ๋ก๋๋ฅผ ๋ฐฉํดํ ์ ์์ต๋๋ค. ํ๋ก ํธ์๋ ์ข
์์ฑ์ ์๋ก๊ณ ์นจํด๋ณด์ธ์:
-
ํ๋ก ํธ์๋ ํฐ๋ฏธ๋์์ ๋ค์์ ์คํํ์ธ์:
rm -rf node_modules && npm install
์ด ๋ช ๋ น์ ์ข ์์ฑ์ด ์ ์ฅ๋
node_modules
๋๋ ํ ๋ฆฌ๋ฅผ ์ญ์ ํ ๋ค์ ๋ค์ ์๋ก ์ค์นํฉ๋๋ค. ์์๋ ๋๋ ์ค๋๋ ํจํค์ง๋ก ์ธํ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ ์ ์์ต๋๋ค.
-
- ๋ฐฑ์๋ ์ฌ์์ ํ์(๋ฐฑ์๋ ๋ณ๊ฒฝ์ฌํญ์ธ ๊ฒฝ์ฐ): ํซ ๋ฆฌ๋ก๋๋ ์ผ๋ฐ์ ์ผ๋ก ํ๋ก ํธ์๋ ์ฝ๋ ๋ณ๊ฒฝ์ฌํญ(UI, ์คํ์ผ๋ง, ์ปดํฌ๋ํธ)์ ๋ํด ๊ฐ์ฅ ์ ์๋ํฉ๋๋ค. ๋ฐฑ์๋ ์ฝ๋ ๋ณ๊ฒฝ์ฌํญ(ํนํ ์๋ฒ ๋ก์ง, API ์๋ํฌ์ธํธ, ์ข
์์ฑ ๋ณ๊ฒฝ ๋ฑ)์ด ์๋ ๊ฒฝ์ฐ ๋ฐฑ์๋ ์๋ฒ๋ฅผ ์๋์ผ๋ก ์ฌ์์ํด์ผ ํ ์ ์์ต๋๋ค(
sh dev.sh
๋ฅผ ์ค์งํ ๋ค์ ๋ค์ ์คํ). ๋ฐฑ์๋ ๋ณ๊ฒฝ์ฌํญ์ ๋ํ ํซ ๋ฆฌ๋ก๋๋ ๋ง์ ๋ฐฑ์๋ ๊ฐ๋ฐ ์ค์ ์์ ์๋์ผ๋ก ๊ตฌ์ฑ๋์ง ์๊ฑฐ๋ ์ ๋ขฐ๋๊ฐ ๋ฎ์ ๊ฒฝ์ฐ๊ฐ ์์ต๋๋ค. - IDE/ํธ์ง๊ธฐ ๋ฌธ์ : ๋๋ฌผ๊ฒ IDE ๋๋ ์ฝ๋ ํธ์ง๊ธฐ์ ๊ด๋ จ๋ ๋ฌธ์ ๊ฐ ํ์ผ ๋ณ๊ฒฝ์ฌํญ์ด ๊ฐ๋ฐ ์๋ฒ์์ ์ ๋๋ก ๊ฐ์ง๋์ง ์๊ฒ ํ ์ ์์ต๋๋ค. IDE๋ฅผ ์ฌ์์ํ๊ฑฐ๋ ํ์ผ์ด ์ ๋๋ก ์ ์ฅ๋๊ณ ์๋์ง ํ์ธํด๋ณด์ธ์.
- ๊ตฌ์ฑ ๋ฌธ์ (๊ณ ๊ธ): ์ ๋จ๊ณ ์ค ์๋ฌด ๊ฒ๋ ์๋ํ์ง ์์ ๊ฒฝ์ฐ, ํ๋ก ํธ์๋ ๋๋ ๋ฐฑ์๋ ๊ฐ๋ฐ ์๋ฒ ์ค์ ์ ๋ ๋ณต์กํ ๊ตฌ์ฑ ๋ฌธ์ ๊ฐ ์์ ์ ์์ต๋๋ค. ํ๋ก์ ํธ์ ๋ฌธ์, ๊ตฌ์ฑ ํ์ผ(e.g.,
vite.config.js
ํ๋ก ํธ์๋, ๋ฐฑ์๋ ์๋ฒ ๊ตฌ์ฑ ํ์ผ)์ ํ์ธํ๊ฑฐ๋ Open WebUI ์ปค๋ฎค๋ํฐ ๋๋ ์ ์ง๋ณด์ํ์ ๋์์ ์์ฒญํ์ธ์.
Open WebUI์ ๊ธฐ์ฌํ๊ธฐโ
Open WebUI์ ๋ํ ๊ธฐ์ฌ๋ฅผ ์ง์ฌ์ผ๋ก ํ์ํฉ๋๋ค! ์ด ํ๋ก์ ํธ๋ฅผ ๋์ฑ ๊ฐ์ ํ๋ ๋ฐ ๊ทํ์ ๋์์ด ๋งค์ฐ ์์คํฉ๋๋ค. ์ํํ๊ณ ํจ๊ณผ์ ์ธ ๊ธฐ์ฌ ์ํฌํ๋ก๋ฅผ ์ํ ๊ฐ๋จํ ๊ฐ์ด๋๋ฅผ ์๊ฐํฉ๋๋ค:
-
ํ๋ก์ ํธ ๊ตฌ์กฐ ์ด ํด: ํ๋ก์ ํธ์ ๋๋ ํ ๋ฆฌ ๊ตฌ์กฐ, ํนํ
frontend
์backend
ํด๋๋ฅผ ์ตํ๋ ์๊ฐ์ ๊ฐ์ง์ธ์. ์ฝ๋, ๊ตฌ์ฑ ํ์ผ ๋ฐ ๋ฌธ์๋ฅผ ์ดํด๋ณด๊ณ ์ด๋ป๊ฒ ์กฐ์ง๋์ด ์๋์ง ํ์ ํ์ธ์. -
์์ ๊ธฐ์ฌ๋ก ์์ํ๊ธฐ: ํ๋ก์ ํธ์ ์ฒ์ ์ฐธ์ฌํ๋ค๋ฉด ๋ค์๊ณผ ๊ฐ์ ์์ ๊ธฐ์ฌ๋ก ์์ํ๋ ๊ฒ์ ๊ณ ๋ คํด๋ณด์ธ์:
- ๋ฌธ์ ๊ฐ์ : ์คํ ์์ , ์ค๋ช ๋ช ํํ, ๋ฌธ์์ ๋ ๋ง์ ์ธ๋ถ์ฌํญ ์ถ๊ฐ.
- ๋ฒ๊ทธ ์์ : ๋ณด๊ณ ๋ ๋ฒ๊ทธ ๋๋ ๋ฌธ์ ์ฒ๋ฆฌ.
- ์์ UI ๊ฐ์ : ์คํ์ผ๋ง ๊ฐ์ , ์์ ๋ ์ด์์ ๋ฌธ์ ์์ . ์ด๋ฌํ ์์ ๊ธฐ์ฌ๋ ์ฝ๋๋ฒ ์ด์ค์ ๊ธฐ์ฌ ํ๋ก์ธ์ค๋ฅผ ์ตํ๋ ๋ฐ ์ข์ ๋ฐฉ๋ฒ์ ๋๋ค.
-
๋ ํฐ ๋ณ๊ฒฝ ์ฌํญ์ ๋จผ์ ๋ ผ์ํ๊ธฐ: ์ค์ํ ์๋ก์ด ๊ธฐ๋ฅ์ ๊ตฌํํ๊ฑฐ๋ ๋๊ท๋ชจ ๋ณ๊ฒฝ ์ฌํญ์ ๊ณํ ์ค์ธ ๊ฒฝ์ฐ, ์์ด๋์ด๋ฅผ ํ๋ก์ ํธ ์ ์ง๋ณด์ํ ๋๋ ์ปค๋ฎค๋ํฐ์ ๋จผ์ ๋ ผ์ํ๋ ๊ฒ์ด ์ข์ต๋๋ค. ๋ค์ ๋ฐฉ๋ฒ์ผ๋ก ํ ์ ์์ต๋๋ค:
- GitHub ๋ฆฌํฌ์งํ ๋ฆฌ์์ ์ด์ ์ด๊ธฐ๋ฅผ ํตํด ๊ธฐ๋ฅ์ด๋ ๋ณ๊ฒฝ ์ฌํญ ์ ์.
- Open WebUI ์ปค๋ฎค๋ํฐ ์ฑ๋(๊ฐ๋ฅํ ๊ฒฝ์ฐ, ํ๋ก์ ํธ์ README ๋๋ ์น์ฌ์ดํธ์์ ๋งํฌ ํ์ธ)์ ๊ฐ์ ํ์ฌ ์์ด๋์ด ๋ ผ์. ์ด๋ ๊ฒ ํ๋ฉด ๊ธฐ์ฌ ๋ด์ฉ์ด ํ๋ก์ ํธ ๋ชฉํ์ ์ผ์นํ๋์ง ํ์ธํ ์ ์์ผ๋ฉฐ ๋ณํฉ๋์ง ์์ ๊ฐ๋ฅ์ฑ์ด ์๋ ๊ธฐ๋ฅ์ ๋ญ๋น๋๋ ๋ ธ๋ ฅ์ ๋ฐฉ์งํ ์ ์์ต๋๋ค.
-
์์ ์ ์ํ ๋ณ๋ ๋ธ๋์น ์์ฑ: ์ ๋๋ก
dev
๋ธ๋์น์ ์ง์ ์ปค๋ฐํ์ง ๋ง์ญ์์ค. ํญ์ ์์ ์ค์ธ ๊ธฐ๋ฅ ๋๋ ๋ฒ๊ทธ ์์ ์ ์ํด ์ ๋ธ๋์น๋ฅผ ๋ง๋์ญ์์ค. ์ด๋ ๋ณ๊ฒฝ ์ฌํญ์ ๋ถ๋ฆฌํ๊ณ ๊ด๋ฆฌ ๋ฐ ํ ๋ฆฌํ์คํธ๋ฅผ ์ ์ถํ๋ ๊ณผ์ ์ ๋จ์ํํฉ ๋๋ค.-
dev
๋ธ๋์น๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ํ ์ ๋ธ๋์น(e.g.,my-feature-branch
)๋ฅผ ์์ฑํ๋ ค๋ฉด:git checkout dev
git pull origin dev # ๋ก์ปฌ dev ๋ธ๋์น๋ฅผ ์ต์ ์ํ๋ก ์ ์ง
git checkout -b my-feature-branch
-
-
๋ณ๊ฒฝ์ฌํญ์ ์์ฃผ ์ปค๋ฐํ๊ณ ๋ช ํํ ์ปค๋ฐ ๋ฉ์์ง๋ฅผ ์์ฑ: ๊ธฐ๋ฅ ๊ฐ๋ฐ์ด๋ ๋ฒ๊ทธ ์์ ์ ์์ ๋ ผ๋ฆฌ์ ์ปค๋ฐ์ ์์ฃผ ์์ฑํ์ญ์์ค. ๋ช ํํ๊ณ ๊ฐ๊ฒฐํ ์ปค๋ฐ ๋ฉ์์ง๋ฅผ ์์ฑํ์ฌ ์ด๋ค ๋ณ๊ฒฝ์ ํ๋์ง์ ๊ทธ ์ด์ ๋ฅผ ์ค๋ช ํ์ญ์์ค. ์ข์ ์ปค๋ฐ ๋ฉ์์ง๋ ๋ณ๊ฒฝ ๋ด์ญ์ ์ฝ๊ฒ ์ดํดํ ์ ์๊ฒ ํ๋ฉฐ ํ์ ์ ํ์์ ์ ๋๋ค.
- ์ข์ ์ปค๋ฐ ๋ฉ์์ง ์:
Fix: ๋ฐฑ์๋ ์ค์ ๋ฌธ์์ ์คํ ์์
- ์ข ์ ์ปค๋ฐ ๋ฉ์์ง ์:
Feat: ์ฌ์ฉ์ ํ๋กํ ํ์ด์ง ๊ธฐ๋ณธ ์ ๋ณด ํ์ ๊ธฐ๋ฅ ๊ตฌํ
- ์ข์ ์ปค๋ฐ ๋ฉ์์ง ์:
-
dev
๋ธ๋์น์ ์ ๊ธฐ์ ์ผ๋ก ๋๊ธฐํ ์ ์ง: ์์ ์ค์ธ ๋ธ๋์น๊ฐdev
๋ธ๋์น์ ์ต์ ๋ณ๊ฒฝ ์ฌํญ๊ณผ ์ฃผ๊ธฐ์ ์ผ๋ก ๋๊ธฐํ๋๋๋ก ํ์ฌ ๋์ค์ ๋ณํฉ ์ถฉ๋์ ์ต์ํํ์ญ์์ค:git checkout dev
git pull origin dev
git checkout my-feature-branch
git merge devgit merge
๋จ๊ณ์์ ๋ฐ์ํ ๋ณํฉ ์ถฉ๋์ ํด๊ฒฐํ์ญ์์ค. -
ํธ์ ์ ์ ํ ์คํธ ์คํ (๊ฐ๋ฅํ ๊ฒฝ์ฐ): ์ด ๊ฐ์ด๋์์๋ Open WebUI์ ๋ํ ํน์ ํ ์คํธ ์ ์ฐจ๋ฅผ ์์ธํ ์ค๋ช ํ์ง ์์ง ๋ง, ์ฝ๋๋ฅผ ํธ์ํ๊ธฐ ์ ์ ์ฌ์ฉํ ์ ์๋ ํ ์คํธ๋ฅผ ์คํํ๋ ๊ฒ์ด ์ข์ ์ต๊ด์ ๋๋ค. ํ๋ก์ ํธ ๋ฌธ์๋
package.json
(ํ๋ก ํธ์๋์ ๊ฒฝ์ฐ) ๋ฐ ๋ฐฑ์๋ ํ์ผ์์ ํ ์คํธ ๊ด๋ จ ๋ช ๋ น์ด๋ฅผ ํ์ธํ์ญ์์ค (์:npm run test
,pytest
๋ฑ). ํ ์คํธ๋ฅผ ์คํํ๋ฉด ๋ณ๊ฒฝ ์ฌํญ์ด ํ๊ท๋ฅผ ์ผ๊ธฐํ์ง ์์๊ฑฐ๋ ๊ธฐ์กด ๊ธฐ๋ฅ์ ๊นจ๋จ๋ฆฌ์ง ์์๋์ง ํ์ธํ ์ ์์ต๋๋ค. -
ํ ๋ฆฌํ์คํธ(PR) ์ ์ถ: ์์ ์ ์๋ฃํ๊ณ ํ ์คํธ(ํด๋นํ๋ ๊ฒฝ์ฐ)๋ฅผ ์คํํ๊ณ ๋ณ๊ฒฝ ์ฌํญ์ ๊ธฐ์ฌํ ์ค๋น๊ฐ ์๋ฃ๋๋ฉด GitHub์์ Open WebUI ์ ์ฅ์์
dev
๋ธ๋์น์ ํ ๋ฆฌํ์คํธ(PR)๋ฅผ ์ ์ถํ์ญ์์ค.- GitHub์์ Open WebUI ์ ์ฅ์๋ก ์ด๋ํ์ญ์์ค.
- ๋ธ๋์น๋ก ์ด๋ํ์ญ์์ค.
- "Contribute" ๋๋ "Pull Request" ๋ฒํผ ํด๋ฆญ (์ผ๋ฐ์ ์ผ๋ก ๋ น์).
- PR ์์ ์์ฑ:
- ์ ๋ชฉ: ๋ณ๊ฒฝ ์ฌํญ์ ์์ฝํ ๋ช ํํ๊ณ ์ค๋ช ์ ์ธ ์ ๋ชฉ์ ์์ฑํ์ญ์์ค (์: "Fix: ๋ก๊ทธ์ธ ํผ ์ ํจ์ฑ ๊ฒ์ฌ ๋ฌธ์ ํด๊ฒฐ").
- ์ค๋ช : ๋ณ๊ฒฝ ์ฌํญ, ํด๊ฒฐํ๊ณ ์ ํ๋ ๋ฌธ์ (์์ ๊ฒฝ์ฐ), ๊ด๋ จ๋ ์ปจํ ์คํธ๋ฅผ ๋ณด๋ค ์์ธํ ์์ฑํ์ญ์์ค. ๊ด๋ จ๋ ์ด์๊ฐ ์๋ ๊ฒฝ์ฐ ๋งํฌ๋ฅผ ์ถ๊ฐํ์ญ์์ค.
- PR ์ ์ถ.
ํ๋ก์ ํธ ๊ด๋ฆฌ์๊ฐ ํ ๋ฆฌํ์คํธ๋ฅผ ๊ฒํ ํ๊ณ ํผ๋๋ฐฑ์ ์ ๊ณตํ๋ฉฐ ๋ณ๊ฒฝ ๋ด์ฉ์ ๋ณํฉํ ์ ์์ต๋๋ค. ํผ๋๋ฐฑ์ ์๋ต์ ์ ํ๊ณ ์์ฒญ์ด ์์ ๊ฒฝ์ฐ ์์ ํ ์ค๋น๋ฅผ ํ์ญ์์ค.
์ด ํฌ๊ด์ ์ธ ๊ฐ์ด๋๋ฅผ ์ฝ์ด ์ฃผ์ ์ ๊ฐ์ฌํฉ๋๋ค! Open WebUI์ ๊ธฐ์ฌํ์๋ ค๋ ๊ด์ฌ์ ๊ฐ์ฌ๋๋ฆฌ๋ฉฐ ์ฌ๋ฌ๋ถ์ ๊ธฐ์ฌ๋ฅผ ํ์ํฉ๋๋ค. Open WebUI ์ปค๋ฎค๋ํฐ์ ์ผ์์ด ๋๋ ๋ฐ ๋์ ๋๋ฆฌ๋๋ก ํ๊ฒ ์ต๋๋ค! ๐ ํ๋ณตํ ์ฝ๋ฉ ๋์ธ์!