ํ”„๋กœ์ ํŠธ

์ผ๋ฐ˜

์‚ฌ์šฉ์ž์ •๋ณด

Actions

์ƒˆ๊ธฐ๋Šฅ #44

์ง„ํ–‰์ค‘

๐Ÿ“˜ Mangement Cloud server FastAPI ํ”„๋กœ์ ํŠธ

minkyu park์ด(๊ฐ€) 21์ผ ์ „์— ์ถ”๊ฐ€ํ•จ. 20์ผ ์ „์— ์ˆ˜์ •๋จ.

์ƒํƒœ:
์‹ ๊ทœ
์šฐ์„ ์ˆœ์œ„:
๋ณดํ†ต
๋‹ด๋‹น์ž:
์‹œ์ž‘์ผ:
2026/09/30
์™„๋ฃŒ์ผ:
์ง„์ฒ™๋„:

0%

์ถ”์ •์‹œ๊ฐ„:
(ํ•ฉ๊ณ„: 0:00 ์‹œ๊ฐ„)

์„ค๋ช…

๐Ÿ“˜ Mangement Cloud server FastAPI ํ”„๋กœ์ ํŠธ

๐ŸŸฆ Epic 1 โ€” FastAPI ํ”„๋กœ์ ํŠธ ๊ตฌ์กฐ ์„ค๊ณ„

ํŠธ๋ž˜์ปค: Task
์นดํ…Œ๊ณ ๋ฆฌ: FastAPI ์„œ๋ฒ„ ๊ฐœ๋ฐœ

์„ค๋ช…:

  • FastAPI ๊ธฐ๋ฐ˜ mgmt ์„œ๋ฒ„์˜ ์ „์ฒด ๋””๋ ‰ํ† ๋ฆฌ ๊ตฌ์กฐ๋ฅผ ์„ค๊ณ„ํ•œ๋‹ค.
  • app / worker / routers / models / core ๊ตฌ์กฐ ์ •์˜
  • Gitea ์ €์žฅ์†Œ ์ƒ์„ฑ
  • PyCharm ๊ฐœ๋ฐœ ํ™˜๊ฒฝ ์ค€๋น„
  • ๊ธฐ๋ณธ ์‹คํ–‰ ๊ตฌ์กฐ(main.py) ์„ค๊ณ„

๐ŸŸฆ Issue 2 โ€” Django ๋ชจ๋ธ ๋ถ„์„ ๋ฐ FastAPI ๋ชจ๋ธ ๋ณ€ํ™˜ ๊ณ„ํš

ํŠธ๋ž˜์ปค: Task
์นดํ…Œ๊ณ ๋ฆฌ: Django โ†’ FastAPI ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜

์„ค๋ช…
๊ธฐ์กด Django ORM ๋ชจ๋ธ์„ ๋ถ„์„ํ•˜๊ณ  SQLAlchemy ๋ชจ๋ธ๋กœ ๋ณ€ํ™˜ ๊ณ„ํš์„ ์ˆ˜๋ฆฝํ•œ๋‹ค.

ServerMaster

ServerStatus

ServerControl

ServerDetail

JSONField โ†’ PostgreSQL JSONB ๋ณ€ํ™˜

๊ด€๊ณ„(OneToOne, ForeignKey) ๋งคํ•‘ ๋ฐฉ์‹ ์ •์˜

๐ŸŸฆ Issue 3 โ€” FastAPI ๊ธฐ๋ณธ ์„œ๋ฒ„ ๊ตฌ์ถ•

ํŠธ๋ž˜์ปค: Feature
์นดํ…Œ๊ณ ๋ฆฌ: FastAPI ์„œ๋ฒ„ ๊ฐœ๋ฐœ

์„ค๋ช…
FastAPI ๊ธฐ๋ณธ ์„œ๋ฒ„๋ฅผ ๊ตฌ์ถ•ํ•œ๋‹ค.

/ping

/server/list

/server/status/{hostname}

uvicorn ์‹คํ–‰ ํ…Œ์ŠคํŠธ

test_main.http ํ…Œ์ŠคํŠธ

๐ŸŸฆ Issue 4 โ€” PostgreSQL ์—ฐ๊ฒฐ ๋ฐ SQLAlchemy ๋ชจ๋ธ ์ƒ์„ฑ

ํŠธ๋ž˜์ปค: Feature
์นดํ…Œ๊ณ ๋ฆฌ: DB(PostgreSQL)

