【パルワールド】専用サーバー(コミュニティサーバー)をWebARENA Indigoで構築する
動画
以下、上記の動画のコマンドとなります
SELinuxの無効化
# ユーザーをrootに変更
sudo su -
# SELinuxの無効化
sudo sed -i 's/^SELINUX=enforcing/SELINUX=disabled/' /etc/selinux/config
# 再起動して反映
reboot
palworldユーザーの作成
# ユーザーをrootに変更
sudo su -
# palworldユーザーを作成
sudo useradd -m palworld
# palworldユーザーのパスワードを設定
passwd palworld
# sudoを付与
sudo usermod --append -G wheel palworld
Pal World Serverのインストール
# ユーザーをpalworldに変更
su - palworld
# glibc.i686 libstdc++.i686 tar をインストール
sudo dnf install -y glibc.i686 libstdc++.i686 tar
# steamcmd_linux.tar.gz をダウンロード
curl -o steamcmd_linux.tar.gz https://steamcdn-a.akamaihd.net/client/installer/steamcmd_linux.tar.gz
# steamcmd_linux.tar.gz の解凍
tar xf steamcmd_linux.tar.gz
# steamcmd.sh を実行
./steamcmd.sh
# ユーザ認証は不要なので anonymous でログイン
login anonymous
# /home/palworld/Steam/palworld/ をインストールディレクトリに指定
force_install_dir /home/palworld/Steam/palworld/
# Palworld を示す 2394010 を指定してインストール
app_update 2394010 validate
# steamcmd を抜ける
quit
# インストールしたディレクトリに移動
cd /home/palworld/Steam/palworld
# 起動確認
./PalServer.sh
# サーバーをシャットダウンする
【Ctrl + C】キー
# フォルダを作る
mkdir -p /home/palworld/.steam/sdk64/
# steamclient.soのリンクを作成
ln -s /home/palworld/linux64/steamclient.so /home/palworld/.steam/sdk64/steamclient.so
# 起動確認
./PalServer.sh
# サーバーをシャットダウンする
【Ctrl + C】キー
ファイアウォールのインストール
# firewalldをインストール
sudo yum -y install firewalld
# firewalld有効化
sudo systemctl start firewalld
# 有効化になっているか確認する(緑ならOK)
sudo systemctl status firewalld
# 操作できるようにする
【Q】キー
# 8211/UDPポートを恒久的に開放
sudo firewall-cmd --add-port=8211/udp --zone=public --permanent
# 設定を有効化
sudo firewall-cmd --reload
# 設定状態の確認
sudo firewall-cmd --list-all
自動起動の設定
# 起動設定ファイルを作成し開く
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/Steam/palworld/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
###ここまで###
# ファイルを閉じる
:wq
# デーモンの再起動
sudo systemctl daemon-reload
# 自動起動設定
sudo systemctl enable palworld-dedicated.service
# サーバの起動
sudo systemctl start palworld-dedicated.service
# ゲームサーバの起動状態を確認する
systemctl status palworld-dedicated.service
# 操作できるようにする
【Q】キー
自動アップデートの設定
# ユーザー root にログイン
sudo su -
# json を処理するための jq コマンドをインストール
sudo dnf install -y jq
# アップデートスクリプトを作成
vi /home/palworld/update-palworld.sh
###ここから###
#!/bin/sh
# Paths
Steamcmd="/home/palworld/steamcmd.sh"
install_dir="/home/palworld/Steam/palworld"
service_name="palworld-dedicated.service"
echo "# Environment Check"
date
# Retrieve the current Build ID
OLD_Build=`$Steamcmd +force_install_dir $install_dir +login anonymous +app_status 2394010 +quit | grep -e "BuildID" | awk '{print $8}'`
echo "Current BuildID: $OLD_Build"
# Attempt to fetch the New Build ID using curl
NEW_Build=$(curl -s https://api.steamcmd.net/v1/info/2394010 | jq -r '.data["2394010"].depots.branches.public.buildid')
# Fallback to SteamCMD method if curl fails to retrieve data
if [ -z "$NEW_Build" ] || [ "$NEW_Build" = "null" ]; then
echo "Failed to fetch New BuildID with curl. Resorting to SteamCMD."
$Steamcmd +force_install_dir $install_dir +login anonymous +app_update 2394010 validate +quit > /dev/null
NEW_Build=`$Steamcmd +force_install_dir $install_dir +login anonymous +app_status 2394010 +quit | grep -e "BuildID" | awk '{print $8}'`
fi
echo "Fetched New BuildID: $NEW_Build"
# Update the server if the Build IDs do not match
if [ "$OLD_Build" = "$NEW_Build" ]; then
echo "No update required. Build numbers are identical."
else
echo "# Updating the game server..."
$Steamcmd +force_install_dir $install_dir +login anonymous +app_update 2394010 validate +quit > /dev/null
echo "Game server updated successfully to BuildID: $NEW_Build"
echo "Restart ${service_name} because an game update exists."
sudo systemctl stop $service_name
sudo systemctl start $service_name
systemctl status $service_name
fi
###ここまで###
# 編集を保存して終了
:wq
# 実行権限を付与
chmod +x /home/palworld/update-palworld.sh
# アップデートスクリプトを実行してみる
/home/palworld/update-palworld.sh
# cronを編集
crontab -e
# 編集モードに移行
【A】キー
# cronに行を追加
*/30 * * * * /home/palworld/update-palworld.sh
# 編集モードを終了
【ESC】キー
# cronを保存
:wq
よく使うコマンド
# サーバーの起動
sudo systemctl start palworld-dedicated.service
# サーバーを停止
sudo systemctl stop palworld-dedicated.service
# ゲームサーバの起動状態を確認する
systemctl status palworld-dedicated.service