Use JSON server configuration and repository database name

This commit is contained in:
2026-10-14 19:33:03 +09:00
parent cc6319ec18
commit 714a2b1006
12 changed files with 122 additions and 54 deletions
+10 -6
View File
@@ -10,14 +10,14 @@ Linux 서버, Node.js 24 이상, MongoDB, 같은 호스트의 HTTPS nginx를 기
git clone https://gitea.horoli.kr/horoli/ssessesse-ki-battle.git dragon_ball
cd dragon_ball
npm ci
cp .env.example .env
chmod 600 .env
cp .config.example.json .config.json
chmod 600 .config.json
```
`.env`에서 다음을 설정한다.
`.config.json`에서 다음을 설정한다.
- `MONGODB_URI`: 서버에서 연결 가능한 MongoDB 주소와 인증 정보. DB 포트를 인터넷에 공개하지 않는다.
- `MONGODB_DATABASE`: 초기화하려면 기존에 사용하지 않은 DB 이름을 지정한다. 예시의 `dragon_ball_production`도 이미 사용했다면 다른 이름을 지정한다. 기존 DB를 자동 삭제하지 않는다.
- `MONGODB_DATABASE`: 저장소 이름과 같은 `ssessesse-ki-battle`을 사용한다. 해당 DB가 비어 있을 때 새 데이터로 시작하며, 기존 DB를 자동 삭제하거나 이전하지 않는다.
- `HOST=127.0.0.1`, `PORT=2100`, `TRUST_PROXY=loopback`: 같은 서버 nginx 전용. `TRUST_PROXY`는 쉼표로 구분한 신뢰 프록시 IP/CIDR 또는 `loopback`이며 직접 접속이면 비운다.
- `ADMIN_USER`, `ADMIN_PASSWORD`: 둘 다 지정하면 관리자 기능 활성화. 강한 전용 비밀번호를 사용한다.
- `STUN_URLS`, `TURN_URLS`, `TURN_SHARED_SECRET`: 친구전 ICE 설정. TURN 서버의 공유 비밀과 일치해야 하며 TURN 수신 포트·relay 포트 범위는 별도로 개방한다.
@@ -32,7 +32,11 @@ pm2 save
pm2 startup
```
`pm2 startup`이 출력하는 명령을 실행한다. Node 버전 관리자를 변경하면 startup 설정도 갱신한다. PM2 설정은 실행 위치와 무관하게 저장소 루트를 사용하며 `.env`가 없으면 시작하지 않는다. 운영 환경에 이미 설정된 환경변수는 Node의 `.env` 값보다 우선하므로 충돌하는 값을 서비스 셸에 남기지 않는다.
`pm2 startup`이 출력하는 명령을 실행한다. Node 버전 관리자를 변경하면 startup 설정도 갱신한다. PM2는 저장소 루트를 사용하며 `.config.json`이 없거나 형식이 잘못되면 시작하지 않는다. 앱 설정은 이 JSON 파일만 읽으며 같은 이름의 환경변수나 기존 `.env`로 덮어쓰지 않는다. `npm run dev`와 `npm start`는 프로젝트 루트에서 실행한다.
JSON의 `PORT`는 숫자, `STUN_URLS`·`TURN_URLS`는 문자열 배열이다. URL이 없으면 `[]`를 사용한다. 로컬과 운영 모두 DB 이름은 `ssessesse-ki-battle`이므로 데이터를 분리하려면 `MONGODB_URI`가 서로 다른 MongoDB 인스턴스를 가리켜야 한다. 같은 인스턴스와 DB 이름을 사용하면 데이터를 공유한다. 설정 수정 후 프로세스를 재시작한다. 누락 시 로그의 `CONFIG_NOT_FOUND`, 형식 오류 시 `INVALID_CONFIG`를 확인한다.
기존 `.env` 배포에서 전환할 때는 `.config.example.json`을 `.config.json`으로 복사한 후 기존 값을 옮긴다. 이전 PM2 프로세스에 저장된 `--env-file` 실행 인자를 없애려면 앱 중지·빌드 후 `pm2 delete dragon-ball`, `pm2 start ecosystem.config.cjs`, `pm2 save` 순서로 등록한다. 기존 `.env`는 백업으로 보관할 수 있지만 앱에서 읽지 않는다.
```bash
curl --fail http://127.0.0.1:2100/health
@@ -74,7 +78,7 @@ curl --fail http://127.0.0.1:2100/ready
pm2 save
```
각 명령이 성공한 경우에만 다음 단계로 진행한다. 빌드 실패 시 재시작하지 말고 수정하거나 이전 커밋으로 복구한 후 다시 설치·빌드한다. `.env`는 Git에서 제외되어 유지된다. 데이터 백업은 MongoDB를 별도로 관리한다.
각 명령이 성공한 경우에만 다음 단계로 진행한다. 빌드 실패 시 재시작하지 말고 수정하거나 이전 커밋으로 복구한 후 다시 설치·빌드한다. `.config.json`는 Git에서 제외되어 유지된다. 데이터 백업은 MongoDB를 별도로 관리한다.
## 로그 관리 및 운영 확인