1
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

パルワールド専用サーバをWebARENA Indigo(Ubuntu)で建てる

Last updated at Posted at 2024-01-26

これから運用していくので随時更新予定です。
Steam版

背景

  • 5~8人でPalWorld遊びたい
  • PCつけっぱなしは嫌だ
  • マルチプレイしていた既存ワールドを専用サーバに移行したい

PC情報

  • Windows 11 Home

パルワールドのversion

v0.1.3.0 -> v0.1.4.0(2024/02/01アップデート。専用サーバを構築したのは前versionです。)

サーバ情報

VPS WebARENA Indigo (Linux)
料金表参考:https://web.arena.ne.jp/indigo/price/

名称 スペック 備考
OS Ubuntu 22.0.4 -
メモリ 16GB -
CPU 6vCPU -
SSD 320GB -

他使用ツール

  • TeraTerm

サーバ契約 - インスタンス作成 - SSH接続

1. WebARENAのアカウントを作成
https://web.arena.ne.jp/indigo/price/
リンク先ページの「お申し込みはこちら」から必要情報を入力し、WebARENAのアカウントを作成。

2. インスタンスの作成
WebARENA Indigoのページ にログインする。
「インスタンス管理」->「インスタンスの作成」
「SSH鍵の作成」で任意の名前を入力し秘密鍵をダウンロードする。
作成するインスタンスは上記サーバ情報の通り。

3. TeraTermを使用しSSH接続
初期ユーザ:ubuntu
パスフレーズ:なし

認証方式は「RSA/DSA/ECDSA/ED25519鍵を使う」から、先ほどダウンロードした秘密鍵のファイルを指定。

SteamCMDのインストール

公式:https://developer.valvesoftware.com/wiki/SteamCMD#Linux

1. OSのパッケージ更新

# OSのパッケージ更新
sudo apt update
sudo apt upgrade

2. palworldユーザの作成

# palworld用ユーザを作成
sudo useradd -m palworld

# palworldユーザのパスワードを設定。任意のパスワードで。
sudo passwd palworld

# palworldユーザにsudo権限を付与
sudo gpasswd -a palworld sudo

# palworldユーザにsudo権限があるか確認
id palworld

# rootからpalworldユーザに変更
su - palworld

3. steamcmdのインストール

パッケージまたは手動どちらかの方法でインストールを実行

パッケージ

# マルチバースリポジトリとx86パッケージをインストール
sudo add-apt-repository multiverse; sudo dpkg --add-architecture i386; sudo apt update
sudo apt install steamcmd

# steamcmdの実行
cd ~
steamcmd

手動

# 依存関係にあるlib32gcc-s1をインストール
sudo apt install lib32gcc-s1

# ホームディレクトリにSteamフォルダを作成のち移動
mkdir ~/Steam && cd ~/Steam

# steamcmdのインストールと解凍
curl -sqL "https://steamcdn-a.akamaihd.net/client/installer/steamcmd_osx.tar.gz" | tar zxvf -

# Steamフォルダの中にsteamcmd.shがあるので実行
./steamcmd.sh

steamcmd.shを実行する際は必ず ./steamcmd.sh と打つ
もしsteamcmd.shと打った場合は以下のようなエラーが出る
-sh: 4: steamcmd.sh: not found

PalWorld専用サーバをインストール

公式:https://tech.palworldgame.com/dedicated-server-guide#linux

Steam>と出ている状態(steamcmd)で作業します。
1. インストール

# ユーザ認証なしでログイン
login anonymous

# palworldをインストール(数字はsteam内のpalworld app ID)
app_update 2394010 validate

# steamcmdから抜ける
quit

2.palworldサーバの起動

# PalServer.shがあるフォルダまで移動
cd /home/palworld/Steam/steamapps/common/PalServer

# palworldサーバの起動
./PalServer.sh

ログに[S_API]........succeeded.のようなメッセージが出ていれば起動できています。

起動後に以下のようなエラーが出る場合の解決手順

.steam/sdk64/steamclient.so: cannot open shared object file: No such file or directory

リセットされるためすでにプレイ中のサーバーでは実行しないこと。

1. Steam SDKをインストール

# ディレクトリ作成
mkdir -p ~/.steam/sdk64/

# steamcmdを実行
./steamcmd.sh

# ユーザ認証なしでログイン
login anonymous

# Steam SDKをインストール
app_update 1007

# steamcmdから抜ける
quit

2.コピー

コピー元のパスをしっかり確認する。
上手くいかない場合はコピー先のsteamclient.soを削除してみる。

