c4973224aa6745f93d96fa2c0c033fffaef6a7e9
OMS 의 반품 신청 같은 서버-서버 호출은 사용자 세션이 없으므로 AuthGuard 가 401 로 막아왔다. INTERNAL_SERVICE_TOKEN env 가 설정돼 있고 요청 헤더 X-Service-Token 이 같은 값이면 세션 검사를 우회한다. 보안: NPM 의 /corm/ location 블록에서 외부에서 들어온 X-Service-Token 헤더를 proxy_set_header X-Service-Token ""; 로 strip 해야 외부에서 토큰 추측 공격 방지.
DBX CORM (CS Web Program)
CS / 발주 / 반품 통합 관리 웹 애플리케이션. FastAPI + PostgreSQL 기반, Docker로 실행.
기술 스택
- Backend: Python 3.10, FastAPI, Uvicorn
- DB: PostgreSQL (외부 Docker 컨테이너 연결)
- 외부 연동: 네이버 커머스 API, 카페24 API, Google Sheets
- Frontend: Jinja2 템플릿 + Vanilla JS
사용 DB
| DB 이름 | 용도 |
|---|---|
itemcode_db |
품목코드 마스터 |
orderlist_db |
주문 정보 조회 |
return_db |
반품 데이터 저장 |
모두 DB 계정은 king 통일.
서버 배포 절차 (/opt/dbx-corm)
1. 코드 받기
sudo mkdir -p /opt/dbx-corm
sudo chown $USER:$USER /opt/dbx-corm
cd /opt
git clone https://gitea.no1king.freeddns.org/king/dbx-corm.git
cd /opt/dbx-corm
2. 환경변수 설정
cp .env.example .env
nano .env
.env 파일에 다음을 채워주세요:
POSTGRES_PASSWORD(DB 비밀번호)POSTGRES_HOST(PostgreSQL 컨테이너 이름. 아래로 확인)NAVER_CLIENT_ID,NAVER_CLIENT_SECRETCAFE24_CLIENT_ID,CAFE24_CLIENT_SECRET,CAFE24_REDIRECT_URI
PostgreSQL 컨테이너 이름 확인:
docker ps --filter "ancestor=postgres" --format "{{.Names}}"
3. PostgreSQL 네트워크 확인 / 수정
docker network ls | grep postgres
docker-compose.yml의 networks.postgres-net.name 값을 실제 네트워크 이름으로 수정.
4. 민감 파일 업로드 (Git에 없음)
로컬 PC에서 서버로 직접 복사:
# 로컬 PC에서 실행
scp cafe24_tokens.json king@<서버>:/opt/dbx-corm/
scp manual-ordering.json king@<서버>:/opt/dbx-corm/
5. 빌드 및 실행
cd /opt/dbx-corm
docker compose up -d --build
6. 상태 확인
docker compose ps
docker compose logs -f
업데이트 (Git pull 후 재배포)
cd /opt/dbx-corm
git pull
docker compose up -d --build
접속
- 컨테이너 포트:
8002 - 호스트 포트:
8002 - 헬스체크:
http://<서버>:8002/
Nginx Proxy Manager 등을 사용한다면 <서버>:8002로 프록시 설정.
로컬 개발 (Windows)
python -m venv venv
venv\Scripts\activate
pip install -r requirements.txt
copy .env.example .env
:: .env 편집
python main.py
Gitea 푸시 (Windows)
리포지토리에 변경사항을 올릴 때:
push_to_gitea.bat
스크립트가 변경사항 확인 → 커밋 메시지 입력 → push 자동 수행.
주의사항
.env,cafe24_tokens.json,manual-ordering.json등 민감 파일은 절대 Git에 올리지 마세요..gitignore에 자동 제외 설정되어 있습니다.- DB 이름은 반드시
orderlist_db를 사용 (예전 이름orderlist_app사용 금지).
Description
Languages
JavaScript
42.9%
Python
27.2%
HTML
23%
CSS
6.2%
Batchfile
0.5%
Other
0.2%