๋ณธ๋ฌธ์œผ๋กœ ๊ฑด๋„ˆ๋›ฐ๊ธฐ

๐Ÿค ๊ธฐ์—ฌํ•˜๊ธฐ

Sponsored by n8n
n8n
Does your interface have a backend yet? Try n8n

๐Ÿš€ ํ™˜์˜ํ•ฉ๋‹ˆ๋‹ค, ๊ธฐ์—ฌ์ž๋‹˜! ๐Ÿš€

Open WebUI์— ๊ธฐ์—ฌํ•˜๋ ค๋Š” ๊ท€ํ•˜์˜ ๊ด€์‹ฌ์— ๊นŠ์ด ๊ฐ์‚ฌ๋“œ๋ฆฝ๋‹ˆ๋‹ค. ์ด ๋ฌธ์„œ๋Š” ๊ธฐ์—ฌ ์ ˆ์ฐจ๋ฅผ ์•ˆ๋‚ดํ•˜๋ฉฐ, ๊ท€ํ•˜์˜ ๊ธฐ์—ฌ๊ฐ€ ํ”„๋กœ์ ํŠธ๋ฅผ ํšจ๊ณผ์ ์œผ๋กœ ๊ฐœ์„ ํ•˜๋„๋ก ๋•์Šต๋‹ˆ๋‹ค. ํ•จ๊ป˜ Open WebUI๋ฅผ ๋”์šฑ ๋ฉ‹์ง€๊ฒŒ ๋งŒ๋“ค์–ด๋ด…์‹œ๋‹ค!

๐Ÿ’ก ๊ธฐ์—ฌํ•˜๊ธฐโ€‹

๊ธฐ์—ฌํ•  ์˜ํ–ฅ์ด ์žˆ์œผ์‹ ๊ฐ€์š”? ์ข‹์€ ์ƒ๊ฐ์ž…๋‹ˆ๋‹ค! ๋‹ค์Œ ๋ฐฉ๋ฒ•์œผ๋กœ ๋„์›€์„ ์ค„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค:

๐ŸŒŸ ์ฝ”๋“œ ๊ธฐ์—ฌ ๊ฐ€์ด๋“œ๋ผ์ธโ€‹

์ €ํฌ๋Š” ํ’€ ์š”์ฒญ์„ ํ™˜์˜ํ•ฉ๋‹ˆ๋‹ค. ์ œ์ถœ ์ „์— ๋‹ค์Œ์„ ์ค€์ˆ˜ํ•ด์ฃผ์„ธ์š”:

  1. ์—ฌ๊ธฐ์—์„œ ์•„์ด๋””์–ด์— ๋Œ€ํ•œ ๋…ผ์˜๋ฅผ ์‹œ์ž‘ํ•˜์„ธ์š”.
  2. ํ”„๋กœ์ ํŠธ์˜ ์ฝ”๋”ฉ ํ‘œ์ค€์„ ์ค€์ˆ˜ํ•˜๊ณ  ์ƒˆ๋กœ์šด ๊ธฐ๋Šฅ์— ๋Œ€ํ•œ ํ…Œ์ŠคํŠธ๋ฅผ ํฌํ•จํ•˜์„ธ์š”.
  3. ํ•„์š”์— ๋”ฐ๋ผ ๋ฌธ์„œ๋ฅผ ์—…๋ฐ์ดํŠธํ•˜์„ธ์š”.
  4. ๋ช…ํ™•ํ•˜๊ณ  ์„ค๋ช…์ ์ธ ์ปค๋ฐ‹ ๋ฉ”์‹œ์ง€๋ฅผ ์ž‘์„ฑํ•˜์„ธ์š”.

