๊ด๋ฆฌ์ ๋น๋ฐ๋ฒํธ ์ฌ์ค์ ๐๏ธ
๊ด๋ฆฌ์ ๋น๋ฐ๋ฒํธ๋ฅผ ์์ผ ์ จ๋๋ผ๋ ๊ฑฑ์ ํ์ง ๋ง์ธ์! ์๋์์ Docker ๐ณ ๋ฐฐํฌ ๋ฐ Open WebUI์ ๋ก์ปฌ ์ค์น๋ฅผ ์ํ ๊ด๋ฆฌ์ ๋น๋ฐ๋ฒํธ ์ฌ์ค์ ๋จ๊ณ๋ณ ๊ฐ์ด๋๋ฅผ ์ฐพ์ ์ ์์ต๋๋ค.
Docker ๋ฐฐํฌ๋ฅผ ์ํ ๊ฐ์ด๋ ๐ณโ
Docker๋ฅผ ์ฌ์ฉํ์ฌ ๋ฐฐํฌ๋ Open WebUI์ ๊ด๋ฆฌ์ ๋น๋ฐ๋ฒํธ๋ฅผ ์ฌ์ค์ ํ๋ ค๋ฉด ๋ค์ ๋จ๊ณ๋ฅผ ๋ฐ๋ฅด์ธ์.
๋จ๊ณ 1: ์๋ก์ด ๋น๋ฐ๋ฒํธ ํด์ ์์ฑ ๐โ
๋จผ์ ์๋ก์ด ๋น๋ฐ๋ฒํธ์ bcrypt ํด์๋ฅผ ์์ฑํด์ผ ํฉ๋๋ค. ๋ก์ปฌ ์ปดํจํฐ์์ ๋ค์ ๋ช
๋ น์ ์คํํ์ฌ your-new-password
๋ฅผ ์ฌ์ฉํ๋ ค๋ ๋น๋ฐ๋ฒํธ๋ก ๋ฐ๊พธ์ธ์:
htpasswd -bnBC 10 "" your-new-password | tr -d :\n
์ฐธ๊ณ : ์ถ๋ ฅ์๋ ์ ์คํ ์ฒ๋ฆฌํด์ผ ํ๋ ํน์ ๋ฌธ์๊ฐ ํฌํจ๋ bcrypt ํด์๊ฐ ํฌํจ๋ฉ๋๋ค. ํด์์ $
๋ฌธ์๋ ๋ค์ ๋จ๊ณ์์ ์ฌ๋ฐ๋ฅด๊ฒ ์ฌ์ฉํ๋ ค๋ฉด ํธ๋ฆฌํ ์ด์ค์ผ์ดํ( \\\
๋ก ๋ณ๊ฒฝ)๋์ด์ผ ํฉ๋๋ค.
๋จ๊ณ 2: Docker์์ ๋น๋ฐ๋ฒํธ ์ ๋ฐ์ดํธ ๐โ
์ด์ Docker ๋ฐฐํฌ์์ ๋น๋ฐ๋ฒํธ๋ฅผ ์
๋ฐ์ดํธํฉ๋๋ค. ์๋ ๋ช
๋ น์์ HASH
๋ฅผ 1๋จ๊ณ์์ ์์ฑ๋ bcrypt ํด์๋ก ๋ฐ๊พธ๊ณ $
๋ฌธ์๋ฅผ ํธ๋ฆฌํ ์ด์ค์ผ์ดํํ์ฌ ์ฌ์ฉํ์ธ์. ๋ํ, [email protected]
์ ๊ด๋ฆฌ์ ๊ณ์ ๊ณผ ์ฐ๊ฒฐ๋ ์ด๋ฉ์ผ ์ฃผ์๋ก ๊ต์ฒดํ์ธ์.
์ค์: ์๋ ๋ช ๋ น์ด ๋ชจ๋ ๊ฒฝ์ฐ์์ ์๋ํ์ง ์์ ์ ์์ต๋๋ค. ์๋ํ์ง ์๋ ๊ฒฝ์ฐ, ์๋ ์ ์๋ ๋์ฒด ๋ช ๋ น์ ์๋ํ์ธ์.
docker run --rm -v open-webui:/data alpine/socat EXEC:"bash -c apk add sqlite && echo UPDATE auth SET password=\HASH\ WHERE email=\[email protected]\; | sqlite3 /data/webui.db", STDIO
๋ก์ปฌ ์ค์น๋ฅผ ์ํ ๊ฐ์ด๋ ๐ปโ
Open WebUI์ ๋ก์ปฌ ์ค์น๋ฅผ ์ฌ์ฉํ๋ ๊ฒฝ์ฐ์๋ ์์คํ ์์ ์ง์ ๊ด๋ฆฌ์ ๋น๋ฐ๋ฒํธ๋ฅผ ์ฌ์ค์ ํ ์ ์์ต๋๋ค.
๋จ๊ณ 1: ์๋ก์ด ๋น๋ฐ๋ฒํธ ํด์ ์์ฑ ๐โ
Docker ๋ฐฉ๋ฒ๊ณผ ๋ง์ฐฌ๊ฐ์ง๋ก, ๋ค์ ๋ช
๋ น์ ์ฌ์ฉํ์ฌ ์๋ก์ด ๋น๋ฐ๋ฒํธ์ bcrypt ํด์๋ฅผ ์์ฑํ์ธ์. your-new-password
๋ฅผ ์ ๋น๋ฐ๋ฒํธ๋ก ๋ฐ๊พธ๋ ๊ฒ์ ์์ง ๋ง์ธ์:
htpasswd -bnBC 10 "" your-new-password | tr -d :\n
๋จ๊ณ 2: ๋ก์ปฌ ๋น๋ฐ๋ฒํธ ์ ๋ฐ์ดํธ ๐โ
์ด์ ๋ก์ปฌ ์ปดํจํฐ์์ open-webui
๋๋ ํ ๋ฆฌ๋ก ์ด๋ํ์ฌ 1๋จ๊ณ์์ ์์ฑํ bcrypt ํด์๋ฅผ HASH
๋ก, ๊ด๋ฆฌ์ ๊ณ์ ์ด๋ฉ์ผ์ [email protected]
๋ก ๋ฐ๊พผ ํ ๋ค์์ ์คํํ์ธ์:
sqlite3 backend/data/webui.db "UPDATE auth SET password=HASH WHERE [email protected];"
๋์ฒด Docker ๋ฐฉ๋ฒโ
์์ ๋ฐฉ๋ฒ์ ๋ฌธ์ ๊ฐ ๋ฐ์ํ๋ฉด. alpine/socat
์์ bash
๋ช
๋ น์ ์ฐ๊ฒฐํ๋ ๋ฐ ๋ฌธ์ ๊ฐ ๋ฐ์ํ ์ ์์ต๋๋ค. bash
๊ฐ ์๊ธฐ ๋๋ฌธ์
๋๋ค.
-
open-webui
๋ณผ๋ฅจ์ ์ฐ๊ฒฐ๋alpine
Linux๋ฅผ ์คํํฉ๋๋ค.docker run -it --rm -v open-webui:/path/to/data alpine
/path/to/data
๋ ๋น์ ์ ๋ณผ๋ฅจ ์ค์ ์ ๋ฐ๋ผ ๋ฌ๋ผ์ง๋๋ค.-
apache2-utils
์sqlite
๋ฅผ ์ค์นํฉ๋๋ค:apk add apache2-utils sqlite
-
bcrypt
ํด์๋ฅผ ์์ฑํฉ๋๋ค:htpasswd -bnBC 10 "" your-new-password | tr -d :
-
๋น๋ฐ๋ฒํธ๋ฅผ ์ ๋ฐ์ดํธํฉ๋๋ค:
sqlite3 /path/to/data/webui.db
UPDATE auth SET password=HASH WHERE email=admin@example.com;
-- sqlite ์ข ๋ฃ: [Ctrl + d]
-
๋ชจ๋ ๋ฐ์ดํฐ ์ด๊ธฐํโ
Open WebUI๋ฅผ ์์ ํ ์ด๊ธฐํํ๊ณ ์ฌ์ฉ์ ๋ฐ์ดํฐ, ์ค์ , ๋น๋ฐ๋ฒํธ๋ฅผ ํฌํจํ์ฌ ๋ชจ๋ ๋ฐ์ดํฐ๋ฅผ ์ญ์ ํ๋ ค๋ฉด webui.db
ํ์ผ์ ์ ๊ฑฐํ๋ ๋จ๊ณ๋ฅผ ๋ฐ๋ฅด์ธ์.
๋จ๊ณ 1: Python ํ๊ฒฝ์์ webui.db
์ฐพ๊ธฐโ
ํนํ ๊ฐ์ ํ๊ฒฝ์ ์ฌ์ฉํ๋ ๊ฒฝ์ฐ webui.db
๊ฐ ์ด๋์ ์ ์ฅ๋์ด ์๋์ง ์ ๋ชจ๋ฅผ ๊ฒฝ์ฐ, ๋ค์ ๋จ๊ณ๋ฅผ ๋ฐ๋ผ ์ฐพ์ ์ ์์ต๋๋ค:
-
๊ฐ์ ํ๊ฒฝ์ ํ์ฑํํฉ๋๋ค(์ ์ฉ๋๋ ๊ฒฝ์ฐ).
-
Python ์ ธ์ ์ฝ๋๋ค: python
-
Python ์ ธ ๋ด๋ถ์์ ๋ค์ ์ฝ๋๋ฅผ ์คํํฉ๋๋ค:
import os
import open_webui
# Open WebUI ํจํค์ง๊ฐ ์ค์น๋ ์์น๋ฅผ ํ์
print("Open WebUI๊ฐ ์ค์น๋ ์์น:", open_webui.__file__)
# `webui.db`์ ์ ์ฌ์ ๊ฒฝ๋ก ๊ตฌ์ฑ(`data/webui.db`์ ์ผ๋ฐ์ ์ผ๋ก ์์นํจ)
db_path = os.path.join(os.path.dirname(open_webui.__file__), "data", "webui.db")
print("webui.db์ ์ ์ฌ์ ๊ฒฝ๋ก:", db_path)
# ํด๋น ๊ฒฝ๋ก์ `webui.db`๊ฐ ์๋์ง ํ์ธ
if os.path.exists(db_path):
print("webui.db ๋ฐ๊ฒฌ๋จ:", db_path)
else:
print("webui.db ๋ฐ๊ฒฌ๋์ง ์์:", db_path)
- ์ถ๋ ฅ ํ์ธ:
- ํ์ผ์ด ๋ฐ๊ฒฌ๋๋ฉด ์ ํํ ๊ฒฝ๋ก๋ฅผ ํ์ธํ ์ ์์ต๋๋ค.
- ๋ฐ๊ฒฌ๋์ง ์์ผ๋ฉด, Linux์์
find
๋ฅผ ์ฌ์ฉํ๊ฑฐ๋ Windows/Mac์์ ์ ์ญ ํ์ผ ๊ฒ์์ ์ํํด์ผ ํ ์ ์์ต๋๋ค.
๋จ๊ณ 2: webui.db
์ญ์ โ
ํ์ผ์ ์ฐพ์ ํ, ๋ค์๊ณผ ์ ์ฌํ ๋ช ๋ น์ ์ฌ์ฉํ์ฌ ์ญ์ ํฉ๋๋ค:
rm -rf /path/to/your/python/environment/lib/pythonX.X/site-packages/open_webui/data/webui.db
๊ฒฝ๊ณ : webui.db
๋ฅผ ์ญ์ ํ๋ฉด ์ฌ์ฉ์ ๊ณ์ , ์ค์ ๋ฐ ๋น๋ฐ๋ฒํธ๋ฅผ ํฌํจํ ์ ์ฅ๋ ๋ฐ์ดํฐ๊ฐ ๋ชจ๋ ์ ๊ฑฐ๋ฉ๋๋ค. ์๋ก ์์ํ๋ ค๋ ๊ฒฝ์ฐ์๋ง ์ด ์์
์ ์ํํ์ธ์!