Rocky Linux 9.1で構築するPalworld専用サーバーの建て方

By deruz3, 2024年1月31日

今回は今人気のゲーム、Palworldのゲームサーバー構築について書こうとおもいます。
CentOS7や8の更新が打ち切られるということで、CentOS系の派生であるRockyLinuxを導入してみた。

現在発売されてるPalworldは?
!結論 現在はクロスプレイができず、マルチするならSteam版を購入して下さい!
(2024年1月24日現在)
!発売されてるPalworldは大きくわけて2種類存在し、Steam版とXbox Game Pass版があります!
Steam版のみサーバーに接続でき、Xbox Game Pass版は招待コードを使用しアクセスする方法です!
Xbox Game Pass版は招待コード制で、マルチは4人までしかできません!

今回はその構築方法をLinux(RockyLinux)版で紹介する。

システム要求
CPU 2 vCPU (公式推奨は4コア以上)
Memory 公式推奨 16GB以上 安定稼働 32GB(サーバー起動のみで8GBのメモリーを消費します)
Storage ゲームサーバーデータはおよそ10GB程度
OS WindowsとLinux
Internet ブロードバンドインターネット接続。ポート開放必要(デフォルト:8211 UDP)

1.OSを最新にしよう

# dnf -y update

その後、再起動しておきましょう。

# reboot


2.SELinuxを無効化する

CentOSにはセキュリティ対策としてSELinuxというものが用意されています。SELinuxを適切に設定することでより強固なサーバを構築することができるのですが、今回はSELinuxを無効にしておきます。

# getenforce

Enforcingになってる場合のみ以下のコマンドを入力する。
すでにPermissiveになってたらコマンド不要。
以下のコマンドで無効化します。

# setenforce 0

3.一般ユーザーを作成します

ここではpalworldというユーザーを作成する
設定するユーザー名は自由です

# useradd palworld
# passwd palworld

パスワードは任意で設定してください。
ユーザーにSudo権限を付与する

sudo usermod --append -G wheel palworld

4.SteamCMDのインストール
palworldユーザーになる

su - palworld

5.SteamCMDをインストールするディレクトリを作成する
ここではSteamCMDを格納するフォルダとゲームを格納するフォルダを作成します。

$ mkdir Steam

palworldを格納するフォルダも作成する

$ mkdir pal

6.SteamCMDをインストールする
glibc.i686 libstdc++.i686 tar をインストールします

sudo dnf install perl-Compress-Zlib curl lsof glibc.i686 libstdc++.i686 bzip2

$ cd Steam
$ curl -sqL "https://steamcdn-a.akamaihd.net/client/installer/steamcmd_linux.tar.gz" | tar zxvf - 
$ cd

7.palworld のサーバーをインストールする
ここから実行する作業は時間がややかかります。
Steamからデータをダウンロードするのでややかかるので気長に待ちましょう。

$ cd Steam

$ ./steamcmd.sh

実行するとプロンプトが変わり、 Steam> の表記になります。
そのまま実行すれば大丈夫です。

8.ユーザー認証不要な、anonymous でログインする

login anonymous

9.ゲームサーバーをインストールする場所を決める。今回は先程作ったフォルダに格納する

force_install_dir /home/palworld/pal

10.palworldのApp IDを指定してインストールする

app_update 2394010 validate

(ここで時間がかかります。お茶でも用意してゆっくり待ちましょう)
すべてダウンロードできて数字が100%になったら終了しましょう。

[ 0%] Checking for available update…
[—-] Downloading update (0 of 59782 KB)…
[ 0%] Downloading update (0 of 59782 KB)…
[ 0%] Downloading update (0 of 59782 KB)…
[ 0%] Downloading update (0 of 59782 KB)…
[ 0%] Downloading update (0 of 59782 KB)…
[ 0%] Downloading update (0 of 59782 KB)…
[ 0%] Downloading update (0 of 59782 KB)…
[ 0%] Downloading update (3057 of 59782 KB)…
[ 5%] Downloading update (7090 of 59782 KB)…
[ 11%] Downloading update (9608 of 59782 KB)…
[ 16%] Downloading update (12122 of 59782 KB)…
[ 20%] Downloading update (14868 of 59782 KB)…

[ 98%] Downloading update (59782 of 59782 KB)…
[100%] Download Complete.

 

quit

11.サーバーを起動してみる(確認)
サーバー起動をしてみます。
ここでは一度エラーが出ますが、回避方法も載せておきます。

インストールディレクトリーへ移動

cd /home/palworld/pal

起動確認します

./PalServer.sh