๐Ÿ›  ์ฝ”๋“œ PR ๋ฒ ์ŠคํŠธ ํ”„๋ž™ํ‹ฐ์Šค:โ€‹

  1. ์›์ž์  PR: PR์€ ์ž‘๊ณ  ์ง‘์ค‘์ ์ด๋ฉฐ ํ•˜๋‚˜์˜ ๋ชฉํ‘œ ๋˜๋Š” ์ž‘์—…์—๋งŒ ์ง‘์ค‘๋˜์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์ด๋Š” ์ฝ”๋“œ ๋ฆฌ๋ทฐ๋ฅผ ์‰ฝ๊ฒŒ ํ•˜๊ณ  ๊ด€๋ จ๋˜์ง€ ์•Š์€ ๋ฌธ์ œ๋ฅผ ๋„์ž…ํ•  ๊ฐ€๋Šฅ์„ฑ์„ ์ค„์—ฌ์ค๋‹ˆ๋‹ค. ๋ณ€๊ฒฝ ๋ฒ”์œ„๊ฐ€ ๋„ˆ๋ฌด ์ปค์ง€๋ฉด ๋…ผ๋ฆฌ์ ์œผ๋กœ ๋…๋ฆฝ์ ์ธ ์ž‘์€ PR๋กœ ๋ถ„๋ฆฌํ•˜๋Š” ๊ฒƒ์„ ๊ณ ๋ คํ•˜์„ธ์š”.
  2. ๊ธฐ์กด ์ฝ”๋“œ ๊ทœ์น™ ์ค€์ˆ˜: ์ฝ”๋“œ๊ฐ€ ํ”„๋กœ์ ํŠธ์˜ ๊ธฐ์กด ์ฝ”๋”ฉ ํ‘œ์ค€ ๋ฐ ๊ด€ํ–‰๊ณผ ์ผ์น˜ํ•˜๋„๋ก ํ•˜์„ธ์š”.
  3. ์ถ”๊ฐ€ ์™ธ๋ถ€ ์ข…์†์„ฑ ํ”ผํ•˜๊ธฐ: ์‚ฌ์ „ ๋…ผ์˜ ์—†์ด ์ถ”๊ฐ€ ์™ธ๋ถ€ ์ข…์†์„ฑ์„ ํฌํ•จํ•˜์ง€ ๋งˆ์„ธ์š”.
  4. ํ”„๋ ˆ์ž„์›Œํฌ ๋น„์ข…์†์  ์ ‘๊ทผ: ์ €ํฌ๋Š” ํ”„๋ ˆ์ž„์›Œํฌ์— ์ข…์†๋˜์ง€ ์•Š๋„๋ก ๋…ธ๋ ฅํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ๊ฐ€๋Šฅํ•œ ํ•œ ์™ธ๋ถ€ ํ”„๋ ˆ์ž„์›Œํฌ๋‚˜ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์‚ฌ์šฉํ•˜๊ธฐ๋ณด๋‹ค๋Š” ์Šค์Šค๋กœ ๊ธฐ๋Šฅ์„ ๊ตฌํ˜„ํ•˜์„ธ์š”. ์ด ์ ‘๊ทผ ๋ฐฉ์‹์— ๋Œ€ํ•ด ์˜๋ฌธ์ด๋‚˜ ์ œ์•ˆ์ด ์žˆ๋‹ค๋ฉด ๋…ผ์˜ํ•ด ์ฃผ์„ธ์š”.

๊ธฐ์—ฌํ•ด ์ฃผ์…”์„œ ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค! ๐Ÿš€

๐Ÿ“š ๋ฌธ์„œํ™” ๋ฐ ํŠœํ† ๋ฆฌ์–ผโ€‹

Open WebUI๋ฅผ ๋” ์‰ฝ๊ฒŒ ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ๋„๋ก ๋ฌธ์„œ๋ฅผ ๊ฐœ์„ ํ•˜๊ฑฐ๋‚˜, ํŠœํ† ๋ฆฌ์–ผ ์ž‘์„ฑ, ์„ค์ • ๋ฐ ์›น UI ์ตœ์ ํ™” ์•ˆ๋‚ด๋ฅผ ์ž‘์„ฑํ•˜๋Š” ๋ฐ ๋„์›€์„ ์ฃผ์„ธ์š”.

๐ŸŒ ๋ฒˆ์—ญ ๋ฐ ๊ตญ์ œํ™”โ€‹

Open WebUI๋ฅผ ๋” ๋„“์€ ์ฒญ์ค‘์—๊ฒŒ ๊ณต๊ฐœํ•˜๋Š” ๊ฒƒ์„ ๋•๋Š” ๋ฐ ๊ธฐ์—ฌํ•˜์„ธ์š”. ์ด ์„น์…˜์—์„œ๋Š” ํ”„๋กœ์ ํŠธ์— ์ƒˆ๋กœ์šด ๋ฒˆ์—ญ์„ ์ถ”๊ฐ€ํ•˜๋Š” ๊ณผ์ •์„ ์•ˆ๋‚ดํ•ฉ๋‹ˆ๋‹ค.

