# 설치와 테스트 준비


첫 활성화를 실행하기 전에 SDK와 제품 정보, 테스트 고객을 준비해요. 각 입력을 어디서 얻고 어떤 정보는 앱이 보관해야 하는지 알아보세요.

## 1. 언어에 맞는 패키지를 설치하세요

| SDK | 패키지 | 설치·실행 안내 |
|---|---|---|
| Node | `@signox/sdk@0.3.1` | [Node SDK](/sdk/node/) |
| Java | `kr.signox:signox-sdk:0.3.1-SNAPSHOT` | [Java SDK](/sdk/java/) |
| C# | `Signox.Sdk 0.3.1` | [C# SDK](/sdk/csharp/) |
| Python | `signox-sdk 0.3.1` | [Python SDK](/sdk/python/) |

앱 프로젝트 디렉터리에서 언어별 가이드의 설치 명령을 실행하세요. 사용하는 환경에 설정된 패키지 저장소를 사용해요. 패키지를 찾지 못하면 앱 코드를 바꾸기 전에 이름·버전·저장소 접근을 확인하세요.

SDK 패키지에는 기본 장치 실행 모듈이 들어 있어요. 샘플은 SDK를 의존성으로 사용하는 별도 소스 프로젝트예요. 샘플 ZIP만 내려받으면 SDK까지 설치되는 것은 아니에요.

## 2. 제품 ID와 공개키를 확인하세요

벤더 대시보드에서 라이센스로 보호할 제품을 여세요. 제품 상세 주소에 있는 UUID가 productId예요. 제품 설정에서 제품 공개키(SPKI PEM)를 복사하거나 내려받고 예제 프로젝트의 product-public-key.pem으로 저장하세요.

공개키는 서버 응답의 서명을 확인하는 데 사용해요. 서버 비밀키는 앱에 포함하면 안 돼요. 신뢰하는 앱 배포물에 올바른 제품 공개키를 고정하세요. 다른 제품의 공개키로는 이 제품의 응답을 검증할 수 없어요.

## 3. 테스트 고객의 라이센스를 준비하세요

제품 정책에 demo_export 불리언 기능을 추가하고 켜세요. 해당 정책으로 테스트 라이센스를 발급한 뒤 고객 포털에서 테스트 고객 계정에 구매 키를 등록하세요. 앱은 승인 과정에서 고객이 이 라이센스를 선택하도록 안내해요.

기능 거부도 확인하려면 demo_export가 없는 유효한 라이센스를 하나 더 준비하세요. 벤더 계정은 제품·정책을 관리하고 고객 계정은 라이센스를 소유·승인해요. 두 계정은 로그인 영역이 달라요.

## 4. 예제 입력을 설정하세요

| 입력 | 설정할 값 |
|---|---|
| `SIGNOX_API_URL` | 대상 환경의 API 주소예요. 포털 주소를 넣지 마세요. |
| `SIGNOX_PRODUCT_ID` | 2단계에서 확인한 제품 UUID예요. |
| `SIGNOX_PUBLIC_KEY_FILE` | product-public-key.pem 파일의 경로예요. |
| `SIGNOX_STATE_DIR` | 이 설치만 사용하는 쓰기 가능한 영속 디렉터리예요. 전체 샘플에서 사용해요. |

앱을 실행할 셸이나 서비스 설정에 값을 넣으세요. SDK의 단일 파일 예제는 .signox-state를 사용해요. 앱 재시작·컨테이너 재생성 후에도 같은 위치를 유지하세요. 이미 생성한 상태 디렉터리를 공통 이미지나 소스 저장소에 넣지 마세요.

## 5. 첫 활성화를 실행하세요

빠른 시작에서 start → 고객 브라우저 승인 → poll → 기능 검증을 연결하세요. 연결되지 않은 기기를 시험하려면 지원 실행 환경과 운영자의 기기 신뢰 등록도 먼저 준비해야 해요.

[첫 고객 활성화 실행하기](/start/quickstart/) · [오프라인 실행 환경 확인하기](/guides/activation-offline/)