์„ค๋ช…
PostgreSQL ์—ฐ๊ฒฐ ๋ฐ SQLAlchemy ๋ชจ๋ธ์„ ์ƒ์„ฑํ•œ๋‹ค.

DB ์—ฐ๊ฒฐ ํ…Œ์ŠคํŠธ

SQLAlchemy Base ์ƒ์„ฑ

๋ชจ๋ธ ๋งคํ•‘

JSONB ํ•„๋“œ ํ…Œ์ŠคํŠธ

๐ŸŸฆ Issue 5 โ€” MQTT Worker ๋…๋ฆฝ ํ”„๋กœ์„ธ์Šค ์„ค๊ณ„

ํŠธ๋ž˜์ปค: Feature
์นดํ…Œ๊ณ ๋ฆฌ: MQTT Worker

์„ค๋ช…
MQTT worker๋ฅผ FastAPI์™€ ๋ถ„๋ฆฌ๋œ ๋…๋ฆฝ ํ”„๋กœ์„ธ์Šค๋กœ ์„ค๊ณ„ํ•œ๋‹ค.

asyncio-mqtt ์‚ฌ์šฉ

๋ฉ”์‹œ์ง€ ์ˆ˜์‹  ๊ตฌ์กฐ ์„ค๊ณ„

DB ์—…๋ฐ์ดํŠธ ๋ฐฉ์‹ ๊ฒฐ์ •

FastAPI์™€ ์—ฐ๋™ ๋ฐฉ์‹ ์ •์˜(API ํ˜ธ์ถœ vs DB ์ง์ ‘ ์—…๋ฐ์ดํŠธ)

๐ŸŸฆ Issue 6 โ€” Reverse SSH ๊ตฌ์กฐ ์„ค๊ณ„

ํŠธ๋ž˜์ปค: Task
์นดํ…Œ๊ณ ๋ฆฌ: Reverse SSH

์„ค๋ช…
Reverse SSH ๊ธฐ๋Šฅ์„ FastAPI์—์„œ ์ œ์–ดํ•  ์ˆ˜ ์žˆ๋„๋ก ๊ตฌ์กฐ๋ฅผ ์„ค๊ณ„ํ•œ๋‹ค.

ํฌํŠธ ๊ด€๋ฆฌ

์„ธ์…˜ ๊ด€๋ฆฌ

FastAPI ์ œ์–ด API ์„ค๊ณ„

๋กœ์ปฌ ํ…Œ์ŠคํŠธ ํ”Œ๋กœ์šฐ ์ •์˜

๐ŸŸฆ Issue 7 โ€” AlmaLinux ์„œ๋ฒ„ 2๋Œ€ ๊ตฌ์„ฑ ๊ณ„ํš

ํŠธ๋ž˜์ปค: Task
์นดํ…Œ๊ณ ๋ฆฌ: ์„œ๋ฒ„ ๋ถ„๋ฆฌ(1GB ร— 2๋Œ€)

์„ค๋ช…
์„œ๋ฒ„๋ฅผ 2๋Œ€๋กœ ๋ถ„๋ฆฌํ•˜๊ณ  1GB ๋ฉ”๋ชจ๋ฆฌ ๊ธฐ์ค€์œผ๋กœ ์ตœ์ ํ™”ํ•œ๋‹ค.

mgmt + worker ์„œ๋ฒ„

lotto + pwa ์„œ๋ฒ„

systemd ์„œ๋น„์Šค ๊ตฌ์„ฑ

๋ฉ”๋ชจ๋ฆฌ ์ตœ์ ํ™” ๊ณ„ํš

๐ŸŸฆ Issue 8 โ€” journald / systemd ์ตœ์ ํ™” ๊ณ„ํš

ํŠธ๋ž˜์ปค: Task
์นดํ…Œ๊ณ ๋ฆฌ: AlmaLinux ํ™˜๊ฒฝ ๊ตฌ์„ฑ

์„ค๋ช…
AlmaLinux์—์„œ journald ๋ฐ systemd ์ตœ์ ํ™”๋ฅผ ์ˆ˜ํ–‰ํ•œ๋‹ค.

journald ๋ฉ”๋ชจ๋ฆฌ ์ œํ•œ

๋กœ๊ทธ ๋กœํ…Œ์ด์…˜

systemd ์„œ๋น„์Šค ํŒŒ์ผ ์„ค๊ณ„

