> ## 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.

# Linux Unreal サーバーの MPS クラウドへのデプロイ

> Unreal Engine 5 の Linux 専用サーバーをビルドして PlayFab Multiplayer Servers (MPS) にデプロイします。Windows からのクロスコンパイルおよび UE 4.26 または 4.27 に関する注記も含みます。

# PlayFab での Linux 専用サーバーのセットアップ

このガイドの目的は、Linux 専用サーバーをビルドして検証するために必要なすべての手順を説明することです。以下の手順は、Unreal Engine 5 (Early Access と正式リリースの両方) 固有のものです。同じ一連の手順は UE 4.26 と UE 4.27 でもテストされ適用可能ですが、Unreal Engine UI 上のパッケージオプションの場所に関するわずかな相違点があります (UE 4.27 と UE5 Early Access では異なります)。

より詳細な Linux デプロイ情報は [こちら](https://github.com/PlayFab/MpsAgent/blob/main/LocalMultiplayerAgent/MultiplayerSettingsLinuxContainersOnWindowsSample.json) で確認できます。

## 要件

* [Unreal Linux 前提条件](https://docs.unrealengine.com/SharingAndReleasing/Linux/GettingStarted/) をインストールします
* [Docker for Windows](https://docs.docker.com/desktop/windows/install/) をインストールします

## 手順

* **Unreal Linux 前提条件** から、インストールされている Unreal Engine 用のツールチェーンをダウンロードし、実行可能ファイルを実行します。これらのガイドの多くの部分と同様、これらの手順は Unreal Engine がソースからビルドされている場合にのみ機能することに注意してください。
  * インストールが完了したら、Windows の環境変数を調べて、以下のシステム変数が存在することを確認します: **LINUX\_MULTIARCH\_ROOT**。
* Unreal Engine のソースディレクトリで:
  * 再実行: `Setup.bat`
  * 再実行: `GenerateProjectFiles.bat`
* 自分のプロジェクトに戻ります:
  * `{ProjectName}.uproject` ファイルを右クリックし、**Generate Visual Studio project files** を選択します
  * Visual Studio で \{ProjectName}.sln ファイルを開きます
  * 構成を **Development Editor** に設定します
  * Unreal Editor をビルドおよび実行します
* この時点で、プロジェクトを任意のディレクトリに Linux サーバー用にパッケージ化できるはずです。
  * Unreal Engine 5 の場合、Editor で画面右上のパッケージオプションを選択すると、Linux オプションが選択可能になっているはずです。UE 4.26 と UE 4.27 の場合、パッケージオプションは File タブの下にあります。
  * Server と Shipping の構成を確認し、**Linux** をビルド対象として選択し、出力ディレクトリを選択します。

## Linux サーバーの Docker イメージを作成する

このセクションでは、Linux サーバーを含む Docker イメージをセットアップします。

* Linux サーバーを作成したので、そのディレクトリに移動します (Windows エクスプローラー、または任意のターミナル)
* 次の名前で新しいファイルを作成します: `Dockerfile`
* 任意のエディタ (notepad、vim、emacs など) でファイルを編集します
* 以下に示す内容をコピー＆ペーストします。\[YourProjectNameServer].sh を、実際の Linux サーバー実行ファイルの名前 (同じディレクトリ内) に置き換えてください

```Docker theme={null}
FROM ubuntu:18.04

# Unreal refuses to run as root user, so we must create a user to run as
# Docker uses root by default
RUN useradd --system ue
USER ue

EXPOSE 7777/udp

WORKDIR /server

COPY --chown=ue:ue . /server
USER root
CMD chown -R ue.ue $PF_SERVER_LOG_DIRECTORY && su ue -c ./YourGameNameServer.sh
```

注: **chown** コマンドは \$PF\_SERVER\_LOG\_DIRECTORY をサーバープロセスからアクセス可能に修正し、その後 && でチェーンしてサーバーを実行します。

* 任意のターミナルを使用して、Linux サーバーディレクトリに移動します
  * Windows ユーザーは通常 cmd または powershell を使用しますが、サードパーティツールまたは WSL 経由の bash も利用可能です
  * Mac と Linux のユーザーは通常 bash を使用します
* `docker build -t "[imageName]:[tag]" .` を実行します。imageName と tag は任意のオプションです。
  * これらの名前は後で再度使用するので覚えておいてください
  * 例としては、それぞれ **YourProjectNameServer** と **01** が挙げられます
  * **tag** 要素は通常、サーバーインスタンスのバージョン管理に使用されます
  * これらのタグは後の手順で使用されます
  * 忘れた場合はターミナルで **docker images** と入力して imageName と tag を取得できます
* ターミナルで **docker images** と入力し、docker イメージが正常に作成されたことを確認します。
* このターミナルウィンドウは開いたままにして脇に置いてください。後でさらにコマンドを実行します
  * (後の手順では \[Docker terminal] と表記)

## PlayFab Azure レジストリにコンテナイメージをアップロードする

この時点で、docker イメージを PlayFab Azure Container Registry にプッシュして、PlayFab 上でビルドの起動に使用できる状態になっています。

* [PlayFab 開発者ポータル](https://developer.playfab.com/) に移動します
* タイトルを選択します
* 左側の **Multiplayer** タブを選択します
* 画面右側の **New Build** を選択します。
* 名前を選択します
* VM タイプを選択します。ThirdPersonMP プロジェクトの場合、**Dasv4 (2 cores)** で十分です
* Server Details で、Server Type を **Container**、Operating System を **Linux** に設定します。
* **Upload to container registry** を選択します。
* 表示されるウィンドウで:
  * このウィンドウから \[AzureUsername] を覚えておいてください。次の手順で複数回使用します
  * **Copy Docker Login Command** を選択します
* \{Docker terminal} ウィンドウに戻ります
  * Docker Login コマンドを \[Docker terminal] に貼り付けます。このコマンドは、PlayFab で使用される Azure Registry にログインします。
  * 入力: `docker tag [imageName]:[tag] [AzureUsername].azurecr.io/[imageName]:[tag]`
  * 入力: `docker push [AzureUsername].azurecr.io/[imageName]:[tag]`
  * AzureUsername は PlayFab 開発者ポータルに表示され、imageName と tag は前に自分で選択したものです。
* PlayFab の Web サイトに戻り、New Build ページの Server Details で、Container image の横にある Refresh を選択します。
* 矢印ボタンをクリックすると、アップロードした docker イメージと該当タグを確認して選択できるはずです。
* Regions ブロックで、近くのリージョンを選択し、Standby と Max の両方を 1 に設定します (テストのため)
* Network ブロックで、Port Name フィールドを `gameport` に設定します
  * ゲームサーバーへの接続に使用するポートを定義することは必須です
  * Unreal GSDK には、このポートを自動的に読み取り、この値に従って Unreal サーバーのホストポートを内部的にオーバーライドするコードが含まれています
  * このポートの名前は `gameport` である必要があります
* **Add Build** を選択し、ビルドステータスが **Deployed** になるのを待ちます

## 次のステップ

多くのユーザーは [ゲームクライアントを接続する](/services/playfab/multiplayer/servers/server-sdks/unreal-gsdk/connect-to-mps-hosted-build) ことでサーバーをテストしたいと考えるでしょう。

そうでなければ、メインの [Unreal GSDK Plugin](/services/playfab/multiplayer/servers/server-sdks/unreal-gsdk) ガイドに戻ることもできます。


## Related topics

- [GSDK プロジェクトのクラウドデプロイメント](/ja-jp/services/playfab/multiplayer/servers/server-sdks/unreal-gsdk/third-person-mp-example-project-cloud-deployment.md)
- [PlayFab Unreal GSDK プラグインの概要](/ja-jp/services/playfab/multiplayer/servers/server-sdks/unreal-gsdk/index.md)
- [クラウドホスト型 Unreal サーバーへの接続](/ja-jp/services/playfab/multiplayer/servers/server-sdks/unreal-gsdk/connect-to-mps-hosted-build.md)
- [PowerShell/API を使用したビルドのデプロイ](/ja-jp/services/playfab/multiplayer/servers/deploy-using-powershell-api.md)
- [GSDK プロジェクトのテストとデバッグ](/ja-jp/services/playfab/multiplayer/servers/server-sdks/unreal-gsdk/third-person-mp-example-project-local-deployment-and-debugging.md)
