はじめに
個人のPalworldサーバーを構築した記録
とりあえず構築から常時稼働状態までもっていく。
背景
- ローカルワールドの招待制だと4人までしかプレイできない。
- 手軽だが、鯖主は1人プレイの同じデータで遊べるけど、ゲストは初期データから始めなければいけないのがネック。
- 鯖主だけレベル高い世界みたいなことができやすい?
なので、専用サーバーなら、32人までプレイできるし、フェアにいつでもアクセスできるようにしたかったので構築してみた。
構築概要
AzureでLinuxの仮想マシンを用意して、そこにPalworldサーバーを構築する。
見積り
まず要求スペックを確認。
https://tech.palworldgame.com/dedicated-server-guide
公式マニュアルを参考すると、
- CPU:4コア
- メモリ:16GB
あればいいらしい。
(リリース日は8GBってなってたけど、次の日みたら16GBになってた。ドキュメント更新対応早くてありがたいです。ってかアーリーアクセス時点でこっち系のドキュメントまで整備されているのマジで凄いです。)
予算は月8000円くらいでできるといいなーと思いつつAzureで見積り。
VirtualMachineは、ワークロードの例としてゲームサーバーの記載があったので、D系のシリーズを使うことにします。(D***の細かい文字列は知らん)
スポットVMを使用して価格を抑えます。
Azure料金計算だとスポットのシミュレーションは入っていないっぽいので、正規の値段からスポット価格表を照らし合わせてざっくり計算します。
ストレージはSSDの32GBにしてみた。
130$くらいだから、今の円だとおおよそ1.5倍で2万?
スポットの割引を確認して90%の節約らしいから10分の1で月2000円。
え、安くね?
しかも夜にしか稼働しない予定なので、もっと安く済むかも・・・?
地域は割引考えると近くてもいいと判断し、日本にする。
下記の環境を構築する予定
- Azure料金計算ツール https://azure.microsoft.com/ja-jp/pricing/calculator/
- VirtualMachineのシリーズ https://azure.microsoft.com/ja-jp/pricing/details/virtual-machines/series/
- Azure Spot Virtual Machinesの価格 https://azure.microsoft.com/ja-jp/pricing/spot-advisor/#pricing
構築作業
Azureの管理ページを開いて、Virtual Machines→
作成→Azure仮想マシン
- プロジェクトの詳細
- サブスクリプション:従量課金
- リソースグループ:<任意のグループ名>
- インスタンスの詳細
- 仮想マシン名:<任意の名前>
- 地域:(Asia Pacific)Japan East
- 可用性オプション:インフラストラクチャ冗長は必要ありません。
- セキュリティの種類:トラステッド起動の仮想マシン
- イメージ:Ubuntru
- アーキテクチャ:x64
- AzureSpot割引を実行する:チェック
- サイズ:任意のスペックを選択
ここはvCPUのコア数が3までしか選択できなくて、4にするためには、クォータ要求をする必要があった。
任意のVMサイズを選んでクォータ要求を送信する。
自分の場合は10分くらいですぐ承認された。
(*筆者は見積と同じVMサイズは選択していない。)
- 管理者アカウント
- 今回はSSH鍵認証で
- 受信ポートの規則
- パブリック受信ポート:選択したポートで接続する
- SSH(22)
- ディスク
- ネットワーク
- 管理
- 自動シャットダウン:チェック
- 夜更かし防止にテキトーに深夜の時間に設定
- 自動シャットダウン:チェック
- 監視
- アラート:チェック
- 自動シャットダウンの通知確認用
- アラート:チェック
認証をSSHにしたので秘密鍵は忘れずにダウンロードしておく。
これで作成完了
設定(Azure側)
ポート設定
Palworld公式マニュアルより、ポート番号8211を開放します。
仮想マシンのネットワーク設定画面へ進み、ネットワーク設定を行う。
先ほど作成されたネットワークセキュリティグループのポートルールの作成(受信)
DNS名設定
仮想マシンの作成と一緒に作成された、パブリックIPアドレスの画面へ遷移→構成
DNS名ラベル(オプション)に任意の名前を設定。
「xxxxxx.japaneast.cloudapp.azure.com」のxxxxxxの部分の名前が付けられます。
これでOK
設定(仮想マシン側)
Azure側で仮想マシンを開始しておく。
任意のターミナルソフトでSSH接続し、秘密鍵でログイン。(私はTeraTermを使用)
初期設定
ルートユーザになって、システムを最新にしてみる。
$ sudo -s # apt update # apt -y upgrade
導入作業
ここからは、またPalworld公式マニュアルを参考に導入していく。
SteamCMDの導入
- 公式手順
https://developer.valvesoftware.com/wiki/SteamCMD#Linux
steamユーザを用意する
sudoも使えるようにしておきます。
$ sudo useradd -m steam $ sudo passwd steam $ sudo usermod -G sudo steam
SteamCMDのインストール(今回はリポジトリから導入)
$ sudo -u steam -s $ cd /home/steam $ sudo add-apt-repository multiverse; sudo dpkg --add-architecture i386; sudo apt update $ sudo apt install steamcmd
steamcmdコマンドが使用できるようになります。
専用サーバーのダウンロードと準備
公式マニュアルの手順に戻り、進めていく。
専用サーバーのダウンロード
$ steamcmd +login anonymous +app_update 2394010 validate +quit
ダウンロード先のディレクトリは下記のはず
「/home/steam/.steam/SteamApps/common/PalServer/」
一度、サーバー起動スクリプトを実行する。
$ cd ~/.steam/SteamApps/common/PalServer/ $ ./PalServer.sh
ライブラリファイルがないと言われてエラーが出るので、指定の場所にコピーします。
$ mkdir -p ~/.steam/sdk64/ $ steamcmd +login anonymous +app_update 1007 +quit $ cp ~/.steam/SteamApps/common/Steamworks\ SDK\ Redist/linux64/steamclient.so ~/.steam/sdk64/
再度サーバースクリプトを実行して確認。
$ ./PalServer.sh
起動時に1度エラーが表示され、.steam/sdk64/steamclient.so OK. (First tried local 'steamclient.so')
が表示されることを確認できれば、完了。
動作確認
Palworldを起動して、「マルチプレイに参加する(専用サーバー)」を選択
画面中央下の入力バーに接続先をポート番号付きで入力して接続。
xxxxxx.japaneast.cloudapp.azure.com:8211
キャラ作成画面が表示されれば成功!
楽しんで。
おわりに
これで、いつでも遊びたいときに入って抜けれる環境が構築できた。
引き続き、サーバーの稼働時間の調整や、このワールドの設定やコマンドなどを使ってカスタマイズしていこうと思う。