์ €ํฌ๋Š” JSON ํŒŒ์ผ์„ ์‚ฌ์šฉํ•˜์—ฌ ๋ฒˆ์—ญ์„ ์ €์žฅํ•ฉ๋‹ˆ๋‹ค. ๊ธฐ์กด ๋ฒˆ์—ญ ํŒŒ์ผ์€ src/lib/i18n/locales ๋””๋ ‰ํ† ๋ฆฌ์—์„œ ์ฐพ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ฐ ๋””๋ ‰ํ† ๋ฆฌ๋Š” ํŠน์ • ์–ธ์–ด๋ฅผ ๋‚˜ํƒ€๋‚ด๋ฉฐ, ์˜ˆ๋ฅผ ๋“ค์–ด en-US๋Š” ์˜์–ด(๋ฏธ๊ตญ), fr-FR๋Š” ํ”„๋ž‘์Šค์–ด(ํ”„๋ž‘์Šค) ๋“ฑ์ž…๋‹ˆ๋‹ค. ํŠน์ • ์–ธ์–ด์— ๋Œ€ํ•œ ์ ์ ˆํ•œ ์ฝ”๋“œ๋ฅผ ์ฐพ์œผ๋ ค๋ฉด ISO 639 ์–ธ์–ด ์ฝ”๋“œ๋ฅผ ์ฐธ์กฐํ•˜์„ธ์š”.

์ƒˆ๋กœ์šด ์–ธ์–ด๋ฅผ ์ถ”๊ฐ€ํ•˜๋ ค๋ฉด:

  • ์ ์ ˆํ•œ ์–ธ์–ด ์ฝ”๋“œ๋ฅผ ์ด๋ฆ„์œผ๋กœ ์‚ฌ์šฉํ•˜์—ฌ src/lib/i18n/locales ๊ฒฝ๋กœ์— ์ƒˆ ๋””๋ ‰ํ† ๋ฆฌ๋ฅผ ๋งŒ๋“œ์„ธ์š”. ์˜ˆ๋ฅผ ๋“ค์–ด, ์ŠคํŽ˜์ธ์–ด(์ŠคํŽ˜์ธ) ๋ฒˆ์—ญ์„ ์ถ”๊ฐ€ํ•˜๋ ค๋ฉด es-ES๋ผ๋Š” ์ƒˆ ๋””๋ ‰ํ† ๋ฆฌ๋ฅผ ๋งŒ๋“œ์„ธ์š”.
  • ๋ฏธ๊ตญ ์˜์–ด ๋ฒˆ์—ญ ํŒŒ์ผ(๋“ค)์„(src/lib/i18n/locale์˜ en-US ๋””๋ ‰ํ† ๋ฆฌ์—์„œ) ์ƒˆ ๋””๋ ‰ํ† ๋ฆฌ์— ๋ณต์‚ฌํ•˜๊ณ  JSON ํ˜•์‹์œผ๋กœ ์–ธ์–ด์— ๋งž๊ฒŒ ๋ฌธ์ž์—ด ๊ฐ’์„ ์—…๋ฐ์ดํŠธํ•˜์„ธ์š”. JSON ๊ฐ์ฒด์˜ ๊ตฌ์กฐ๋ฅผ ๋ฐ˜๋“œ์‹œ ์œ ์ง€ํ•˜์„ธ์š”.
  • ์–ธ์–ด ํŒŒ์ผ src/lib/i18n/locales/languages.json์— ์–ธ์–ด ์ฝ”๋“œ์™€ ํ•ด๋‹น ํƒ€์ดํ‹€์„ ์ถ”๊ฐ€ํ•˜์„ธ์š”.

๐Ÿค” ์งˆ๋ฌธ ๋ฐ ํ”ผ๋“œ๋ฐฑโ€‹

