![]() |
![]() |
![]() |
์ด ํ๋ก์ ํธ๋ ์คํ๋ผ์ธ ํ์ฌ์ฅ์์ ํ๋ธ๋ฆฟ PC๋ฅผ ํตํด ๋ฐฉ๋ฌธ๊ฐ์ด ์ผ๊ตด ์ธ์์ผ๋ก ๊ฐํธํ๊ฒ ๋ก๊ทธ์ธํ๋ ์๋๋ฆฌ์ค๋ฅผ ์๋ฎฌ๋ ์ด์ ํฉ๋๋ค.
์ฌ์ฉ์๋ ๋ชจ๋ฐ์ผ ์ฑ์ ํตํด ๋ฏธ๋ฆฌ ๊ณ์ ์ ์์ฑํ๊ณ ์ผ๊ตด์ ๋ฑ๋กํฉ๋๋ค. ์ดํ ์น ํค์ค์คํฌ์์ ์ผ๊ตด ์ธ์์ ํตํด ๊ฐํธํ๊ฒ ๋ก๊ทธ์ธํ ์ ์์ต๋๋ค.
๐ <project-root>
โโโ core-server/ # Express ๋ฐฑ์๋ (API, DB ๊ด๋ฆฌ)
โ โโโ prisma/ # DB ์คํค๋ง ๋ฐ ๋ง์ด๊ทธ๋ ์ด์
โ โโโ src/ # ๋น์ฆ๋์ค ๋ก์ง
โโโ ai-server/ # FastAPI AI ์๋ฒ (์ผ๊ตด ์ธ์ ๋ชจ๋ธ)
โโโ web-client/ # React ์น ํด๋ผ์ด์ธํธ (ํค์ค์คํฌ UI)
โโโ app-client/ # React Native ์ฑ (์ฌ์ฉ์ ๋ฑ๋ก)
๊ฐ ์ํํธ์จ์ด๋ LTS ๋ฒ์ ์ฌ์ฉ์ ๊ถ์ฅํฉ๋๋ค.
- Node.js
- Python
- PostgreSQL
- Yarn
ํ๋ก์ ํธ ์ต์์ ๊ฒฝ๋ก์์ ๊ณตํต ์์กด์ฑ์ ์ค์นํฉ๋๋ค.
yarn install์ด ํ๋ก์ ํธ๋ ์ผ๊ตด ์ธ์ ๋ฐ ์นด๋ฉ๋ผ ์ ๊ทผ์ ์ํด HTTPS(SSL) ํ๊ฒฝ์ด ํ์์
๋๋ค. ์์ฒด ์๋ช
์ธ์ฆ์๋ฅผ ์ฌ์ฉํ๋ฏ๋ก localhost๊ฐ ์๋ ์ค์ ๋ก์ปฌ IP ์ฃผ์๋ฅผ ์ฌ์ฉํด์ผ ํฉ๋๋ค.
๋์ ๋ก์ปฌ IP ํ์ธํ๊ธฐ:
# macOS
ifconfig | grep "inet " | grep -v 127.0.0.1
# Windows (PowerShell)
ipconfig | findstr IPv4๋ก์ปฌ ๊ฐ๋ฐ ํ๊ฒฝ์์์ HTTPS ํต์ ์ ์ํด mkcert๋ก ์ธ์ฆ์๋ฅผ ์์ฑํฉ๋๋ค.
macOS
mkdir cert && cd cert
# mkcert ์ค์น
brew install mkcert
brew install nss # Firefox ์ฌ์ฉ์์ฉ
# ์ธ์ฆ์ ์์ฑ (192.168.0.10์ ๋ณธ์ธ์ ์ค์ IP๋ก ๋ณ๊ฒฝ ํ์)
mkcert -install
mkcert localhost 127.0.0.1 ::1 192.168.0.10
# ํ์ผ๋ช
๋ณ๊ฒฝ
mv localhost+3.pem localhost.pem
mv localhost+3-key.pem localhost-key.pem
cd ..Windows (PowerShell)
mkdir cert; cd cert
# mkcert ์ค์น (Chocolatey ์ฌ์ฉ ์)
choco install mkcert
# ๋๋ Scoop ์ฌ์ฉ ์: scoop install mkcert
# ์ธ์ฆ์ ์์ฑ (192.168.0.10์ ๋ณธ์ธ์ ์ค์ IP๋ก ๋ณ๊ฒฝ ํ์)
mkcert -install
mkcert localhost 127.0.0.1 ::1 192.168.0.10
# ํ์ผ๋ช
๋ณ๊ฒฝ
Move-Item localhost+3.pem localhost.pem
Move-Item localhost+3-key.pem localhost-key.pem
cd ..๋ชจ๋ฐ์ผ ๊ธฐ๊ธฐ ๋ฐ ์๋ฎฌ๋ ์ดํฐ๊ฐ ์์ฒด ์๋ช ๋ ์ธ์ฆ์๋ฅผ ์ ๋ขฐํ๋๋ก ์ค์ ํด์ผ ํฉ๋๋ค.
- CA ์๋ฒ ์คํ: ํฐ๋ฏธ๋์์ ์๋ ๋ช
๋ น์ด๋ก ํ์ผ ์๋ฒ๋ฅผ ์ฝ๋๋ค.
# macOS cd "$(mkcert -CAROOT)" && python3 -m http.server 8080 # Windows cd (mkcert -CAROOT); python -m http.server 8080
- ๊ธฐ๊ธฐ์์ ์ธ์ฆ์ ๋ค์ด๋ก๋: ๋ชจ๋ฐ์ผ ๋ธ๋ผ์ฐ์ ์์
http://<๋ก์ปฌ IP ์ฃผ์>:8080/rootCA.pem์ ์ ์ํฉ๋๋ค.
iOS ์ค์
- ๋ค์ด๋ก๋ ํ๋กฌํํธ์์ "ํ์ฉ" ์ ํ
- ์ค์ > ์ผ๋ฐ > VPN ๋ฐ ๊ธฐ๊ธฐ ๊ด๋ฆฌ์์ ๋ค์ด๋ก๋๋ ํ๋กํ์ผ ์ค์น
- ์ค์ > ์ผ๋ฐ > ์ ๋ณด > ์ธ์ฆ์ ์ ๋ขฐ ์ค์ ์์ mkcert ๋ฃจํธ CA ํ์ฑํ
Android ์ค์
- ์ค์ > ๋ณด์ > ์ํธํ ๋ฐ ์๊ฒฉ ์ฆ๋ช > ์ธ์ฆ์ ์ค์น > CA ์ธ์ฆ์
- ๋ค์ด๋ก๋ํ
rootCA.pemํ์ผ ์ ํํ์ฌ ์ค์น
โ ์ค์ ์ด ์๋ฃ๋๋ฉด ์คํํ๋ Python ํ์ผ ์๋ฒ๋ ์ข ๋ฃํด๋ ๋ฉ๋๋ค.
# macOS
createdb face_recognition_db
# Windows
psql -U postgres -c "CREATE DATABASE face_recognition_db;"๊ฐ ๋๋ ํ ๋ฆฌ์ .env ํ์ผ์ ์์ฑํฉ๋๋ค.
โ ๏ธ ์๋ ์์์192.168.0.10๋ถ๋ถ์ ๋ฐ๋์ ๋ณธ์ธ์ ์ค์ ๋ก์ปฌ IP๋ก ๋ณ๊ฒฝํด์ผ ํฉ๋๋ค.
๐ ๋ฃจํธ ํ๊ฒฝ ๋ณ์ (.env)
HOST_IP=192.168.0.10
CORE_SERVER_PORT=3000
AI_SERVER_PORT=8000
WEB_CLIENT_PORT=5173๐ ๋ฐฑ์๋ ํ๊ฒฝ ๋ณ์ (core-server/.env)
DATABASE_URL="postgresql://USER:PASSWORD@localhost:5432/face_recognition_db?schema=public"
JWT_SECRET="your-secret-key"
JWT_EXPIRES_IN=604800cd core-server
yarn prisma:generate
yarn prisma:migratePython ๊ฐ์ํ๊ฒฝ์ ๊ตฌ์ฑํ๊ณ ์์กด์ฑ์ ์ค์นํฉ๋๋ค.
macOS
cd ai-server
python3 -m venv venv
source venv/bin/activate
pip install -r requirements.txtWindows
cd ai-server
python -m venv venv
.\venv\Scripts\Activate.ps1
pip install -r requirements.txt๊ฐ๊ฐ์ ํฐ๋ฏธ๋ ํญ์ ์ด์ด ์๋น์ค๋ฅผ ์คํํฉ๋๋ค.
1๏ธโฃ Core Server
cd core-server
yarn dev2๏ธโฃ AI Server
cd ai-server
# ๊ฐ์ํ๊ฒฝ ํ์ฑํ ํ (macOS: source venv/bin/activate, Win: .\venv\Scripts\Activate.ps1)
python -m app.main3๏ธโฃ Web Client
cd web-client
yarn dev --host4๏ธโฃ App Client (Mobile)
๐ก React Native ํ๋ก์ ํธ๋ฅผ ์คํํ๊ธฐ ์ํด์๋ ๊ฐ๋ฐ ํ๊ฒฝ์ด ์ฌ์ ์ ์ฌ๋ฐ๋ฅด๊ฒ ์ค์ ๋์ด ์์ด์ผ ํฉ๋๋ค. ์์ธํ ์ฌํญ์ React Native ๊ณต์ ๋ฌธ์๋ฅผ ์ฐธ๊ณ ํด ์ฃผ์ธ์.
App Client๋ Metro Bundler๋ฅผ ๋ณ๋ ํฐ๋ฏธ๋์์ ์คํํด์ผ ํฉ๋๋ค.
# ํฐ๋ฏธ๋ 1 โ Metro Bundler
cd app-client
yarn start# ํฐ๋ฏธ๋ 2 โ iOS ๋๋ Android ์คํ
# iOS (macOS Only)
yarn ios
# Android
yarn android- ํ์๊ฐ์
:
app-client๋ฅผ ์คํํ์ฌ ๊ณ์ ์ ์์ฑํฉ๋๋ค. - ์ผ๊ตด ๋ฑ๋ก: ๋ก๊ทธ์ธ ์ ์ฌ์ฉํ ์ผ๊ตด ์ฌ์ง์ ๋ฑ๋กํฉ๋๋ค.
- ์น ๋ธ๋ผ์ฐ์ ์์
https://<๋ก์ปฌ IP ์ฃผ์>:5173์ ์ ์ํฉ๋๋ค. - ์ผ๊ตด ์ธ์ฆ ๋ก๊ทธ์ธ: ์นด๋ฉ๋ผ ๊ถํ์ ํ์ฉํ๊ณ ์ผ๊ตด ์ธ์ฆ์ ํตํด ๋ก๊ทธ์ธํฉ๋๋ค.
- ์ธ์ฆ์๊ฐ ์ฌ๋ฐ๋ฅธ ๋๋ฉ์ธ/IP(SAN) ์ผ๋ก ๋ฐ๊ธ๋์๋์ง ํ์ธํด ์ฃผ์ธ์.
- ์ ์ ์ฃผ์๊ฐ ์ธ์ฆ์์ ์ ํํ ํฌํจ๋์ด ์๋์ง ์ ๊ฒํด ์ฃผ์ธ์.
- ๋ฃจํธ CA ์ธ์ฆ์๊ฐ ๊ธฐ๊ธฐ์ ์ค์น๋๊ณ '์ ๋ขฐ' ์ค์ ์ด ์ผ์ ธ ์๋์ง ๋ค์ ํ์ธํด ์ฃผ์ธ์.
- ๋ชจ๋ ๊ธฐ๊ธฐ๊ฐ ๋์ผํ Wi-Fi์ ์ฐ๊ฒฐ๋์ด ์๋์ง ํ์ธํด ์ฃผ์ธ์.
- ํฌํธ
3000,5173,8000์ด ๋ฐฉํ๋ฒฝ์์ ํ์ฉ๋์ด ์๋์ง ํ์ธํด ์ฃผ์ธ์. - IP ์ฃผ์๊ฐ ๋ณ๊ฒฝ๋ ๊ฒฝ์ฐ, ์ธ์ฆ์์
.env์ ์ฃผ์ ๊ฐ์ ๊ฐฑ์ ํด ์ฃผ์ธ์.
-
Metro ์บ์ ์ด๊ธฐํ
yarn start --reset-cache
-
๋ชจ๋ ์ฌ์ค์น
rm -rf node_modules yarn install
-
(iOS) Pod ์ฌ์ค์น
cd ios && pod install


