Communitygithub.com

Mininglamp-OSS/octo-server

๐Ÿ™ ์ธ๊ณต์ง€๋Šฅ ์—์ด์ „ํŠธ์™€ ์ธ๊ฐ„์„ ์œ„ํ•œ ๊ฐœ๋ฐฉํ˜• ์ž‘์—… ๊ณต๊ฐ„ OCTO๋ฅผ ๊ตฌ๋™ํ•˜๋Š” Go ๋ฐฑ์—”๋“œ์ž…๋‹ˆ๋‹ค. REST ๋ฐ WebSocket API, Lobster(์ธ๊ณต์ง€๋Šฅ ์—์ด์ „ํŠธ) ์˜ค์ผ€์ŠคํŠธ๋ ˆ์ด์…˜, WuKongIM ์‹ค์‹œ๊ฐ„ ๋ฉ”์‹œ์ง• ์ œ์–ด ํ‰๋ฉด์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.

octo-server๋ž€ ๋ฌด์—‡์ธ๊ฐ€์š”?

Mininglamp-OSS/octo-server๋Š” OCTO(Open Collaborative and Transformative Office)๋ผ๋Š” ๊ฐœ๋ฐฉํ˜• ์ž‘์—… ๊ณต๊ฐ„์˜ ๋ฐฑ์—”๋“œ ์—ญํ• ์„ ํ•˜๋Š” Go ์–ธ์–ด ๊ธฐ๋ฐ˜ ์„œ๋ฒ„์ž…๋‹ˆ๋‹ค. ์ด ํ”„๋กœ์ ํŠธ์˜ ์ฃผ์š” ๋ชฉํ‘œ๋Š” ์ธ๊ฐ„๊ณผ ์ธ๊ณต์ง€๋Šฅ ์—์ด์ „ํŠธ๊ฐ€ ํ˜‘์—…ํ•  ์ˆ˜ ์žˆ๋Š” ํ™˜๊ฒฝ์„ ์ œ๊ณตํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. octo-server๋Š” REST ๋ฐ WebSocket API๋ฅผ ํ†ตํ•ด ์‚ฌ์šฉ์ž์™€ ์—์ด์ „ํŠธ ๊ฐ„์˜ ํ†ต์‹ ์„ ์ง€์›ํ•˜๋ฉฐ, 'Lobster'๋ผ๋Š” ์ด๋ฆ„์˜ ์ธ๊ณต์ง€๋Šฅ ์—์ด์ „ํŠธ ์˜ค์ผ€์ŠคํŠธ๋ ˆ์ด์…˜ ์‹œ์Šคํ…œ์„ ํฌํ•จํ•˜์—ฌ ์—ฌ๋Ÿฌ ์—์ด์ „ํŠธ๋ฅผ ์กฐ์œจํ•˜๊ณ  ์ž‘์—…์„ ๋ถ„๋ฐฐํ•ฉ๋‹ˆ๋‹ค. ๋˜ํ•œ WuKongIM ์‹ค์‹œ๊ฐ„ ๋ฉ”์‹œ์ง• ์‹œ์Šคํ…œ์„ ์ œ์–ดํ•˜๋Š” ํ‰๋ฉด์„ ์ œ๊ณตํ•˜์—ฌ, ๋ชจ๋“  ๊ตฌ์„ฑ ์š”์†Œ ๊ฐ„์˜ ์›ํ™œํ•œ ๋ฉ”์‹œ์ง€ ๊ตํ™˜์„ ๋ณด์žฅํ•ฉ๋‹ˆ๋‹ค. ์ด๋Š” Cursor, Codex, Claude Code์™€ ๊ฐ™์€ AI ๊ฐœ๋ฐœ ๋„๊ตฌ์™€ ํ†ตํ•ฉ๋˜์–ด ์‚ฌ์šฉ๋  ์ˆ˜ ์žˆ์œผ๋ฉฐ, ๋ณต์žกํ•œ ๋‹ค์ค‘ ์—์ด์ „ํŠธ ์›Œํฌํ”Œ๋กœ์šฐ๋ฅผ ๊ด€๋ฆฌํ•˜๊ณ  ํ™•์žฅ ๊ฐ€๋Šฅํ•œ ์‹ค์‹œ๊ฐ„ ํ˜‘์—…์„ ๊ฐ€๋Šฅํ•˜๊ฒŒ ํ•ฉ๋‹ˆ๋‹ค.

์ง€์› ๋Œ€์ƒ~Claude Code~Codex CLI~Cursor
npx skills add Mininglamp-OSS/octo-server

์ฆ๊ฒจ ์‚ฌ์šฉํ•˜๋Š” AI์—๊ฒŒ ๋ฌผ์–ด๋ณด๊ธฐ

์ด ์—์ด์ „ํŠธ ์Šคํ‚ฌ์ด ๋ฏธ๋ฆฌ ๋กœ๋“œ๋œ ์ƒˆ ์ฑ„ํŒ…์„ ์—ฝ๋‹ˆ๋‹ค.

๋ฌธ์„œ

octo-server์€(๋Š”) ๋ฌด์—‡์„ ํ•˜๋‚˜์š”?