์งˆ๋ฌธ์ด๋‚˜ ํ”ผ๋“œ๋ฐฑ์ด ์žˆ๋‚˜์š”? Discord ์ปค๋ฎค๋‹ˆํ‹ฐ์— ์ฐธ์—ฌํ•˜๊ฑฐ๋‚˜ ์ƒˆ๋กœ์šด ์ด์Šˆ๋ฅผ ์—ด์–ด์ฃผ์„ธ์š”. ์ €ํฌ๋Š” ๋„์šธ ์ค€๋น„๊ฐ€ ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค!

๐Ÿšจ ๋ฌธ์ œ ๋ณด๊ณ โ€‹

๋ฌด์–ธ๊ฐ€ ์ด์ƒ์„ ๋ฐœ๊ฒฌํ–ˆ๋‚˜์š”? ์•„์ด๋””์–ด๊ฐ€ ์žˆ๋‚˜์š”? ์ด์Šˆ ํƒญ์„ ํ™•์ธํ•˜์—ฌ ์ด๋ฏธ ๋ณด๊ณ ๋˜๊ฑฐ๋‚˜ ์ œ์•ˆ๋˜์—ˆ๋Š”์ง€ ํ™•์ธํ•˜์„ธ์š”. ๊ทธ๋ ‡์ง€ ์•Š๋‹ค๋ฉด ์ƒˆ๋กœ์šด ์ด์Šˆ๋ฅผ ์—ด์–ด์ฃผ์„ธ์š”. ๋ฌธ์ œ๋ฅผ ๋ณด๊ณ ํ•  ๋•Œ, ์ œ๊ณต๋œ ์ด์Šˆ ํ…œํ”Œ๋ฆฟ์„ ๋”ฐ๋ผ์ฃผ์„ธ์š”. ํ…œํ”Œ๋ฆฟ์€ ์ฒ˜์Œ๋ถ€ํ„ฐ ํ•„์š”ํ•œ ์„ธ๋ถ€ ์ •๋ณด๋ฅผ ๋ชจ๋‘ ์ œ๊ณตํ•˜๋„๋ก ๋˜์–ด ์žˆ์–ด, ์šฐ๋ ค ์‚ฌํ•ญ์„ ๋ณด๋‹ค ํšจ์œจ์ ์œผ๋กœ ํ•ด๊ฒฐํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•ฉ๋‹ˆ๋‹ค.

important
  • ํ…œํ”Œ๋ฆฟ ์ค€์ˆ˜: ์ œ๊ณต๋œ ์ด์Šˆ ํ…œํ”Œ๋ฆฟ์„ ๋”ฐ๋ฅด์ง€ ์•Š๊ฑฐ๋‚˜ ์š”์ฒญ๋œ ์ •๋ณด๋ฅผ ์ œ๊ณตํ•˜์ง€ ์•Š๋Š” ๊ฒฝ์šฐ, ์ถ”๊ฐ€ ๊ณ ๋ ค ์—†์ด ์ด์Šˆ๊ฐ€ ์ข…๋ฃŒ๋  ๊ฐ€๋Šฅ์„ฑ์ด ๋†’์Šต๋‹ˆ๋‹ค. ์ด๋Š” ์ด์Šˆ ์ถ”์ ์˜ ๊ด€๋ฆฌ ๊ฐ€๋Šฅ์„ฑ ๋ฐ ๋ฌด๊ฒฐ์„ฑ์„ ์œ ์ง€ํ•˜๋Š” ๋ฐ ์ค‘์š”ํ•œ ์ ‘๊ทผ ๋ฐฉ์‹์ž…๋‹ˆ๋‹ค.

  • ์„ธ๋ถ€ ์ •๋ณด์˜ ์ค‘์š”์„ฑ: ๋ฌธ์ œ๋ฅผ ์ดํ•ดํ•˜๊ณ  ํšจ๊ณผ์ ์œผ๋กœ ํ•ด๊ฒฐํ•  ์ˆ˜ ์žˆ๋„๋ก ์ƒ์„ธํ•œ ์ •๋ณด๋ฅผ ํฌํ•จํ•˜๋Š” ๊ฒƒ์ด ์ค‘์š”ํ•ฉ๋‹ˆ๋‹ค. ์„ค๋ช…์€ ๋ช…ํ™•ํ•ด์•ผ ํ•˜๋ฉฐ, ์žฌํ˜„ ๋‹จ๊ณ„, ์˜ˆ์ƒ ๊ฒฐ๊ณผ, ์‹ค์ œ ๊ฒฐ๊ณผ๋ฅผ ํฌํ•จํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์ถฉ๋ถ„ํ•œ ์„ธ๋ถ€ ์ •๋ณด๊ฐ€ ๋ถ€์กฑํ•˜๋ฉด ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ ์–ด๋ ค์šธ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๐Ÿงญ ์ง€์› ๋ฒ”์œ„โ€‹