# 作成したディレクトリにsteamclient.soをコピー
cp /home/palworld/Steam/steamapps/common/Steamworks\ SDK\ Redist/linux64/steamclient.so ~/.steam/sdk64/

ポート開放-サーバーセキュリティ

WebARENA Indigoの方で設定していきます。

ファイヤーウォールの作成

  • 「ネットワーク管理」->「ファイアーウォール」->「ファイアウォールの作成」
  • ファイアウォール名は任意の名前で

インバウンドルールの設定
「新規ルール」から1つずつ作成する

以下、例

タイプ プロトコル ポート IPアドレス 備考
custom UDP 8211 自宅のグローバルIP、一緒に遊ぶ人のグローバルIP パルワールド用。サーバーに入る人数分作成するか、0.0.0.0/0(誰でも入れる状態)でも可
custom ICMP - 0.0.0.0/0 通信状態を確認するため
custom TCP SSHポート番号 自宅のグローバルIP サーバへのSSH接続のため

自分のグローバルIPは以下のサイトで確認できます
CMAN

sshポート番号を変更する場合
sshd_config内にインバウンドルール内に記載したSSHポート番号を記載する。

sudo vi /etc/ssh/sshd_config
...(略)
#Port 22
# 変更後のポート番号
Port 22223
...(略)
# 設定のリロード
systemctl reload sshd.service 

PalWorldへログイン

「マルチプレイに参加する(専用サーバー)」->「(サーバのIPアドレス):8211」でログインします!

最低限のサーバを立ち上げることができました。

マルチプレイ(既存)サーバを専用サーバへ移行

特に自己責任でお願いします。
現在、マルチプレイでホストだった人のキャラ移行は確認できていません。

全員に1度、専用サーバへログインしてもらってください。
キャラメイクを求められた際はテキトーで大丈夫です。
すぐに専用サーバからログアウトしてもらってください。

参考:セーブデータの引き継ぎ

ホストだった人からC:\Users\{ユーザー名}\AppData\Local\Pal\Saved\以下のディレクトリをすべて貰います。
自分がホストだった場合は大丈夫です。

1. 移行したいサーバのIDを特定
自分がホストだった場合、以下のパスにあると思います。
マルチサーバのワールドIDのフォルダを見つけます。
C:\Users\{ユーザー名}\AppData\Local\Pal\Saved\SaveGames\{ユーザーID}\{ワールドID}\

2. 専用サーバへファイル移行
「Level.sav」「LevelMeta.sav」「Players/」を専用サーバに移行します。

「Players/」以下ファイルは人数分全て移行します。

専用サーバの以下の場所に上書きします。
/home/palworld/Steam/steamapps/common/PalServer/Pal/Saved/SaveGames/0/{ワールドID}/

2-1. ファイル移行の際につまづいた個所

teratermを使用して移行しました。
参考:teratermでコマンドを使わずファイル転送
その場合、ubuntuユーザ側に送信されるはずです。
ubuntuユーザーに戻って確認してみてください。

mv_win_ubuntu.png

この場合、ファイルの所有権をpalworldユーザーに変更してから場所を移す必要があります。

# いったんubuntuフォルダから外に出す
sudo mv Level.sav ../

# ファイルの所有権をpalworldユーザに変更
sudo chown palworld:palworld Level.sav

# palworldユーザに変更
su - palworld

# ファイルを移動
sudo mv ../Level.sav /home/palworld/Steam/steamapps/common/PalServer/Pal/Saved/SaveGames/0/{ワールドID}/

Level.savの個所を適宜、移行したいファイルに書き換えて実行してください。

3.ローカル側でのキャラ移行(全員)

マルチサーバ(前サーバ)と専用サーバ(現サーバ分)のフォルダがあることを確認してください。

ローカルPCの以下の場所に「LocalData.sav」というファイルがあります。
C:\Users\{ユーザー名}\AppData\Local\Pal\Saved\SaveGames\{ユーザーID}\{ワールドID}\

このファイルをマルチサーバフォルダから専用サーバフォルダへ上書きしてください。

上書きが完了したら、専用サーバにログインします。

この作業が終わるまでは専用サーバにログインしないようにしてください。
マップが引き継がれないなどの不具合が発生します。

Palworld専用サーバーの常時起動

今の状態ではコマンドを打たないと起動しないため
レンタルサーバ起動と同時にPalworld専用サーバーが立ち上がるようにします。

1. systemdにserviceを登録

sudo vi /etc/systemd/system/palworld-dedicated.service

内容は以下。
コミュニティサーバとして設定したい場合はEpicApp=PalServerを追記してください。参考:コミュニティサーバーのセットアップ

8人上限予定のため、players=8にしています。

