์ด ํํ ๋ฆฌ์ผ์ ์ปค๋ฎค๋ํฐ ๊ธฐ์ฌ๋ก ์์ฑ๋์์ผ๋ฉฐ Open WebUI ํ์์ ์ง์ํ์ง ์์ต๋๋ค. ์ด๋ ํน์ ์ฌ์ฉ ์ฌ๋ก์ ๋ง์ถฐ Open WebUI๋ฅผ ์ฌ์ฉ์ ์ง์ ํ๋ ๋ฐฉ๋ฒ์ ๋ณด์ฌ์ฃผ๋ ๋ฐ ๋ชฉ์ ์ด ์์ต๋๋ค. ๊ธฐ์ฌํ๊ณ ์ถ์ผ์ ๊ฐ์? ๊ธฐ์ฌ ํํ ๋ฆฌ์ผ์ ํ์ธํ์ธ์.
๐ชฃ S3 Storage๋ก ์ ํํ๊ธฐ
์ด ๊ฐ์ด๋์์๋ Open WebUI ๊ตฌ์ฑ์ ๊ธฐ๋ณธ local
์ ์ฅ์๋ฅผ Amazon S3๋ก ์ ํํ๋ ๋ฐฉ๋ฒ์ ๋ํด ์ค๋ช
ํฉ๋๋ค.
์ฌ์ ์๊ตฌ ์ฌํญโ
์ด ํํ ๋ฆฌ์ผ์ ๋ฐ๋ผํ๋ ค๋ฉด ๋ค์์ด ํ์ํฉ๋๋ค:
- ํ์ฑ AWS ๊ณ์
- ํ์ฑ AWS ์ก์ธ์ค ํค์ ๋น๋ฐ ํค
- AWS IAM ๊ถํ (S3์์ ๊ฐ์ฒด ์์ฑ ๋ฐ ๋ฐฐ์น)
- ์์คํ ์ Docker ์ค์น
Amazon S3๋?โ
AWS ์น์ฌ์ดํธ์์ ์ง์ ์ ๊ณตํ ์ ๋ณด:
"Amazon S3๋ ์ ๊ณ ์ต๊ณ ์ ํ์ฅ์ฑ, ๋ฐ์ดํฐ ๊ฐ์ฉ์ฑ, ๋ณด์, ์ฑ๋ฅ์ ์ ๊ณตํ๋ ๊ฐ์ฒด ์ ์ฅ์ ์๋น์ค์ ๋๋ค. ๋ฐ์ดํฐ ๋ ์ดํฌ, ์น์ฌ์ดํธ, ํด๋ผ์ฐ๋ ๋ค์ดํฐ๋ธ ์ ํ๋ฆฌ์ผ์ด์ , ๋ฐฑ์ , ์์นด์ด๋ธ, ๋จธ์ ๋ฌ๋, ๋ถ์ ๋ฑ ๋ค์ํ ์ฌ์ฉ ์ฌ๋ก๋ฅผ ์ํด ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ๊ณ ๋ณดํธํ์ธ์. Amazon S3๋ 99.999999999% (11 9's)์ ๋ด๊ตฌ์ฑ์ ์ ๊ณตํ๋ฉฐ, ์ ์ธ๊ณ ์๋ฐฑ๋ง ๊ณ ๊ฐ์ ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํฉ๋๋ค."
S3์ ๋ํด ์์ธํ ์์๋ณด๋ ค๋ฉด: Amazon S3 ๊ณต์ ํ์ด์ง
์ค์ ๋ฐฉ๋ฒ
1. ํ์ํ ํ๊ฒฝ ๋ณ์โ
์ด ์ต์ ์ ๊ตฌ์ฑํ๋ ค๋ฉด ๋ค์ ํ๊ฒฝ ๋ณ์๋ฅผ ์์งํด์ผ ํฉ๋๋ค:
Open-WebUI ํ๊ฒฝ ๋ณ์ | ์์ ๊ฐ |
---|---|
S3_ACCESS_KEY_ID | ABC123 |
S3_SECRET_ACCESS_KEY | SuperSecret |
S3_ENDPOINT_URL | https://s3.us-east-1.amazonaws.com |
S3_REGION_NAME | us-east-1 |
S3_BUCKET_NAME | my-awesome-bucket-name |
- S3_ACCESS_KEY_ID: AWS ๊ณ์ ์ ์ก์ธ์ค ํค ์๋ณ์์ ๋๋ค. ์ก์ธ์ค ํค ์์ฑ ์ AWS ๊ด๋ฆฌ ์ฝ์ ๋๋ AWS CLI์์ ๋ฐ์ต๋๋ค.
- S3_SECRET_ACCESS_KEY: AWS ์ก์ธ์ค ํค ์์ ๋น๋ฐ ํค์ ๋๋ค. AWS์์ ์ก์ธ์ค ํค๋ฅผ ์์ฑํ ๋ ์ ๊ณต๋๋ฉฐ ์์ ํ๊ฒ ๋ณด๊ดํด์ผ ํฉ๋๋ค.
- S3_ENDPOINT_URL: S3 ์๋น์ค ์๋ํฌ์ธํธ๋ฅผ ๊ฐ๋ฆฌํค๋ URL๋ก AWS ์๋น์ค ๋ฌธ์ ๋๋ ๊ณ์ ์ค์ ์์ ์ฐพ์ ์ ์์ต๋๋ค.
- S3_REGION_NAME: S3 ๋ฒํท์ด ์์นํ AWS ์ง์ญ์ผ๋ก, ์: "us-east-1"์ ๋๋ค. ์ด๋ AWS ๊ด๋ฆฌ ์ฝ์์์ S3 ๋ฒํท ์ธ๋ถ ์ ๋ณด์์ ํ์ธ ๊ฐ๋ฅํฉ๋๋ค.
- S3_BUCKET_NAME: AWS์์ ๋ฒํท์ ์์ฑํ ๋ ์ง์ ํ ๊ณ ์ ํ S3 ๋ฒํท ์ด๋ฆ์ ๋๋ค.
์ฌ์ฉ ๊ฐ๋ฅํ S3 ์๋ํฌ์ธํธ URL์ ์ ์ฒด ๋ชฉ๋ก์ ์ฌ๊ธฐ์์ ํ์ธํ์ธ์: Amazon S3 Regular Endpoints
๋ชจ๋ ํด๋ผ์ฐ๋ ์ ์ฅ์
๊ตฌ์ฑ ์ต์
์ ํ์ธํ์ธ์: Open-WebUI Cloud Storage Config
2. Open-WebUI ์คํํ๊ธฐโ
Open-WebUI ์ธ์คํด์ค ๋ฅผ ์คํํ๊ธฐ ์ ์ STORAGE_PROVIDER
๋ผ๋ ๋ง์ง๋ง ํ๊ฒฝ ๋ณ์๋ฅผ ์ค์ ํด์ผ ํฉ๋๋ค. ์ด ๋ณ์๋ Open-WebUI์๊ฒ ์ฌ์ฉํ ๊ณต๊ธ์๋ฅผ ์๋ ค์ค๋๋ค. ๊ธฐ๋ณธ์ ์ผ๋ก STORAGE_PROVIDER
๋ ๋น์ด์์ด Open-WebUI๊ฐ ๋ก์ปฌ ์ ์ฅ์๋ฅผ ์ฌ์ฉํฉ๋๋ค.
์ ์ฅ์ ๊ณต๊ธ์ | ์ ํ | ์ค๋ช | ๊ธฐ๋ณธ๊ฐ |
---|---|---|---|
local | str | ๋น ๋ฌธ์์ด (' ' )์ด ์ ๊ณต๋ ๊ฒฝ์ฐ ๊ธฐ๋ณธ์ ์ผ๋ก ๋ก์ปฌ ์ ์ฅ์๋ฅผ ์ฌ์ฉํฉ๋๋ค | ์ |
s3 | str | Amazon S3 ์ ์ฅ์์์ ์ธ๊ธ๋ ๊ด๋ จ ํ๊ฒฝ ๋ณ์์ S3 ํด๋ผ์ด์ธํธ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ฌ์ฉํฉ๋๋ค | ์๋์ |
gcs | str | Google Cloud Storage์์ ์ธ๊ธ๋ ๊ด๋ จ ํ๊ฒฝ ๋ณ์์ GCS ํด๋ผ์ด์ธํธ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ฌ์ฉํฉ๋๋ค | ์๋์ |
Amazon S3๋ฅผ ์ฌ์ฉํ๋ ค๋ฉด STORAGE_PROVIDER
๋ฅผ "S3"๋ก ์ค์ ํด์ผ ํ๋ฉฐ 1๋จ๊ณ์์ ์์งํ ๋ชจ๋ ํ๊ฒฝ ๋ณ์(S3_ACCESS_KEY_ID
, S3_SECRET_ACCESS_KEY
, S3_ENDPOINT_URL
, S3_REGION_NAME
, S3_BUCKET_NAME
)๋ฅผ ์ค์ ํด์ผ ํฉ๋๋ค.
์ฌ๊ธฐ์๋ ENV
๋ฅผ "dev"๋ก ์ค์ ํ์ฌ Open-WebUI Swagger ๋ฌธ์๋ฅผ ํ์ธํ๊ณ S3 ์ ์ฅ์ ์ค์ ์ด ์์๋๋ก ์๋ํ๋์ง ํ
์คํธํ ์ ์๋๋ก ํฉ๋๋ค.
docker run -d \
-p 3000:8080 \
-v open-webui:/app/backend/data \
-e STORAGE_PROVIDER="s3" \
-e S3_ACCESS_KEY_ID="ABC123" \
-e S3_SECRET_ACCESS_KEY="SuperSecret" \
-e S3_ENDPOINT_URL="https://s3.us-east-1.amazonaws.com" \
-e S3_REGION_NAME="us-east-1" \
-e S3_BUCKET_NAME="my-awesome-bucket-name" \
-e ENV="dev" \
--name open-webui \
ghcr.io/open-webui/open-webui:main
3. ์ค์ ํ ์คํธํ๊ธฐโ
Open-WebUI๊ฐ ์คํ๋๊ณ ์๋ ์ํ์์ ๊ฐ๋จํ Hello, World
ํ
์คํธ ํ์ผ์ ์
๋ก๋ํ์ฌ ์ค์ ์ ํ
์คํธํด๋ด
์๋ค.
์ ํํ LLM์ผ๋ก๋ถํฐ ์๋ต์ ๋ฐ๋์ง ํ์ธํด ๋ด ์๋ค.
์ข์์! ๋ชจ๋ ๊ฒ์ด Open-WebUI์์ ์์๋๋ก ์๋ํ๋ ๊ฒ์ฒ๋ผ ๋ณด์
๋๋ค. ์ด์ ํด๋น ํ
์คํธ ํ์ผ์ด ์ค์ ๋ก ์
๋ก๋๋์๊ณ ์ง์ ํ S3 ๋ฒํท์ ์ ์ฅ๋์๋์ง ํ์ธํด๋ด
์๋ค. AWS Management Console์ ์ฌ์ฉํ๋ฉด S3 ๋ฒํท์ ํ์ผ์ด ์๋ ๊ฒ์ ๋ณผ ์ ์์ต๋๋ค. ์ฐ๋ฆฌ๊ฐ ์
๋ก๋ํ ํ์ผ ์ด๋ฆ(hello.txt
) ์ธ์๋ ๊ฐ์ฒด ์ด๋ฆ์ ๊ณ ์ ID๊ฐ ์ถ๊ฐ๋ ๊ฒ์ ๋ณผ ์ ์์ต๋๋ค. ์ด๋ Open-WebUI๊ฐ ์
๋ก๋๋ ๋ชจ๋ ํ์ผ์ ์ถ์ ํ๋ ๋ฐฉ์์
๋๋ค.
Open-WebUI์ swagger ๋ฌธ์๋ฅผ ์ฌ์ฉํ์ฌ /api/v1/files/{id}
์๋ํฌ์ธํธ์ ๊ณ ์ ID (4405fabb-603e-4919-972b-2b39d6ad7f5b)๋ฅผ ์ ๋ฌํ์ฌ ์ด ํ์ผ๊ณผ ๊ด๋ จ๋ ๋ชจ๋ ์ ๋ณด๋ฅผ ์ป์ ์ ์์ต๋๋ค.