> ## Documentation Index
> Fetch the complete documentation index at: https://devdocs.xbox.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Serve 명령

> Serve 명령

`serve` 명령은 검증 경험을 위해 지정된 레이아웃을 CTA에서 사용할 수 있도록 만드는 데 사용됩니다.

패키지된 터치 적응 번들(`pack` 명령으로 생성된)을 제공하거나 패키지되지 않은 레이아웃 세트를 제공하세요.

다음 표는 `serve` 명령과 함께 사용할 수 있는 다양한 옵션을 보여줍니다.

| 옵션 | 설명 |
| - | - |
| `--takx`, `--takx-file <takx-file>` | 제공할 터치 적응 번들의 경로. 이 매개 변수 또는 `--layout-path` 또는 `--takxconfig` 매개 변수 중 하나가 필요합니다. |
| `--takxconfig`, `--takx-config-file <takx-config-file>` | 제공할 번들을 나타내는 `takxconfig.json` 파일의 경로. 이 매개 변수 또는 `--layout-path` 또는 `--takx` 매개 변수 중 하나가 필요합니다. |
| `--layout-path <layout-path>` | 제공되는 번들에 포함할 루트 레이아웃 디렉터리 경로. 이 매개 변수 또는 `--takx-file` 또는 `--takxconfig` 매개 변수 중 하나가 필요합니다. `--takxconfig`가 지정되면 이 인수는 `takxconfig.json` 파일에 지정된 경로를 재정의합니다. |
| `--asset-path <asset-path>` | 제공되는 번들에 포함할 루트 자산 디렉터리 경로. 번들에 자산이 없는 경우 이 매개 변수는 필요하지 않습니다. `--takxconfig`가 지정되면 이 인수는 `takxconfig.json` 파일에 지정된 경로를 재정의합니다. |
| `--context file <context-file>` | 번들에 포함할 컨텍스트 파일 경로. 번들에 컨텍스트가 없는 경우 이 매개 변수는 필요하지 않습니다. `--takxconfig`가 지정되면 이 인수는 `takxconfig.json` 파일에 지정된 경로를 재정의합니다. |
| `--default-layout <default-layout>` | 기본 레이아웃의 이름. 레이아웃 경로에 있는 파일 중 하나의 이름과 일치해야 합니다. `--takxconfig`가 지정되면 이 인수는 `takxconfig.json` 파일에 지정된 기본값을 재정의합니다. |
| `--version <version>` | 1.0.0.0과 같은 터치 적응 번들의 콘텐츠 버전. 타이틀에 대해 Microsoft에 제출된 각 터치 적응 번들은 이전에 제출한 어떤 터치 적응 번들보다 의미론적으로 큰 버전 번호를 가져야 합니다. 게임 스트리밍 중 사용 중인 터치 적응 번들의 버전 번호는 [XGameStreamingGetTouchBundleVersion](https://devdocs.xbox.com/ko/reference/system/xgamestreaming/functions/xgamestreaminggettouchbundleversion.md)을 호출하여 얻을 수 있습니다. `--takxconfig`가 지정되면 이 인수는 `takxconfig.json` 파일에 지정된 버전을 재정의합니다. |
| `--version-name <version-name>` | "DLC 1"과 같은 터치 적응 번들의 콘텐츠 버전 이름. 버전 번호와 달리 버전 이름은 선택 사항이며 형식에 대한 요구 사항은 없습니다. 게임 스트리밍 중 사용 중인 터치 적응 번들의 버전 이름은 [XGameStreamingGetTouchBundleVersion](https://devdocs.xbox.com/ko/reference/system/xgamestreaming/functions/xgamestreaminggettouchbundleversion.md)을 호출하여 얻을 수 있습니다. `--takxconfig`가 지정되면 이 인수는 `takxconfig.json` 파일에 지정된 버전 이름을 재정의합니다. |
| `--no-asset-optimization` | 효율적인 저장 및 통신을 위해 자산이 최적화되지 않도록 합니다. 설정된 경우 자산은 수정되지 않습니다. |
| `--no-verify` | 생성된 터치 적응 번들이 유효하고 검증되지 않는지 확인합니다. |
| `--language <language>` | 제공된 번들에 포함할 언어의 IETF 언어 태그. 이 매개 변수가 여러 번 지정되면 제공된 모든 언어가 포함됩니다. 매개 변수가 지정되지 않은 경우 소스 디렉터리에서 찾은 모든 레이아웃과 자산이 제공된 번들에 포함됩니다. `--takxconfig`가 지정되면 이 인수는 `takxconfig.json` 파일에 지정된 언어를 재정의합니다. |
| `--port <port>` | 터치 적응 번들을 제공할 포트. 기본 포트는 9269입니다. |
| `--host <host>` | 터치 적응 번들을 제공할 호스트. 기본 호스트는 `0.0.0.0`이며, 모든 네트워크 인터페이스에서 번들을 활성화합니다. 서버를 루프백으로만 활성화하려면 `localhost`를 사용하거나 서버를 사용할 수 있는 인터페이스를 제어하는 특정 IP를 사용하세요. |
| `--certificate-file <certificate-file>` | 보안 HTTPS 요청을 위해 서버를 인증하기 위한 .pfx 인증서 파일의 경로. 도구가 인증된 HTTPS 서버를 호스팅하려면 이 플래그가 필요합니다.  ⚠️ **참고:** [Web Content Test Application(CTA)](https://devdocs.xbox.com/ko/build/core-features/common/game-streaming/game-streaming-web-content-test-application.md)은 `https`와 이 옵션을 사용하는 원격 사이드로드 서버에만 연결할 수 있습니다. |
| `--certificate-password <certificate-password>` | 인증서 데이터에 액세스하는 데 필요한 암호. |
| `--password <password>` | 클라이언트를 인증하기 위한 암호. https를 통해 사이드로드할 때 터치 적응 번들에 대한 클라이언트 액세스를 제한하는 선택적 플래그입니다. 클라이언트를 성공적으로 인증하려면 제공된 암호가 클라이언트의 개발자 설정에 제공된 암호와 일치해야 합니다. |

### 보안 고려 사항

`serve` 명령은 로컬 개발용입니다. 반복 작업 중 스트리밍 클라이언트가 로드할 수 있도록 개발 PC에서 터치 적응 번들을 임시로 호스팅합니다. 공용 인터넷에 노출해서는 안 됩니다.

> [!NOTE]
>
> 시나리오에 맞는 가장 좁은 호스트 바인딩을 사용하세요.
>
> * 로컬 PC만 연결해야 하는 경우 `--host localhost`를 사용합니다.
> * 스트리밍 클라이언트가 하나의 알려진 로컬 네트워크 인터페이스를 통해 연결해야 하는 경우 `--host <specific IP address>`를 사용합니다.
> * 개발 PC의 모든 네트워크 인터페이스에서 수신 대기하려는 경우에만 `--host 0.0.0.0`을 사용하세요. 방화벽 및 네트워크 규칙이 허용하는 경우 동일한 네트워크의 다른 디바이스가 사이드로드 서버에 도달할 수 있습니다.
>
> 기본 HTTP 리스너는 활발히 반복 작업을 하는 동안 신뢰할 수 있는 로컬 사이드로드 세션에 허용됩니다. `localhost` 이상으로 바인딩하거나, 공유되거나 신뢰할 수 없는 네트워크를 사용하거나, 현재 테스트 패스보다 오래 서버에 도달 가능한 상태로 두어야 하는 경우 구성을 강화하세요. 이러한 경우, [인증서 생성 지침](#certificate-generation-instructions)에 설명된 대로 `--certificate-file`을 `--certificate-password`와 함께 사용하여 HTTPS를 사용하는 것이 좋습니다. 제공된 번들에 대한 클라이언트 액세스를 제한하려면 `--password`를 추가하세요.

`--password`를 사용할 때는 사이드로드 세션에 대한 값을 로컬로 선택하거나 생성하고 동일한 값을 클라이언트의 개발자 설정에 입력합니다. 암호는 해당 로컬 HTTPS 사이드로드 세션에 대한 액세스를 보호합니다. Microsoft는 이를 관리하거나 순환시키지 않습니다. 새 암호로 `tak serve`를 다시 시작하고 클라이언트 설정을 업데이트하여 순환합니다.

### 예제

호스트에서 터치 적응 번들을 제공하려면 다음 코드 예제를 사용하세요.

***

기본 포트와 호스트에서 layout-path의 모든 레이아웃을 제공하며 특정 버전/버전 이름 선언

```
C:\>tak serve --layout-path C:\tmp\layouts --version 1.0.0.2 --versionName DLC2
Verifying touch adaptation bundle 'C:\tmp\layouts'.
Now listening on: http://0.0.0.0:9269
Application started. Press Ctrl+C to shut down.
Hosting environment: Production
Content root path: C:\tmp
```

***

localhost에서만 지정된 터치 적응 번들 제공

```
C:\>tak serve --takx-file C:\tmp\MyGameLayouts.takx --host localhost
Now listening on: http://localhost:9269
Application started. Press Ctrl+C to shut down.
Hosting environment: Production
Content root path: C:\tmp
```

***

### 인증서 생성 지침

터치 번들을 사이드로드하기 위해 인증된 보안 서버를 호스팅하려면 인증서가 필요합니다. 적절한 SSL 인증서를 사용할 수 있지만, 아래 지침은 인증서도 생성합니다.

1. [XBOX Game Streaming Tools GitHub](https://github.com/microsoft/xbox-game-streaming-tools/blob/main/touch-adaptation-kit/scripts/Create-SelfSignedCertificate.ps1)에서 자체 서명된 인증서를 생성하는 스크립트를 얻으세요.

   a. 위의 링크로 이동하여 'raw'를 선택하고, 스크립트 내용을 복사하여 로컬 시스템의 문서에 붙여넣습니다.

   b. 또는 스크립트를 다운로드하기 위해 Powershell에서 다음 명령을 실행합니다.

```powershell theme={null}
    Invoke-WebRequest -Uri https://raw.githubusercontent.com/microsoft/xbox-game-streaming-tools/main/touch-adaptation-kit/scripts/Create-SelfSignedCertificate.ps1 -Out ./Create-SelfSignedCertificate.ps1
```

> [!NOTE]
>
> Create-SelfSignedCertificate.ps1 스크립트는 Windows에서만 작동합니다. 유효한 자체 서명된 인증서를 생성하는 도구가 다른 운영 체제에 존재할 수 있습니다.

2. Powershell에서 다운로드한 스크립트를 실행합니다.
3. 스크립트는 인증서를 보호하기 위한 암호를 요청합니다. 여기에 입력하여 암호를 설정합니다. 이 암호는 serve 명령의 -certificate-password 플래그에 대한 입력으로 사용됩니다.
   이는 `sideload.pfx`와 `sideload.cer` 두 개의 파일을 생성합니다. `sideload.pfx` 인증서 파일의 경로는 serve 명령의 -certificate-file 플래그에 대한 입력으로 전달됩니다.

### 다양한 클라이언트에서 인증서 신뢰

.cer 파일을 디바이스에 로드합니다. 이는 이메일, OneDrive, USB, ADB, AirDrop 등을 통해 수행할 수 있습니다. 해당 디바이스에 적합한 일반적인 방법으로 인증서를 신뢰하세요.

#### Windows

1. `sideload.cer` 파일을 두 번 클릭합니다.
2. 'Install Certificate'를 선택합니다. 이것은 인증서 가져오기 마법사를 엽니다.
3. Store 위치로 'Current User'를 선택합니다.
4. 다음 창에서 'Place all certificates in the following store'를 선택한 다음 'Browse for Trusted Root Certification Authorities'를 선택합니다.

#### Android

1. Android 디바이스에서 Settings > Security > Advanced > Encryption & credentials > Install from Storage로 이동합니다.
2. **CA certificate**를 선택하고 이전 섹션에서 다운로드한 `sideload.cer` 파일을 찾아 인증서를 설치합니다.

   설치되면 이 인증서는 Trusted Credentials > User에서 볼 수 있습니다.

자세한 내용은 [Google 문서](https://support.google.com/pixelphone/answer/2844832?hl=en)를 참조하세요.

#### iOS

1. iOS 디바이스의 Files 애플리케이션으로 이동하여 .cer 파일을 디바이스 프로필에 설치합니다.
2. .cer 파일의 프로필 이름을 기반으로 새 프로필이 생성됩니다. 이것은 Settings > General > Profiles & Device Management에서 찾을 수 있습니다.
3. 인증서를 설치합니다. 인증서 서명이 검증됨으로 표시되어야 합니다.
4. 설치된 인증서를 테스트하려면 Settings > General > About > Certificate Trust Settings로 이동합니다. 방금 설치한 루트 인증서에 대한 전체 신뢰를 활성화합니다.

자세한 내용은 [Apple 문서](https://support.apple.com/en-us/HT204477)를 참조하세요.

### 예제

호스트에서 터치 적응 번들을 안전하게 제공하려면 다음 코드 예제를 사용하세요.

***

기본 호스트와 포트에서 https를 통해 layout path의 모든 레이아웃 제공

```
C:\>  tak serve --layout-path C:\tmp\layouts --certificate-file C:\tmp\sideload.pfx --certificate-password "password"
Adding local loopback exemption for PC app connections.
OK.
Hosting starting
Now listening on: https://0.0.0.0:9269
Application started. Press Ctrl+C to shut down.
Hosting environment: Production
Content root path: C:\tmp
Hosting started
```

***

클라이언트를 인증한 후 기본 호스트와 포트에서 layout path의 모든 레이아웃을 안전하게 제공합니다.

```
C:\>  tak serve --layout-path C:\tmp\layouts --certificate-file C:\tmp\sideload.pfx --certificate-password "certificatePassword" -password "password"
Adding local loopback exemption for PC app connections.
OK.
Hosting starting
User profile is available. Using 'AppData\Local\ASP.NET\DataProtection-Keys' as key repository and Windows DPAPI to encrypt keys at rest.
Now listening on: https://0.0.0.0:9269
Application started. Press Ctrl+C to shut down.
Hosting environment: Production
```

***

## 참고 항목

[Touch Adaptation Kit 명령줄 도구(tak.exe)](https://devdocs.xbox.com/ko/build/core-features/common/game-streaming/tak-command-line-tool/game-streaming-tak-command-line.md)


## Related topics

- [Verify 명령](https://devdocs.xbox.com/ko/build/core-features/common/game-streaming/tak-command-line-tool/game-streaming-tak-command-line-verify-command.md)
- [Pack 명령](https://devdocs.xbox.com/ko/build/core-features/common/game-streaming/tak-command-line-tool/game-streaming-tak-command-line-pack-command.md)
- [Touch Adaptation Kit (TAK) 명령줄 도구 참고서](https://devdocs.xbox.com/ko/build/core-features/common/game-streaming/tak-command-line-tool/index.md)
- [Tak CLI를 사용하여 터치 컨트롤 레이아웃 배포](https://devdocs.xbox.com/ko/build/core-features/common/game-streaming/building-touch-layouts/game-streaming-touch-deploying-touch-layout.md)
- [Unpack 명령](https://devdocs.xbox.com/ko/build/core-features/common/game-streaming/tak-command-line-tool/game-streaming-tak-command-line-unpack-command.md)