$ ./PalServer.sh
Shutdown handler: initalize.
Increasing per-process limit of core file size to infinity.
sh: line 1: xdg-user-dir: command not found
dlopen failed trying to load:
steamclient.so
with error:
steamclient.so: cannot open shared object file: No such file or directory
dlopen failed trying to load:
/home/steam/.steam/sdk64/steamclient.so
with error:
/home/steam/.steam/sdk64/steamclient.so: cannot open shared object file: No such file or directory
[S_API] SteamAPI_Init(): Sys_LoadModule failed to load: /home/steam/.steam/sdk64/steamclient.so
dlopen failed trying to load:
steamclient.so
with error:
steamclient.so: cannot open shared object file: No such file or directory
dlopen failed trying to load:
/home/steam/.steam/sdk64/steamclient.so
with error:
/home/steam/.steam/sdk64/steamclient.so: cannot open shared object file: No such file or directory
[S_API] SteamAPI_Init(): Sys_LoadModule failed to load: /home/steam/.steam/sdk64/steamclient.so
dlopen failed trying to load:
steamclient.so
with error:
steamclient.so: cannot open shared object file: No such file or directory
dlopen failed trying to load:
/home/steam/.steam/sdk64/steamclient.so
with error:

起動するとエラーが連発すると思います。
その場合の回避方法は以下の通りです。

12.エラーが出た場合の回避方法

mkdir -p ~/.steam/sdk64/

再度、Steamにログインし、追加ファイルをDLする

$ cd Steam
$ ./steamcmd.sh

Steam> login anonymous

Steam> app_update 1007

Steam> quit

13.再度起動してみる

cd /home/palworld/pal

./PalServer.sh

[palworld@localhost ]$ ./PalServer.sh
Shutdown handler: initalize.
Increasing per-process limit of core file size to infinity.
sh: line 1: xdg-user-dir: command not found
dlopen failed trying to load:
steamclient.so
with error:
steamclient.so: cannot open shared object file: No such file or directory
[S_API] SteamAPI_Init(): Loaded ‘/home/steam/.steam/sdk64/steamclient.so’ OK. (First tried local ‘steamclient.so’)
CAppInfoCacheReadFromDiskThread took 4 milliseconds to initialize
dlmopen steamservice.so failed: steamservice.so: cannot open shared object file: No such file or directory
Setting breakpad minidump AppID = 2394010
[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.

1-2行エラーが見えますがここは問題ないです。

with error:
steamclient.so: cannot open shared object file: No such file or directory

14.PalServer.shにオプションを追加してみる
これは任意ですが、オプションを入れることで設定を編集できます。

実行ファイルが格納されてる palの中にあるPalServer.shを編集し、オプションを入れることが可能です。

PalServer.shのオプション
port=8211 サーバーの待ち受けに使うポート番号を変更します。
players=32 サーバーの最大参加人数を変更します。
-useperfthreads -NoAsyncLoadingThread -UseMultithreadForDS マルチスレッドCPU環境において性能を向上させます。 最大で4スレッド程度まで効果がありこれ以上のスレッド数を割り当ててもあまり意味がありません。
-publicip -publicip=X.X.X.X
サーバーが立っているネットワークのグローバルIPアドレスを手動で指定することができます。 指定しない場合は自動的に検出されます。うまく機能しない場合は手動設定を試してみてください。
EpicApp=PalServer コミュニティサーバーとして設定します。変更してはいけません。

 

15.Systemdに登録する
OSが無事に起動することが確認できたら、自動で起動できるようにsystemdに登録します。

sudo vi /etc/systemd/system/palworld-dedicated.service
[Unit]
Description=Palworld Dedicated Server
Wants=network-online.target
After=syslog.target network.target nss-lookup.target network-online.target

[Service]
ExecStart=/home/palworld/pal/PalServer.sh port=8211 players=32 -useperfthreads -NoAsyncLoadingThread -UseMultithreadForDS
LimitNOFILE=100000
ExecReload=/bin/kill -s HUP $MAINPID
ExecStop=/bin/kill -s INT $MAINPID
Restart=always
User=palworld
Group=palworld
TimeoutStartSec=300

[Install]
WantedBy=multi-user.target

16.ゲームの起動・自動起動・再起動
自動起動をON

sudo systemctl enable palworld-dedicated.service

リロード

sudo systemctl daemon-reload

Server自体の起動

sudo systemctl start palworld-dedicated.service

Serverを停止

sudo systemctl stop palworld-dedicated.service

Serverのステータスを確認したいとき(状態)

systemctl status palworld-dedicated.service

17.ポート開放をする
palworldのゲームはUDP 8211(変更可)を開放します。
デフォルトの8211で設定した場合は以下の通りに開放しましょう。

sudo firewall-cmd --permanent --add-port=8211udp

sudo firewall-cmd --reload

 

構築方法は以上になります。
次回の記事ではサーバーの設定方法と、自動起動の方法等を解説していきます。

What do you think?

You must be logged in to post a comment.

閲覧数 552 件