μΉμ§μ§(Chzzk) μ€νΈλ¦¬λ° νλ«νΌκ³Ό μ°λλ μλ λ£°λ μμ€ν μ λλ€. λλ€μ΄μ μ λ°μΌλ©΄ μλμΌλ‘ λ£°λ μ΄ λμκ°λ©°, μΉ κ΄λ¦¬μ νμ΄μ§μμ μ€μ μ μ½κ² κ΄λ¦¬ν μ μμ΅λλ€.
- π μΉμ§μ§ λλ€μ΄μ μλ κ°μ§ λ° λ£°λ μ€ν
- βοΈ μΉ κΈ°λ° μ€μ κ΄λ¦¬ (κ½ κ°―μ, μν λͺ©λ‘, λλ€μ΄μ κΈμ‘)
- π¨ 물리 μμ§ κΈ°λ° μ€μ κ° μλ κ΅¬μ¬ λ¨μ΄λ¨λ¦¬κΈ° μ λλ©μ΄μ (ν΄λΉ μ λλ©μ΄μ μ½λμ μ μκΆμ https://github.com/lazygyu/rouletteμ μμ΅λλ€.)
- πΎ SQLite λ°μ΄ν°λ² μ΄μ€λ‘ μ€μ μꡬ μ μ₯
- π³ Dockerλ‘ κ°νΈν μ€μΉ λ° μ€ν
- Docker μ€μΉ (Docker Desktop κΆμ₯)
- Docker Compose μ€μΉ (Docker Desktopμ ν¬ν¨λ¨)
- μΉμ§μ§(Chzzk) κ³μ λ° μΈμ¦ ν ν°
git clone <repository-url>
cd AutoRoulette.env.example νμΌμ 볡μ¬νμ¬ .env νμΌμ μμ±ν©λλ€:
cp .env.example .env.env νμΌμ μ΄μ΄μ μΉμ§μ§ μΈμ¦ ν ν°κ³Ό μ±λ IDλ₯Ό μ
λ ₯ν©λλ€:
NID_AUT=your_actual_nid_aut_token
NID_SES=your_actual_nid_ses_token
CHANNEL_ID=your_channel_id_here- λΈλΌμ°μ μμ μΉμ§μ§ λ‘κ·ΈμΈ
- κ°λ°μ λꡬ μ΄κΈ° (F12 λλ μ°ν΄λ¦ > κ²μ¬)
- Application ν > Cookies >
https://chzzk.naver.comμ ν NID_AUTμNID_SESμΏ ν€μ Value 볡μ¬.envνμΌμ λΆμ¬λ£κΈ°
- λΈλΌμ°μ μμ λ£°λ μ μ€νν μΉμ§μ§ μ±λ νμ΄μ§λ‘ μ΄λ
- μ£Όμμ°½μ URLμμ μ±λ ID 볡μ¬
- μ:
https://chzzk.naver.com/live/abc123def456βabc123def456
- μ:
.envνμΌμCHANNEL_IDμ λΆμ¬λ£κΈ°
docker-compose up -dμ²μ μ€ν μ μ΄λ―Έμ§ λΉλμ λͺ λΆ μ λ μμλ©λλ€.
μλΉμ€κ° μμλλ©΄ λ€μ URLλ‘ μ μν μ μμ΅λλ€:
- λ£°λ νλ©΄: http://localhost:1235/
- κ΄λ¦¬μ μ€μ νμ΄μ§: http://localhost:3000/admin
- λ°±μλ API: http://localhost:3000
- λΈλΌμ°μ μμ http://localhost:3000/admin μ μ
- μ€μ νμ΄μ§μμ λ€μ νλͺ© μμ :
- κ½ κ°―μ: λ£°λ μ ν¬ν¨λ κ½μ κ°μ
- μν λͺ©λ‘: λΉμ²¨ κ°λ₯ν μνλ€ (μΆκ°/μμ κ°λ₯)
- λλ€μ΄μ κΈμ‘: λ£°λ μ μ€νν μ΅μ λλ€μ΄μ κΈμ‘ (μ λ¨μ)
- μ μ₯ λ²νΌ ν΄λ¦
- λ€μ λ£°λ λΆν° μ μ€μ μ΄ μ μ©λ©λλ€
μ€μ μ‘°ν:
curl http://localhost:3000/settingsμ€μ μμ :
curl -X PUT http://localhost:3000/settings \
-H "Content-Type: application/json" \
-d '{
"dudCount": 50,
"prizes": ["λ
Έλ", "λμ¬", "μΆ€", "κ²μκΆ"],
"donationAmount": 10000
}'Docker μμ΄ λ‘컬μμ κ°λ°νλ €λ©΄:
cd roulette-backend
pnpm install
pnpm run start:devcd roulette
yarn install
yarn dev# μλΉμ€ μμ
docker-compose up -d
# μλΉμ€ μ€μ§
docker-compose down
# λ‘κ·Έ νμΈ
docker-compose logs -f
# μλΉμ€ μ¬μμ
docker-compose restart
# μ΄λ―Έμ§ μ¬λΉλ
docker-compose up -d --build
# λͺ¨λ 컨ν
μ΄λ λ° λ³Όλ₯¨ μμ (λ°μ΄ν° μ΄κΈ°ν)
docker-compose down -vAutoRoulette/
βββ roulette-backend/ # NestJS λ°±μλ
β βββ src/
β β βββ settings/ # μ€μ κ΄λ¦¬ λͺ¨λ
β β βββ app.module.ts
β β βββ main.ts
β βββ public/ # κ΄λ¦¬μ μΉ νμ΄μ§
β β βββ index.html
β βββ Dockerfile
β βββ package.json
βββ roulette/ # νλ‘ νΈμλ (λ£°λ UI)
β βββ src/
β βββ Dockerfile
β βββ nginx.conf
β βββ package.json
βββ docker-compose.yml # Docker Compose μ€μ
βββ .env.example # νκ²½λ³μ ν
νλ¦Ώ
βββ README.md
- backend: 3000λ² ν¬νΈμμ μ€ν
- frontend: 1235λ² ν¬νΈμμ μ€ν
- volumes: λ°μ΄ν°λ² μ΄μ€ μꡬ μ μ₯
ν¬νΈλ₯Ό λ³κ²½νλ €λ©΄ docker-compose.ymlμ ports μΉμ
μ μμ νμΈμ:
ports:
- "μνλν¬νΈ:3000" # λ°±μλ
- "μνλν¬νΈ:1235" # νλ‘ νΈμλ# Docker λ°λͺ¬μ΄ μ€ν μ€μΈμ§ νμΈ
docker ps
# Docker Desktopμ μ¬μμ# μ¬μ© μ€μΈ ν¬νΈ νμΈ
netstat -ano | findstr :3000
netstat -ano | findstr :1235
# docker-compose.ymlμμ ν¬νΈ λ²νΈ λ³κ²½# λ³Όλ₯¨ νμΈ
docker volume ls
# 컨ν
μ΄λ μ¬μμ
docker-compose restart backend.envνμΌμ ν ν°μ΄ μ¬λ°λ₯Έμ§ νμΈ- ν ν°μ΄ λ§λ£λμ§ μμλμ§ νμΈ
- λ°±μλ λ‘κ·Έ νμΈ:
docker-compose logs -f backend
MIT
μ΄μμ PRμ νμν©λλ€!
λ¬Έμ κ° λ°μνλ©΄ μ΄μλ₯Ό λ±λ‘ν΄μ£ΌμΈμ.