[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=8 -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

2.専用サーバの再起動

# デーモンの再起動
sudo systemctl daemon-reload

# 先ほど設定したserviceを有効にする
sudo systemctl enable palworld-dedicated.service

# 専用サーバの起動
sudo systemctl start palworld-dedicated.service

そのほか

# 専用サーバの状態確認
sudo systemctl status palworld-dedicated.service
# 専用サーバの停止
sudo systemctl stop palworld-dedicated.service

その他:ゲームバランスの調整

公式:https://tech.palworldgame.com/optimize-game-balance

デフォルト設定について

デフォルト設定の置き場所は以下です。
steamapps/common/PalServer/DefaultPalWorldSettings.ini

デフォルト設定の内容↓

[/Script/Pal.PalGameWorldSettings]
OptionSettings=(Difficulty=None,DayTimeSpeedRate=1.000000,NightTimeSpeedRate=1.000000,ExpRate=1.000000,PalCaptureRate=1.000000,PalSpawnNumRate=1.000000,PalDamageRateAttack=1.000000,PalDamageRateDefense=1.000000,PlayerDamageRateAttack=1.000000,PlayerDamageRateDefense=1.000000,PlayerStomachDecreaceRate=1.000000,PlayerStaminaDecreaceRate=1.000000,PlayerAutoHPRegeneRate=1.000000,PlayerAutoHpRegeneRateInSleep=1.000000,PalStomachDecreaceRate=1.000000,PalStaminaDecreaceRate=1.000000,PalAutoHPRegeneRate=1.000000,PalAutoHpRegeneRateInSleep=1.000000,BuildObjectDamageRate=1.000000,BuildObjectDeteriorationDamageRate=1.000000,CollectionDropRate=1.000000,CollectionObjectHpRate=1.000000,CollectionObjectRespawnSpeedRate=1.000000,EnemyDropItemRate=1.000000,DeathPenalty=All,bEnablePlayerToPlayerDamage=False,bEnableFriendlyFire=False,bEnableInvaderEnemy=True,bActiveUNKO=False,bEnableAimAssistPad=True,bEnableAimAssistKeyboard=False,DropItemMaxNum=3000,DropItemMaxNum_UNKO=100,BaseCampMaxNum=128,BaseCampWorkerMaxNum=15,DropItemAliveMaxHours=1.000000,bAutoResetGuildNoOnlinePlayers=False,AutoResetGuildTimeNoOnlinePlayers=72.000000,GuildPlayerMaxNum=20,PalEggDefaultHatchingTime=72.000000,WorkSpeedRate=1.000000,bIsMultiplay=False,bIsPvP=False,bCanPickupOtherGuildDeathPenaltyDrop=False,bEnableNonLoginPenalty=True,bEnableFastTravel=True,bIsStartLocationSelectByMap=True,bExistPlayerAfterLogout=False,bEnableDefenseOtherGuildPlayer=False,CoopPlayerMaxNum=4,ServerPlayerMaxNum=32,ServerName="Default Palworld Server",ServerDescription="",AdminPassword="",ServerPassword="",PublicPort=8211,PublicIP="",RCONEnabled=False,RCONPort=25575,Region="",bUseAuth=True,BanListURL="https://api.palworldgame.com/api/banlist.txt")

調整方法

デフォルト設定をコピーして値をいじっても良いし、
有志の方が作成してくださったジェネレータを使用して視覚的にわかりやすく調整する方法もあります。
参考:https://palworld-setting-generator.deno.dev/

調整後の値をワールドに反映する場合は、以下の場所にコピーします。
steamapps/common/PalServer/Pal/Saved/Config/LinuxServer/PalWorldSettings.ini

上記の場所にない場合は検索してください。

sudo find / -name Config

バージョン アップデート (追記 2024/02/01)

専用サーバのインストール手順とほぼ同じです。

# serviceの停止
sudo systemctl stop palworld-dedicated.service

# steamcmd.shがあるフォルダに移動
cd ~/Steam

#steamcmd.shの実行
./steamcmd.sh

# 以下、`Steam>`と出ている状態で作業します
# インストールディレクトリの指定(PalServerフォルダが置かれている階層を指定してください)
force_install_dir /home/palworld/Steam/steamapps/common/PalServer/

# ユーザ認証なしでログイン
login anonymous

# palworldをインストール(数字はsteam内のpalworld app ID)
app_update 2394010 validate

# steamcmdから抜ける
quit

# 以下、'$'と出ている状態で作業します
# serviceの開始
sudo systemctl start palworld-dedicated.service

この手順で反映されない場合は、sudo systemctl daemon-reloadやサーバ自体(インスタンス)を再起動するなど試してみてください。

参考

1
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?