4.5 KiB
Fastify · MongoDB 실행 안내
저장소
사용자가 지정한 MongoDB 서버는 172.16.0.7:27017, 프로젝트 DB는 basket_utils다. SQLite 선택은 이 설정으로 대체한다. 서버는 MongoClient 연결 풀을 재사용한다.
프로젝트 루트 .config.json에서 설정을 관리한다. 예시는 .config.json.sample에 있으며 새 환경에서는 복사해 사용한다. 기존 설정 파일이 있으면 덮어쓰지 않는다.
Copy-Item .config.json.sample .config.json
{
"mongodb": {
"uri": "mongodb://172.16.0.7:27017",
"db": "basket_utils"
},
"server": {
"host": "0.0.0.0",
"port": 3000,
"mode": "development",
"allowedOrigins": [
"http://localhost:5173",
"http://127.0.0.1:5173",
"http://192.168.5.10:5173"
],
"secureCookie": false
},
"bootstrap": { "password": "" },
"qa": { "db": "basket_utils_qa", "password": "" }
}
MongoDB 인증 정보가 필요하면 mongodb.uri에 설정한다. 실제 .config.json은 Git 추적에서 제외하고 예시 파일에는 비밀번호를 넣지 않는다. 설정 변경 후 서버를 재시작한다.
개발 실행
npm install
npm run dev
Vite 화면은 PC에서 http://localhost:5173, 같은 네트워크의 휴대폰에서 http://192.168.5.10:5173으로 접근한다. PC의 IP가 바뀌면 주소도 바뀐다. Vite의 /api 요청은 server.port에 지정한 Fastify 포트로 전달된다.
LAN 접속에는 Windows 방화벽과 공유기의 기기 간 통신 허용도 필요하다. MongoDB 주소와 휴대폰이 접속할 웹 주소는 별개다.
최초 운영자
공개 기본 운영자 계정은 만들지 않는다. 사용할 이메일로 회원가입한 뒤, 서버 PC에서 해당 계정을 명시적으로 승격할 수 있다.
node .\server\bootstrap-admin.js --email=your-email@example.com --promote-existing
your-email@example.com을 실제 가입한 이메일로 바꾼다. 기존 비밀번호는 유지된다. 이후 로그인하여 다른 사용자의 가입 신청을 승인한다.
PowerShell에서는 npm.ps1을 통해 실행할 때 옵션이 npm 자체 설정으로 해석되어 스크립트에 전달되지 않을 수 있으므로 위처럼 Node로 직접 실행한다. 명령 끝에 역슬래시(\)를 붙이지 않는다.
새 운영자를 직접 만들 때는 .config.json의 bootstrap.password에 사용할 비밀번호를 일시적으로 설정하고 아래 명령을 실행한다. 실행 후 비밀번호 값은 다시 빈 문자열로 바꾼다.
node .\server\bootstrap-admin.js --email=your-email@example.com
운영 실행
.config.json의 server.mode를 production, server.allowedOrigins를 실제 HTTPS 서비스 주소 배열, server.secureCookie를 true로 설정한다.
npm run build
npm run server
Fastify가 dist 화면과 API를 제공한다. 실제 도메인을 허용 출처로 설정하고 HTTPS 프록시 뒤에서 실행한다. 운영 세션 쿠키는 Secure를 사용한다.
휴대폰의 HTTP LAN 화면 접속만으로 OS 파일 공유 조건이 충족되지는 않는다. 카카오톡으로 MP4 파일을 직접 공유하는 실기기 검증에는 지원 브라우저와 신뢰할 수 있는 HTTPS가 필요하다.
검증
npm test
npm run build
테스트 계정은 격리된 테스트 저장소에서 사용한다. 운영 basket_utils DB에 QA용 계정을 임의로 넣거나 기존 컬렉션을 삭제하지 않는다.
2026-09-08 검증 결과: 106개 테스트 및 빌드 통과. 별도 QA DB에서 로그인·승인·다중 팀 저장/전환과 서버 재시작 후 데이터 유지, PC/모바일 화면, MP4 생성·재생을 확인했다. 기존 번들 크기 경고는 남아 있다.
JSON 설정 전환 후에는 설정 로더 검증 5개와 정적 파일 보호 검증 1개를 추가해 총 112개 테스트와 빌드가 통과했다. 설정 파일이 없거나 JSON 구문·값 타입이 잘못되면 시작 시 오류를 안내하며, JSON 구문 오류에 설정 원문을 출력하지 않는다. 운영 모드에서는 Secure 쿠키가 강제되고 개발용 HTTP 출처는 허용하지 않는다.
QA seed 명령은 basket_utils_qa 또는 basket_utils_qa_ 뒤에 영문·숫자·하이픈이 붙은 DB 이름만 허용한다. 이번 검증 DB는 basket_utils_qa_20260908review이며 테스트 데이터는 운영 DB와 분리되어 있다. QA 서버는 검증 후 종료했다.