Open WebUI์™€ ์ง์ ‘์ ์œผ๋กœ ๊ด€๋ จ๋˜์ง€ ์•Š๊ณ  ์ฃผ๋กœ ์‹คํ–‰ ํ™˜๊ฒฝ(ํŠนํžˆ Docker ์„ค์ •)๊ณผ ๊ด€๋ จ๋œ ๋ฌธ์ œ๋“ค์ด ์ฆ๊ฐ€ํ•˜๊ณ  ์žˆ์Œ์„ ์•Œ๊ฒŒ ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. Docker ๋ฐฐํฌ๋ฅผ ์ง€์›ํ•˜๊ธฐ ์œ„ํ•ด ๋…ธ๋ ฅํ•˜์ง€๋งŒ, Docker ๊ธฐ๋ณธ ์‚ฌํ•ญ์„ ์ดํ•ดํ•˜๋Š” ๊ฒƒ์ด ์›ํ™œํ•œ ํ™˜๊ฒฝ์„ ์œ„ํ•ด ์ค‘์š”ํ•ฉ๋‹ˆ๋‹ค.

  • Docker ๋ฐฐํฌ ์ง€์›: Open WebUI๋Š” Docker ๋ฐฐํฌ๋ฅผ ์ง€์›ํ•ฉ๋‹ˆ๋‹ค. Docker ๊ธฐ๋ณธ ์‚ฌํ•ญ์— ๋Œ€ํ•œ ์ง€์‹์„ ์ „์ œ๋กœ ํ•ฉ๋‹ˆ๋‹ค. Docker ๊ธฐ๋ณธ ์‚ฌํ•ญ์€ Docker ๊ณต์‹ ๋ฌธ์„œ๋ฅผ ์ฐธ์กฐํ•˜์„ธ์š”.

  • ๊ณ ๊ธ‰ ์„ค์ •: HTTPS๋ฅผ ์œ„ํ•œ ๋ฆฌ๋ฒ„์Šค ํ”„๋ก์‹œ ์„ค์ • ๋ฐ Docker ๋ฐฐํฌ ๊ด€๋ฆฌ๋Š” ๊ธฐ๋ณธ์ ์ธ ์ง€์‹์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ๊ธฐ์ˆ ์„ ๋ฐฐ์šฐ๊ธฐ ์œ„ํ•œ ์˜จ๋ผ์ธ ์ž์›์ด ๋งŽ์ด ์ œ๊ณต๋˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ์ด ์ง€์‹์„ ์Šต๋“ํ•˜๋ฉด Open WebUI ๋ฐ ์œ ์‚ฌ ํ”„๋กœ์ ํŠธ์—์„œ์˜ ๊ฒฝํ—˜์„ ํฌ๊ฒŒ ํ–ฅ์ƒ์‹œํ‚ฌ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๐Ÿ™ ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค!โ€‹

์—ฌ๋Ÿฌ๋ถ„์˜ ํฌ๊ณ  ์ž‘์€ ๊ธฐ์—ฌ๋Š” Open WebUI์— ํฐ ์˜ํ–ฅ์„ ๋ฏธ์นฉ๋‹ˆ๋‹ค. ์—ฌ๋Ÿฌ๋ถ„์ด ํ”„๋กœ์ ํŠธ์— ๊ฐ€์ ธ์˜ฌ ๊ธฐ์—ฌ๋ฅผ ๊ธฐ๋Œ€ํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค!

ํ•จ๊ป˜ ๋”์šฑ ๊ฐ•๋ ฅํ•œ ์ปค๋ฎค๋‹ˆํ‹ฐ ๋„๊ตฌ๋ฅผ ๋งŒ๋“ค์–ด ๋ด…์‹œ๋‹ค. ๐ŸŒŸ