이 문서는 새 환경에 서버를 올리기 전에 반드시 준비해야 하는 항목을 정리합니다.
모든 단계는 x-api-key + X-CORPORATE-ID 기반 인증을 전제로 합니다.
deployedContracts, mintingOrders, transferOrders, metadata, corporateAccounts)를 모두 드롭합니다.docker compose down -v 후 up --build로 볼륨을 리셋해도 됩니다.corporateAccounts 컬렉션 생성
아래 필드는 최소로 필요합니다.
{
"corporateId": "corp-demo-001", // X-CORPORATE-ID 헤더 값
"corporateName": "Demo Corp",
"secretManagerKeyId": "arn:aws:secretsmanager:ap-northeast-2:123456789012:secret:/dapp/dev/corp/corp-demo-001/wallet",
"walletAddress": "0x....",
"walletLinkType": "DEDICATED",
"metadata": { "contact": "ops@example.com" },
"status": "ACTIVE"
}
주의:
corporateId는 UUID 등 예측 불가한 값으로 설정하고 Unique Index를 걸어둡니다.
mongosh 기반 자동화 스크립트를 사용할 수 있습니다.
chmod +x scripts/upsert_corporate_account.sh
./scripts/upsert_corporate_account.sh \
-u "mongodb+srv://admin:HzOckYOllX89dZof@dappmongodb.pug4qy8.mongodb.net/dapp_dev" \
-c 98297d12311a9e1442088fe7b18fe \
-n corp-dev-001 \
-w 0x80CD25A5c39b2DBEdFf23A4AF5C6e5DA332c2113 \
-s arn:aws:secretsmanager:ap-northeast-2:371711804553:secret:/dapp/dev/corp/corp-dev-001/wallet \
-d dapp_dev \
-M metadata.json 옵션으로 메타데이터 JSON을 같이 넣을 수 있습니다.corporateId 기준으로 upsert를 수행합니다.MinimalForwarder가 있다면 deployedContracts에 ercStandard: 'Forwarder', corporateId를 포함하여 저장합니다.POST /contracts/forwarder로 새로 배포 (헤더에 해당 기업의 x-api-key, X-CORPORATE-ID 필요).corporateAccounts.secretManagerKeyId에 저장한 값과 1:1 매칭되어야 합니다.secret:/dapp/{env}/corp/{corporateId}/wallet (예: /dapp/dev/corp/corp-dev-001/wallet, /dapp/prod/corp/corp-prod-001/wallet)aws CLI가 설정돼 있다면 아래 스크립트로 손쉽게 생성/업데이트 할 수 있습니다.
chmod +x scripts/create_corporate_secret.sh
./scripts/create_corporate_secret.sh \
-i /dapp/dev/corp/corp-dev-001/wallet \ # 신규 생성 시 "이름" 사용 (ARN 불가)
-K "0x533efa3d38ce7759fcfacf2872b252a2d36f3c96bb45c6c80813f35980f4875e" \
-p sinbumu -f
create-secret는 ARN을 받지 않으므로 반드시 이름(/dapp/dev/corp/corp-dev-001/wallet)을 사용합니다. 이후 업데이트 시에는 이름 또는 ARN 모두 사용 가능.-f 옵션을 추가합니다.-K 0x... 형태로 사용할 수 있습니다../scripts/create_corporate_secret.sh \
-i corp-demo-001 \
-k ./keys/corp-demo-001.pk \
-p miji-dev -f
arn:aws:secretsmanager:ap-northeast-2:371711804553:secret:/dapp/dev/corp/* (dev 예시)arn:aws:secretsmanager:ap-northeast-2:371711804553:secret:/dapp/prod/corp/* (prod 예시)aws:ResourceTag/env=dev|prod)을 추가해 교차 접근을 방지합니다..env에 AWS_ACCESS_KEY_ID, AWS_SECRET_ACCESS_KEY를 넣되, 테스트 Secret만 접근 가능한 최소 권한 키를 사용합니다..env에 blockchain.localDevPrivateKey를 넣으면 X-CORPORATE-ID 없이 테스트할 때 fallback 키로 사용됩니다.X-CORPORATE-ID를 보내야 하므로, 실제 호출 시에는 corporate 계정을 생성하는 것이 권장됩니다.필수 .env 항목:
| 키 | 설명 |
|---|---|
GLOBAL_SECRET_KEY |
x-api-key 목록 (쉼표 구분) |
NODE_ENV |
development / production |
CHAIN_RPC_URLS |
체인별 RPC (예: { "43113": "https://..." }) |
deployment.allowedChainIds |
허용 체인 목록 |
BLOCKCHAIN_PK_SECRET_ARN |
(Fallback) 시스템용 기본 Secret ARN (기업 ID 미지정 시 사용) |
forwarder.address |
Fallback Forwarder 주소 (DB/요청에 없을 때) |
COINGECKO_*, REDIS_*, DB_URI |
기존과 동일 |
pnpm install → pnpm --filter contracts build → pnpm --filter server buildpnpm --filter server lint && pnpm --filter server testdocker compose up --build (또는 ECS/쿠버네티스 배포)GET /health (Public)GET /status (헤더 필요)POST /contracts/read로 isTrustedForwarder 테스트 (x-api-key + X-CORPORATE-ID)corporateAccounts에 문서 추가POST /contracts/forwarder로 Forwarder 배포 → deployedContracts에 자동 기록corporateId가 불일치할 경우, API에서 403/404를 반환하므로 데이터 입력 시 주의.secretKeyId를 사용하므로, Queue가 초기화되면 다시 job을 넣어야 함.이 문서는 MVP 운영의 필수 baseline입니다. 추가 요구사항이 생기면 이 문서를 업데이트하세요.