【GCP/Linux】GCEに話題のパルワールド(Palworld)の専用サーバー(Dedicated Server)を構築してみた
概要
今回は現在、話題になっているパルワールド(palworld)の専用サーバーをGCPのGoogle Compute Engineに構築する方法を紹介します。少々マニアックな内容にはなりますが、最後までお付き合いいただけると幸いです。
はじめに
本記事ではパルワールド(palworld)の専用サーバーをGCPのGoogle Compute Engineに構築する方法を紹介しています。バージョンや環境依存によって正常に動作しない可能性はあります。実装の一例であることをご理解の上、参考にしていただけると幸いです。
サーバーの構成
まず、どの程度のサーバースペックが必要かですが、現状パルワールドはメモリーの使用量が多くなり傾向があり、同時接続するユーザー数に比例して要求されるメモリー容量も増やす必要があります。以下は筆者が3人ほどでマルチをした際に安定稼働した構成になります。10人以上だと最低でも32GB以上はないと厳しいと感じます。
- | スペック | 補足 |
---|---|---|
マシン | E2 | 比較的低コストで構築できるマシン構成 |
OS | Ubuntu | - |
CPU | 2コア | 公式推奨は4コア以上ですが、2コアでも問題なく動作しています |
Memory | 16GB | 2~4人マルチだと最低でも8GBはないと安定しません |
HDD | 30GB | サーバー自体の容量は大きくないので、そこまで大きめなストレージは必要ないです |
Region | asia-northeast1(東京) | 物理的に近いサーバーのほうが通信が安定しますが、コストも上がります |
サーバーの費用
GCEの料金はサーバーの起動時間で課金されます。サーバースペックなどで単価が異なるため、構築前にGoogle Cloud 料金計算ツールで見積もりをすることをおすすめします。
GCEの新規インスタンスを作成
インスタンスを作成する
以下のページにアクセスしてGCEのインスタンスを作成します。作成するプロジェクトを間違えないよう注意してください。
各種情報を入力する
設定できる項目が非常に多数ありますが、今回設定すべきところは以下の通りです。
項目 | 値 | 補足 |
---|---|---|
名前 | 任意の名前を入力 | 特に指定などはありませんが、名前からなんのサーバーか分かるようにしておくといいと思います |
マシン構成 | E2 | サーバーに同時接続するユーザー数などで調整してください |
マシンタイプ | e2-medium(4 vCPU、2コア、16GBメモリ) | サーバーに同時接続するユーザー数などで調整してください |
ブートディスク | OS:Ubuntu、バージョン:LTS、ブートディスクの種類:バランス永続ディスク、サイズ(GB):10 | OS以外はデフォルトで問題ありません |
上記を設定できたら画面右側に表示されている月間予測の金額を確認します。実際には別機能で少しプラスされるため、ここで確認できるのはあくまでサーバー費用のみになります。費用を確認して問題なければ、ページ下部にある「作成」をクリックします。
インスタンス作成画面のスクリーンショット
初期設定
Cloud ShellからSSH接続する
Google Cloud SDKに内包されているgcloudを使ってローカル環境からアクセスすることも可能ですが、普段GCPを使っていない人は導入していないと思いますので、今回はGCPにあるCloud Shellを使用してSSH接続していきます。
今回はCloud Shellの説明は省略するので、詳しく知りたい方は以下のサイトをご参照ください。
Cloud Shellを起動させる
こちらページから先程作成したインスタンスをクリックして管理ページに移動します。移動後、画面上部にある「SSH」ボタン横にある下矢印をクリックし、「gcloudコマンドを表示」をクリックします。ポップアップが表示されたら下部にある「CLOUD SHELLで実行」をクリックするとShellが起動します。
SSH接続する
上記で起動させるとコマンドライン上に以下が表示されていると思いますので、Enterを押します。
$ gcloud compute ssh --zone "{{ リージョン名 }}" "{{ インスタンス名 }}" --project "{{ プロジェクトID }}"
「Cloud Shellの承認」のポップアップが表示されると思いますので、承認します。承認後、コマンドラインが以下の表示になっていればSSH接続完了です。
{{ ユーザーID }}@{{ インスタンス名 }}:~$
ユーザーを追加する
SSH接続できたら次は実行するユーザーを作成していきます。ユーザーの新規作成は以下のコマンドを実行します。
ユーザーを新規作成
以下のコマンドを実行することで「palworld」というユーザーを作成できます。ユーザー名は任意で変更しても問題ないですが、以降のコマンドで使用していくため、そちらも適宜変更してもらう必要があります。
$ sudo useradd -m palworld
パスワードを設定する
追加したユーザーのパスワードを設定します。
$ sudo passwd palworld
権限を付与する
追加したユーザーにsudoの実行権限を付与します。
$ sudo usermod --append --groups sudo palworld
ユーザーを切り替える
以下のコマンドを実行して追加したユーザーに切り替えます。
$ sudo -u palworld -s
$ cd
SteamCMDを導入
実行環境の確認
実行前にユーザーが切り替わっているか、rootディレクトリに移動してあるか確認してください。コマンドライン上が以下のような表示であれば問題ありません。
palworld@{{ インスタンス名 }}:~$
インストールコマンドを実行する
確認できたら公式サイトにあるコマンドを順番に実行していきます。途中パスワードの入力が求められるので、先程設定したパスワードを入力します。
$ sudo add-apt-repository multiverse; sudo dpkg --add-architecture i386; sudo apt update
以下のコマンド実行すると途中で、規約の同意可否などを求めれるので、内容を確認してOK or AGREEを選択します。
$ sudo apt install steamcmd
パスを通す
インストール完了後に/usr/games
にパスを通します。.bash_profileをviで編集していきます。viの使い方はここでは解説しませんので、ご了承ください。
$ vi .bash_profile
viが起動したら以下の内容を追記して保存します。
export PATH="$PATH:/usr/games"
保存後に変更内容を反映させるために以下のコマンドを実行します。
$ source .bash_profile
SteamCMDが実行できるか確認
以下のコマンドを実行してインストールできたか確認していきます。実行後にSteam>
の表示がでていれば成功です。
$ steamcmd
# steamcmdから出る際は以下のコマンドを実行
$ quit
Palworld Dedicated Serverのインストール
下準備を終えたのでようやくパルワールドのサーバーをインストールしていきます。インストール自体は以下のコマンドを実行するだけで完了します。ただ時間が少しかかるので、ここでコーヒーでも飲んで一服しましょう。
$ steamcmd +login anonymous +app_update 2394010 validate +quit
サーバーを起動できるか確認
以下のコマンドを実行してサーバーが起動できるか検証してみます。
$ cd .steam/SteamApps/common/PalServer/
$ ./PalServer.sh
恐らくですが、/home/palworld/.steam/sdk64/steamclient.so
というエラーが複数表示され正常に動作しないと思います。なので、まず以下のコマンドでこの問題を解消します。
$ cd
$ mkdir -p ~/.steam/sdk64/
$ ln -s ~/.steam/SteamApps/common/PalServer/linux64/steamclient.so ~/.steam/sdk64/steamclient.so
問題解消後に再度サーバー起動のコマンドを実行して以下のような表示がでていれば成功です。
[S_API FAIL] Tried to access Steam interface SteamUser021 before SteamAPI_Init succeeded.
[S_API FAIL] Tried to access Steam interface SteamFriends017 before SteamAPI_Init succeeded.
[S_API FAIL] Tried to access Steam interface STEAMAPPS_INTERFACE_VERSION008 before SteamAPI_Init succeeded.
[S_API FAIL] Tried to access Steam interface SteamNetworkingUtils004 before SteamAPI_Init succeeded.
ファイアウォール設定
コマンドラインでの作業はここで一段落したので、次にファイアウォール設定をしていきます。パルワールドはデフォルトのポート番号が「8211」ですが、初期設定では閉鎖されているので、ファイアウォール設定を変更して開放する必要があります。
ルールを追加する
以下のページにアクセスしてファイアウォールルールを追加します。
上部にある「ファイアウォールルールを作成」をクリックして追加します。以下の項目を設定します。
項目 | 値 | 補足 |
---|---|---|
名前 | 任意の名前を入力 | 特に指定などはありませんので任意の名前で大丈夫です。 |
ターゲットタグ | palworld | 特に命名規則ないですが、これでインスタンスと紐付けるため、分かりやすい命名にしておくと良いと思います。 |
送信元IPv4範囲 | 0.0.0.0/0 | - |
UDP | 8211 | - |
インスタンスと紐付ける
インスタンスの設定ページに移動して、上部の「編集」をクリックしてネットワークタグの項目に「ターゲットタグ」で設定したタグを設定します。
ゲームからサーバーにアクセス
これで最低限の準備はできたので、一旦ゲームからアクセスできるか検証してみます。ゲームからアクセスする際は「マルチプレイに参加する(専用サーバー)」を選択して、下部にあるIPアドレス入力欄にGCEインスタンスのIPアドレスを入力します。GCEインスタンスのIPアドレスは以下のページの外部IPの項目で確認することができます。
アクセスしてみてキャラ作成画面が表示されれば成功です。ただこのままだと毎回SSH接続してサーバーを手動で起動させる必要があり、やや面倒なのでサーバー起動時に自動でパルワールドサーバーも立ち上がるように設定しましょう。ただ今回は少し長くなってしまっているので、こちら方法やサーバーの設定変更などに関しては近日まとめますので、気長にお待ちください🙏
まとめ
今回は現在、話題になっているパルワールド(palworld)の専用サーバーをGCPのGoogle Compute Engineに構築する方法を紹介しました。比較的運用コストも抑えることができると思いますので、ぜひ参考にしていただければと思います。
本記事を最後まで読んで頂き、ありがとうございました。いいねしていただけると記事執筆の励みになりますので、参考になったと思った方は是非よろしくお願いします!
参考記事
Discussion
GCPの勉強で無知識でトライしていましたがうまく行かず・・・拝見して試してみたら無事起動できました。ありがとうございました!