gunicorn/uvicorn ์„œ๋น„์Šค ๊ตฌ์„ฑ

๐ŸŸฆ Issue 9 โ€” Django โ†’ FastAPI ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜ ์ฒดํฌ๋ฆฌ์ŠคํŠธ ์ž‘์„ฑ

ํŠธ๋ž˜์ปค: Task
์นดํ…Œ๊ณ ๋ฆฌ: Django โ†’ FastAPI ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜

์„ค๋ช…
Django์—์„œ FastAPI๋กœ ์ „ํ™˜ํ•˜๊ธฐ ์œ„ํ•œ ์ „์ฒด ์ฒดํฌ๋ฆฌ์ŠคํŠธ๋ฅผ ์ž‘์„ฑํ•œ๋‹ค.

๊ธฐ๋Šฅ ๋น„๊ต

API ๋งคํ•‘

DB ์Šคํ‚ค๋งˆ ๋น„๊ต

MQTT ๋กœ์ง ๋ถ„๋ฆฌ

reverse SSH ๊ธฐ๋Šฅ ์ด์ „

๋ฐฐํฌ ํ”Œ๋กœ์šฐ ์ •์˜

๐ŸŸฆ Issue 10 โ€” ์ „์ฒด ์•„ํ‚คํ…์ฒ˜ ๋ฌธ์„œํ™”

ํŠธ๋ž˜์ปค: Documentation
์นดํ…Œ๊ณ ๋ฆฌ: ๋ฌธ์„œํ™”

์„ค๋ช…
FastAPI mgmt ์„œ๋ฒ„ + MQTT worker + PostgreSQL + reverse SSH + ์„œ๋ฒ„ ๋ถ„๋ฆฌ ๊ตฌ์กฐ๋ฅผ ๋ฌธ์„œํ™”ํ•œ๋‹ค.

์ „์ฒด ์•„ํ‚คํ…์ฒ˜ ๋‹ค์ด์–ด๊ทธ๋žจ

๋ฐ์ดํ„ฐ ํ๋ฆ„

์„œ๋ฒ„ ๊ตฌ์„ฑ

๋ฐฐํฌ ์ „๋žต

์šด์˜ ๊ฐ€์ด๋“œ


ํ•˜์œ„ ์ผ๊ฐ 7 (7 ๊ฑด ์ง„ํ–‰ ์ค‘ — ๋ชจ๋‘ ๋ฏธ์™„๋ฃŒ)

์ƒˆ๊ธฐ๋Šฅ #46: ๐ŸŸฅ Epic 1 - Task 1 FastAPI ๋””๋ ‰ํ† ๋ฆฌ ๊ตฌ์กฐ ์ •์˜์‹ ๊ทœminkyu park2026/09/30

Actions
์ƒˆ๊ธฐ๋Šฅ #47: ๐ŸŸฅ Epic 1 - Task 2 ๐ŸŽ‰ Gitea ์ €์žฅ์†Œ ์ƒ์„ฑ ๋ฐ ์ดˆ๊ธฐ ์ปค๋ฐ‹์‹ ๊ทœminkyu park2026/09/30

Actions
์ƒˆ๊ธฐ๋Šฅ #48: ๐ŸŸฅ Epic 1 - Task 3 ๐Ÿš€ FastAPI ๊ธฐ๋ณธ ์„œ๋ฒ„ ๊ตฌ์ถ•์‹ ๊ทœminkyu park2026/10/01

Actions
์ƒˆ๊ธฐ๋Šฅ #49: ๐ŸŸฅ Epic 1 - Task 4 ๏ธ๐Ÿ—„๏ธ PostgreSQL ์—ฐ๊ฒฐ ๋ฐ SQLAlchemy ๋ชจ๋ธ ์ƒ์„ฑ์‹ ๊ทœminkyu park2026/10/01

Actions
์ƒˆ๊ธฐ๋Šฅ #50: ๐ŸŸฅ Epic 1 - Task (Login) ๐Ÿ” FastAPI ๋กœ๊ทธ์ธ ๊ธฐ๋Šฅ ์„ค๊ณ„ ๋ฐ ๊ตฌํ˜„์‹ ๊ทœminkyu park2026/10/01

Actions
์ƒˆ๊ธฐ๋Šฅ #51: ๐ŸŸฅ Epic 1 - Task (Auth Extension) ๐Ÿง‘โ€๐Ÿ’ป /me & /logout ๊ตฌํ˜„์‹ ๊ทœminkyu park2026/10/01

