【パルワールド】専用サーバー(コミュニティサーバー)を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




いいなと思ったら応援しよう!