๐Ÿ™ OCTO(Open Collaborative and Transformative Office) โ€” ์ธ๊ฐ„๊ณผ ์ธ๊ณต์ง€๋Šฅ ์—์ด์ „ํŠธ๋ฅผ ์œ„ํ•ด ๊ตฌ์ถ•๋œ ๊ฐœ๋ฐฉํ˜• ์ž‘์—… ๊ณต๊ฐ„์„ ๊ตฌ๋™ํ•˜๋Š” Go ๋ฐฑ์—”๋“œ์ž…๋‹ˆ๋‹ค. REST ๋ฐ WebSocket API, Lobster(์ธ๊ณต์ง€๋Šฅ ์—์ด์ „ํŠธ) ์˜ค์ผ€์ŠคํŠธ๋ ˆ์ด์…˜, ๊ทธ๋ฆฌ๊ณ  WuKongIM ์‹ค์‹œ๊ฐ„ ๋ฉ”์‹œ์ง• ์ œ์–ด ํ‰๋ฉด์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.

์ฃผ์š” ๊ธฐ๋Šฅ

  • REST API: ์ธ๊ณต์ง€๋Šฅ ์—์ด์ „ํŠธ์™€ ์‚ฌ์šฉ์ž ๊ฐ„์˜ ์ƒํƒœ ๊ด€๋ฆฌ ๋ฐ ์ž‘์—… ์ œ์ถœ์„ ์œ„ํ•œ HTTP ๊ธฐ๋ฐ˜ ์ธํ„ฐํŽ˜์ด์Šค.
  • WebSocket API: ์‹ค์‹œ๊ฐ„ ์–‘๋ฐฉํ–ฅ ํ†ต์‹ ์„ ์ง€์›ํ•˜์—ฌ, ์—์ด์ „ํŠธ๊ฐ€ ์ž‘์—… ์ง„ํ–‰ ์ƒํ™ฉ์„ ์ฆ‰์‹œ ์•Œ๋ฆด ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • Lobster ์˜ค์ผ€์ŠคํŠธ๋ ˆ์ด์…˜: ์—ฌ๋Ÿฌ ์ธ๊ณต์ง€๋Šฅ ์—์ด์ „ํŠธ๋ฅผ ์กฐ์œจํ•˜๊ณ  ์ž‘์—…์„ ํ• ๋‹นํ•˜๋Š” ์ค‘์•™ ์ œ์–ด ์‹œ์Šคํ…œ.
  • WuKongIM ์ œ์–ด ํ‰๋ฉด: WuKongIM ์‹ค์‹œ๊ฐ„ ๋ฉ”์‹œ์ง• ์‹œ์Šคํ…œ์„ ๊ด€๋ฆฌํ•˜๊ณ  ์ œ์–ดํ•˜๋Š” ์ธํ„ฐํŽ˜์ด์Šค.

์‹œ์ž‘ํ•˜๊ธฐ

์‚ฌ์ „ ์š”๊ตฌ ์‚ฌํ•ญ

  • Go 1.20 ์ด์ƒ
  • MySQL ๋˜๋Š” PostgreSQL ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค
  • Redis (์„ ํƒ ์‚ฌํ•ญ, ์บ์‹ฑ ๋ฐ ์„ธ์…˜ ๊ด€๋ฆฌ์šฉ)
  • WuKongIM ์„œ๋ฒ„ (์‹ค์‹œ๊ฐ„ ๋ฉ”์‹œ์ง• ๊ธฐ๋Šฅ ์‚ฌ์šฉ ์‹œ)

์„ค์น˜

git clone https://github.com/Mininglamp-OSS/octo-server.git
cd octo-server
cp config.yaml.example config.yaml
# config.yaml ํŒŒ์ผ์„ ํŽธ์ง‘ํ•˜์—ฌ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์—ฐ๊ฒฐ ์ •๋ณด ์ž…๋ ฅ
make build
./bin/octo-server

API ๋ฌธ์„œ

์„œ๋ฒ„๊ฐ€ ์‹คํ–‰ ์ค‘์ผ ๋•Œ http://localhost:8080/swagger/index.html์—์„œ Swagger ๋ฌธ์„œ๋ฅผ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์„ค์ •

config.yaml ํŒŒ์ผ์—์„œ ๋‹ค์Œ์„ ์„ค์ •ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค:

ํŒŒ๋ผ๋ฏธํ„ฐ์„ค๋ช…๊ธฐ๋ณธ๊ฐ’
server.portHTTP ์„œ๋ฒ„ ํฌํŠธ8080
database.dsn๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์—ฐ๊ฒฐ ๋ฌธ์ž์—ดroot:password@tcp(127.0.0.1:3306)/octo?charset=utf8mb4&parseTime=True&loc=Local
lobster.endpointLobster ์˜ค์ผ€์ŠคํŠธ๋ ˆ์ด์…˜ ์„œ๋น„์Šค ์ฃผ์†Œhttp://localhost:9090
wukongim.api_keyWuKongIM ์ œ์–ด ํ‰๋ฉด API ํ‚ค""

๋ผ์ด์„ ์Šค

Apache 2.0 ๋ผ์ด์„ ์Šค ํ•˜์— ๋ฐฐํฌ๋ฉ๋‹ˆ๋‹ค. ์ž์„ธํ•œ ๋‚ด์šฉ์€ LICENSE ํŒŒ์ผ์„ ์ฐธ์กฐํ•˜์„ธ์š”.

๊ด€๋ จ ์Šคํ‚ฌ