Actions
์ƒˆ๊ธฐ๋Šฅ #52: ๐ŸŸฅ Epic 1 - Task (DB Init) ๐Ÿ—„๏ธ PostgreSQL ์ดˆ๊ธฐํ™” + User ํ…Œ์ด๋ธ” ์ƒ์„ฑ์‹ ๊ทœminkyu park2026/10/01

Actions
Actions #1

minkyu park์ด(๊ฐ€) 21์ผ ์ „์— ๋ณ€๊ฒฝ

  • ์„ค๋ช…์ด ๋ณ€๊ฒฝ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. (๋น„๊ต(diff))
  • ๋‹ด๋‹น์ž์„(๋ฅผ) minkyu park(์œผ)๋กœ ์ง€์ •๋˜์—ˆ์Šต๋‹ˆ๋‹ค.
Actions #2

minkyu park์ด(๊ฐ€) 21์ผ ์ „์— ๋ณ€๊ฒฝ

  • Subtask์— #45์ด(๊ฐ€) ์ถ”๊ฐ€๋˜์—ˆ์Šต๋‹ˆ๋‹ค.
Actions #3

minkyu park์ด(๊ฐ€) 21์ผ ์ „์— ๋ณ€๊ฒฝ

  • ์ œ๋ชฉ์„(๋ฅผ) ๐Ÿ“˜ ๋ ˆ๋“œ๋งˆ์ธ ์ดˆ๊ธฐ ์ด์Šˆ ์„ธํŠธ (Markdown ํ…œํ”Œ๋ฆฟ)์—์„œ ๐Ÿ“˜ Mangement Cloud server FastAPI ํ”„๋กœ์ ํŠธ(์œผ)๋กœ ๋ณ€๊ฒฝ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.
  • ์„ค๋ช…์ด ๋ณ€๊ฒฝ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. (๋น„๊ต(diff))
Actions #4

minkyu park์ด(๊ฐ€) 21์ผ ์ „์— ๋ณ€๊ฒฝ

  • Subtask ๊ฐ’์ด ์ง€์›Œ์กŒ์Šต๋‹ˆ๋‹ค. (#45)
Actions #5

minkyu park์ด(๊ฐ€) 21์ผ ์ „์— ๋ณ€๊ฒฝ

  • Subtask์— #46์ด(๊ฐ€) ์ถ”๊ฐ€๋˜์—ˆ์Šต๋‹ˆ๋‹ค.
Actions #6

minkyu park์ด(๊ฐ€) 21์ผ ์ „์— ๋ณ€๊ฒฝ

  • Subtask์— #47์ด(๊ฐ€) ์ถ”๊ฐ€๋˜์—ˆ์Šต๋‹ˆ๋‹ค.
Actions #7

minkyu park์ด(๊ฐ€) 20์ผ ์ „์— ๋ณ€๊ฒฝ

  • Subtask์— #48์ด(๊ฐ€) ์ถ”๊ฐ€๋˜์—ˆ์Šต๋‹ˆ๋‹ค.
Actions #8

minkyu park์ด(๊ฐ€) 20์ผ ์ „์— ๋ณ€๊ฒฝ

  • Subtask์— #49์ด(๊ฐ€) ์ถ”๊ฐ€๋˜์—ˆ์Šต๋‹ˆ๋‹ค.
Actions #9

minkyu park์ด(๊ฐ€) 20์ผ ์ „์— ๋ณ€๊ฒฝ

  • Subtask์— #50์ด(๊ฐ€) ์ถ”๊ฐ€๋˜์—ˆ์Šต๋‹ˆ๋‹ค.
Actions #10

minkyu park์ด(๊ฐ€) 20์ผ ์ „์— ๋ณ€๊ฒฝ

  • Subtask์— #51์ด(๊ฐ€) ์ถ”๊ฐ€๋˜์—ˆ์Šต๋‹ˆ๋‹ค.
Actions #11

minkyu park์ด(๊ฐ€) 20์ผ ์ „์— ๋ณ€๊ฒฝ

  • Subtask์— #52์ด(๊ฐ€) ์ถ”๊ฐ€๋˜์—ˆ์Šต๋‹ˆ๋‹ค.
Actions

๋‚ด๋ณด๋‚ด๊ธฐ Atom PDF