可視化インターフェースとRESTインターフェースを通じて幻獣パル専用サーバーを管理し、SAVファイルの解析とREST&RCONを基にしています。
そして、国際化のために長くて退屈な時間を費やしました...
現在、モバイル端末にも良好に対応しており、下記の 機能スクリーンショット をご覧ください。
もちろん、ダークモードもバッチリです~
Level.sav
ファイルの解析を基にした機能:
- 完全なプレイヤーデータ
- プレイヤーのパルデータ
- ギルドデータ
- プレイヤーが荷物のデータをリュックします
公式 REST API を使って実装した機能:
- サーバー情報の取得
- サーバ復号メトリックを取得
- オンラインプレイヤーリスト
- プレイヤーのキック/バン
- ゲーム内ブロードキャスト
- サーバーのスムーズなシャットダウンとメッセージのブロードキャスト
ツールが追加で提供する機能:
- 可視化マップ管理です
- ホワイトリスト管理
- カスタム RCON コマンドの実行
- アーカイブ自動バックアップと管理です
このツールは bbolt シングルファイルストレージを使用し、RCON と Level.sav ファイルのデータを定期的に取得して保存し、簡単な可視化インターフェースと REST インターフェースを提供し、管理と開発を容易にします。
メンテナンスと開発のスタッフが少ないため、意欲はありますが、力不足です。フロントエンド、バックエンド、データエンジニアの皆さんからの PR を歓迎します!
pst-zh-v.mp4
![]() |
![]() |
このプロジェクトでは、サーバーの REST API 機能を通常の使用のために有効にする必要があり、カスタム RCON 機能は RCON 関数に依存します。
マニュアルがある方が良いですが、ない場合は、最初にサービス側を閉じて、 Pal-Conf PalWorldSettings.ini
ファイルやWorldOption.sav
ファイルをパルコンフで修正して、サービス側を有効にします。
最初に管理者パスワードを設定します
次にRCONとREST APIを設定します
Level.sav
ファイルの解析タスクは短時間(<20s)で一定量のシステムメモリ(1GB~3GB)を消費します。このメモリは解析タスク完了後に解放されるため、サーバーに十分なメモリがあることを確認してください。
ここでは、pst ツールとゲームサーバーを同一物理マシン上に配置することをデフォルトとしています。一部の状況では、それらを同一マシン上に配置したくない場合があります:
- 別のサーバーに単独でデプロイする必要がある
- 個人の PC にのみデプロイする必要がある
- ゲームサーバーの性能が不足しているため、上記のいずれかの方案を採用する
pst-agent デプロイメントガイド または k8s-pod からの存档同期 を参照してください
以下のアドレスから最新版の実行可能ファイルをダウンロードしてください。
# pst_{version}_{platform}_{arch}.tar.gz ファイルをダウンロードしてpstディレクトリに解凍します
mkdir -p pst && tar -xzf pst_v0.9.5_linux_x86_64.tar.gz -C pst
-
ディレクトリを開いて実行可能にします
cd pst chmod +x pst sav_cli
-
config.yaml
ファイルを見つけて、指示に従って変更します。decode_path
については、通常は pst ディレクトリにsav_cli
を追加するだけです。空にすることができ、デフォルトで現在のディレクトリを取得します。# WebUI設定 web: # WebUI管理者パスワード password: "" # WebUIアクセスポート port: 8080 # HTTPS TLSアクセスを有効にするかどうか tls: false # TLS証明書のパス HTTPSを使用する場合は証明書ファイルのパスを入力してください cert_path: "" # TLSキーのパス HTTPSを使用する場合は証明書キーファイルのパスを入力してください key_path: "" # HTTPSアクセスを有効にする場合は、HTTPS証明書にバインドされたドメイン名を入力してください 例:https://yourdomain.com public_url: "" # タスク関連設定です task: # タイミングゲームサービスにプレーヤーのオンライン状況を取得する間隔、単位秒です sync_interval: 60 # プレイヤーのサーバーへの入/出通知です player_logging: true # プレイヤーはサーバーメッセージにアクセスします player_login_message: "Player {username} has joined the server! Current online player count: {online_num}." # プレイヤーはサーバーメッセージから離脱します player_logout_message: "Player {username} has left the server! Current online player count: {online_num}." # RCON関連設定 rcon: # RCONのアドレスとポート address: "127.0.0.1:25575" # サーバー側で設定されたRCON AdminPassword password: "" # サーバーがPalGuard機能プラグインのBase64 RCON機能を有効にしているかどうか(自分でインストールする必要があります) use_base64: false # RCON通信のタイムアウト時間、<= 5を推奨 timeout: 5 # REST API 関連構成です rest: # RESTのアドレスです address: "http://127.0.0.1:8212" # Base Authのユーザー名,adminに固定します username: "admin" # サーバー側で設定されたRCON AdminPassword password: "" # 通信のタイムアウト時間、<= 5を推奨 timeout: 5 # sav_cli Config 存档ファイル解析関連設定 save: # 存档ファイルパス path: "/path/to/your/Pal/Saved" # Sav_cli Path 存档解析ツールのパス、通常はpstと同一ディレクトリ、空にすることができます decode_path: "" # Sav Decode Interval Sec 存档からデータを取得する間隔、秒単位、>= 120を推奨 sync_interval: 120 # Sav Backup Interval Sec アーカイブ自動バックアップ間隔です、秒単位 backup_interval: 14400 # Automation Config 自動化管理関連 manage: # プレイヤーがホワイトリストにない場合に自動的にキックするかどうか kick_non_whitelist: false
./pst
2024/01/31 - 22:39:20 | INFO | palworld-server-tool/main.go:75 | Starting PalWorld Server Tool...
2024/01/31 - 22:39:20 | INFO | palworld-server-tool/main.go:76 | Version: Develop
2024/01/31 - 22:39:20 | INFO | palworld-server-tool/main.go:77 | Listening on http://127.0.0.1:8080 or http://192.168.1.66:8080
2024/01/31 - 22:39:20 | INFO | palworld-server-tool/main.go:78 | Swagger on http://127.0.0.1:8080/swagger/index.html
SSH ウィンドウを閉じても実行を続ける場合は以下のようにします。
# バックグラウンドで実行し、ログをserver.logに保存します
nohup ./pst > server.log 2>&1 &
# ログを確認する
tail -f server.log
kill $(ps aux | grep 'pst' | awk '{print $2}') | head -n 1
ブラウザを通じて http://127.0.0.1:8080 または http://{ローカルネットワーク IP}:8080 にアクセスしてください。
クラウドサーバーのファイアウォールとセキュリティグループを開放した後、http://{サーバー IP}:8080 にアクセスすることもできます。
Warning
最初に開いたときには内容が表示されずに空白になる場合があります。最初の sav ファイル同期が完了するまでお待ちください。
サーバーの設定が十分で、パフォーマンスが良い場合は、
save.sync_interval
を短くしてみることができます。
pst_v0.9.5_windows_x86_64.zip
を任意のディレクトリに解凍します(pst
というディレクトリ名を推奨)。
解凍ディレクトリ内のconfig.yaml
ファイルを見つけ、指示に従って変更します。
decode_path
に関しては、解凍後の pst ディレクトリにsav_cli.exe
を追加するだけです。空にすることができ、デフォルトで現在のディレクトリを取得します。
マウスの右クリックから「プロパティ」を選択し、パスとファイル名を確認してから、それらを結合してください。(存档ファイルのパスとツールのパスも同様)
Warning
コピーしたパスをconfig.yaml
に直接貼り付けるのではなく、すべての'\'の前にもう一つ'\'を追加する必要があります。以下に示すように
また重要なのは、config.yaml
ファイルがANSI エンコーディングであることを確認してください。他のエンコーディング形式はパスエラーなどの問題を引き起こす可能性があります!!
# WebUI設定
web:
# WebUI管理者パスワード
password: ""
# WebUIアクセスポート
port: 8080
# HTTPS TLSアクセスを有効にするかどうか
tls: false
# TLS証明書のパス HTTPSを使用する場合は証明書ファイルのパスを入力してください
cert_path: ""
# TLSキーのパス HTTPSを使用する場合は証明書キーファイルのパスを入力してください
key_path: ""
# HTTPSアクセスを有効にする場合は、HTTPS証明書にバインドされたドメイン名を入力してください 例:https://yourdomain.com
public_url: ""
# タスク関連設定です
task:
# タイミングゲームサービスにプレーヤーのオンライン状況を取得する間隔、単位秒です
sync_interval: 60
# プレイヤーのサーバーへの入/出通知です
player_logging: true
# プレイヤーはサーバーメッセージにアクセスします
player_login_message: "Player {username} has joined the server! Current online player count: {online_num}."
# プレイヤーはサーバーメッセージから離脱します
player_logout_message: "Player {username} has left the server! Current online player count: {online_num}."
# RCON関連設定
rcon:
# RCONのアドレスとポート
address: "127.0.0.1:25575"
# サーバー側で設定されたRCON AdminPassword
password: ""
# サーバーがPalGuard機能プラグインのBase64 RCON機能を有効にしているかどうか(自分でインストールする必要があります)
use_base64: false
# RCON通信のタイムアウト時間、<= 5を推奨
timeout: 5
# REST API 関連構成です
rest:
# RESTのアドレスです
address: "http://127.0.0.1:8212"
# Base Authのユーザー名,adminに固定します
username: "admin"
# サーバー側で設定されたRCON AdminPassword
password: ""
# 通信のタイムアウト時間、<= 5を推奨
timeout: 5
# sav_cli Config 存档ファイル解析関連設定
save:
# 存档ファイルパス
path: "/path/to/your/Pal/Saved"
# Sav_cli Path 存档解析ツールのパス、通常はpstと同一ディレクトリ、空にすることができます
decode_path: ""
# Sav Decode Interval Sec 存档からデータを取得する間隔、秒単位、>= 120を推奨
sync_interval: 120
# Sav Backup Interval Sec アーカイブ自動バックアップ間隔です、秒単位
backup_interval: 14400
# Automation Config 自動化管理関連
manage:
# プレイヤーがホワイトリストにない場合に自動的にキックするかどうか
kick_non_whitelist: false
Windows で実行するには 2 つの
方法があります。
-
start.bat(推奨)
解凍ディレクトリ内の
start.bat
ファイルをダブルクリックして実行します。 -
Win + R
を押してpowershell
を入力し、Powershell を開きます。cd
コマンドでダウンロードした実行ファイルのディレクトリに移動します。.\pst.exe
2024/01/31 - 22:39:20 | INFO | palworld-server-tool/main.go:75 | Starting PalWorld Server Tool...
2024/01/31 - 22:39:20 | INFO | palworld-server-tool/main.go:76 | Version: Develop
2024/01/31 - 22:39:20 | INFO | palworld-server-tool/main.go:77 | Listening on http://127.0.0.1:8080 or http://192.168.31.214:8080
2024/01/31 - 22:39:20 | INFO | palworld-server-tool/main.go:78 | Swagger on http://127.0.0.1:8080/swagger/index.html
上記の画面が表示されたら、正常に実行されています。ウィンドウを開いたままにしてください。
ブラウザを通じて http://127.0.0.1:8080 または http://{ローカルネットワーク IP}:8080 にアクセスしてください。
クラウドサーバーのファイアウォールとセキュリティグループを開放した後、http://{サーバー IP}:8080 にアクセスすることもできます。
Warning
最初に開いたときには内容が表示されずに空白になる場合があります。最初の sav ファイル同期が完了するまでお待ちください。
サーバーの設定が十分で、パフォーマンスが良い場合は、save.sync_interval
を短くしてみることができます。
単一のコンテナが必要で、ゲームの存档ディレクトリをコンテナ内にマッピングし、ゲームサーバーと同じ物理マシン上で実行します。
注意:スワップ領域を使用すると、プログラムのパフォーマンスが低下する可能性があります。メモリが不足している場合のみ使用してください
docker run -d --name pst \
-p 8080:8080 \
-v /path/to/your/Pal/Saved:/game \
-v ./backups:/app/backups \
-e WEB__PASSWORD="your web password" \
-e RCON__ADDRESS="172.17.0.1:25575" \
-e RCON__PASSWORD="your admin password" \
-e REST__ADDRESS="http://127.0.0.1:8212" \
-e REST__PASSWORD="your admin password" \
-e SAVE__PATH="/game" \
-e SAVE__SYNC_INTERVAL=120 \
jokerwho/palworld-server-tool:latest
最も重要なのは、ゲームの存档ファイル(Level.sav)があるディレクトリを-v オプションでコンテナ内の/game ディレクトリにマッピングすることです。
pst.db
ファイルを永続化する必要がある場合:
# ファイルをディレクトリとして認識されないようにするために、先にファイルを作成します
touch pst.db
その後、docker run -v
に-v ./pst.db:/app/pst.db
を追加します。
各環境変
数を設定します。config.yaml
と基本的に似ていますが、以下の表のようになります:
Warning
単一と複数のアンダースコアを区別してください。変更が必要な場合は、下表の変数名をコピーして使用してください!
変数名 | デフォルト値 | タイプ | 説明 |
---|---|---|---|
WEB__PASSWORD | "" | 文字列 | Web インターフェースの管理者パスワード |
WEB__PORT | 8080 | 数値 | 特に必要がない限り、変更するのではなくコンテナのマッピングポートを変更してください |
RCON__ADDRESS | "127.0.0.1:25575" | 文字列 | RCON サービスのアドレス、コンテナネットワークの 172.17.0.1:25575 を使用できます |
RCON__PASSWORD | "" | 文字列 | サーバー設定ファイルの AdminPassword |
RCON__USE_BASE64 | false | ブール値です | RCON Base64 をオンにしますか |
RCON__TIMEOUT | 5 | 数値 | RCON サービスへの単一リクエストのタイムアウト時間 |
TASK__SYNC_INTERVAL | 60 | 数値 | サーバーにプレイヤーのオンラインデータの同期を要求します |
TASK__PLAYER_LOGGING | false | ブール値です | プレイヤー登録・アナウンスメッセージ掲載です |
TASK__PLAYER_LOGIN_MESSAGE | "" | 文字列 | プレーヤー登録メッセージコンテンツを放送します |
TASK__PLAYER_LOGOUT_MESSAGE | "" | 文字列 | プレイヤーが放送メッセージを掲載します |
REST__ADDRESS | "http://127.0.0.1:8212" | 文字列 | API に対応したアドレスを提供しています |
REST__PASSWORD | "" | 文字列 | サーバー設定ファイルの AdminPassword |
REST__TIMEOUT | 5 | 数値 | タイムアウトをお願いします |
SAVE__PATH | "" | 文字列 | ゲームの存档ファイルのパス コンテナ内のパスとして必ず記入してください |
SAVE__DECODE_PATH | "/app/sav_cli" | 文字列 | |
SAVE__SYNC_INTERVAL | 600 | 数値 | プレイヤーの存档データを同期する間隔 |
SAVE__BACKUP_INTERVAL | 14400 | 数値 | アーカイブ自動バックアップ間隔です |
MANAGE__KICK_NON_WHITELIST | false | ブール値です | プレイヤーがホワイトリストにない場合に自動的にキックするかどうか |
palworld-server-tool
とpalworld-server-tool-agent
の 2 つのコンテナが必要です。
適用可能なシナリオ:
- 他のサーバーに単独でデプロイする必要がある
- 個人の PC にのみデプロイする必要がある
- ゲームサーバーの性能が不足しているため、上記のいずれかの方案を採用する
注意:スワップ領域を使用すると、プログラムのパフォーマンスが低下する可能性があります。メモリが不足している場合のみ使用してください
docker run -d --name pst-agent \
-p 8081:8081 \
-v /path/to/your/Pal/Saved:/game \
-e SAVED_DIR="/game" \
jokerwho/palworld-server-tool-agent:latest
ゲームの存档ファイル(Level.sav)があるディレクトリを-v オプションでコンテナ内の/game ディレクトリにマッピングする必要があります。
変数名 | デフォルト値 | タイプ | 説明 |
---|---|---|---|
SAVED_DIR | "" | 文字列 | ゲームの存档ファイルのパス コンテナ内のパスとして必ず記入してください |
docker run -d --name pst \
-p 8080:8080 \
-v ./backups:/app/backups \
-e WEB__PASSWORD="your password" \
-e RCON__ADDRESS="{GameServerIP}:{RconPort}" \
-e RCON__PASSWORD="your admin password" \
-e REST__ADDRESS="http://{GameServerIP}:{RestAPIPort}" \
-e REST__PASSWORD="your admin password" \
-e SAVE__PATH="http://{GameServerIP}:{AgentPort}/sync" \
-e SAVE__SYNC_INTERVAL=120 \
jokerwho/palworld-server-tool:latest
pst.db
ファイルを永続化する必要がある場合:
# ファイルをディレクトリとして認識されないようにするために、先にファイルを作成します
touch pst.db
その後、docker run -v
に-v ./pst.db:/app/pst.db
を追加します。
Warning
単一と複数のアンダースコアを区別してください。変更が必要な場合は、下表の変数名をコピーして使用してください!
変数名 | デフォルト値 | タイプ | 説明 |
---|---|---|---|
WEB__PASSWORD | "" | 文字列 | Web インターフェースの管理者パスワード |
WEB__PORT | 8080 | 数値 | 特に必要がない限り、変更するのではなくコンテナのマッピングポートを変更してください |
RCON__ADDRESS | "127.0.0.1:25575" | 文字列 | RCON サービスのアドレス、コンテナネットワークの 172.17.0.1:25575 を使用できます |
RCON__PASSWORD | "" | 文字列 | サーバー設定ファイルの AdminPassword |
RCON__USE_BASE64 | false | ブール値です | RCON Base64 をオンにしますか |
RCON__TIMEOUT | 5 | 数値 | RCON サービスへの単一リクエストのタイムアウト時間 |
TASK__SYNC_INTERVAL | 60 | 数値 | サーバーにプレイヤーのオンラインデータの同期を要求します |
TASK__PLAYER_LOGGING | false | ブール値です | プレイヤー登録・アナウンスメッセージ掲載です |
TASK__PLAYER_LOGIN_MESSAGE | "" | 文字列 | プレーヤー登録メッセージコンテンツを放送します |
TASK__PLAYER_LOGOUT_MESSAGE | "" | 文字列 | プレイヤーが放送メッセージを掲載します |
REST__ADDRESS | "http://127.0.0.1:8212" | 文字列 | API に対応したアドレスを提供しています |
REST__PASSWORD | "" | 文字列 | サーバー設定ファイルの AdminPassword |
REST__TIMEOUT | 5 | 数値 | タイムアウトをお願いします |
SAVE__PATH | "" | 文字列 | pst-agent があるサービスのアドレス、形式は http://{ゲームサーバー IP}:{Agent ポート}/sync |
SAVE__DECODE_PATH | "/app/sav_cli" | 文字列 | |
SAVE__SYNC_INTERVAL | 600 | 数値 | プレイヤーの存档データを同期する間隔 |
SAVE__BACKUP_INTERVAL | 14400 | 数値 | アーカイブ自動バックアップ間隔です |
MANAGE__KICK_NON_WHITELIST | false | ブール値です | プレイヤーがホワイトリストにない場合に自動的にキックするかどうか |
v0.5.3 から、agent なしでクラスタ内のゲームサーバーの存档を同期することがサポートされています。
v0.5.8 の後で、プレーヤーのバックパックのデータを増加して見るため、復制するのは全体 Sav ファイルのディレクトリで、パルのサービスの端の容器の中に tar 工具があることを確保しなければ圧縮して伸張します
pst が使用する serviceaccount には"pods/exec"権限が必要
です!
SAVE__PATH
環境変数を変更するだけでよく、形式は以下の通りです:
SAVE__PATH="k8s://<namespace>/<podname>/<container>:<ゲームの存档ディレクトリ>"
例えば:
SAVE__PATH="k8s://default/palworld-server-0/palworld-server:/palworld/Pal/Saved"
ゲームサーバーが Level.sav ファイルを作成する時間と位置(HASH を含む)は初回には不確定なため、Saved ディレクトリレベルを指定してください。プログラムが自動的にスキャンします
pst とゲームサーバーが同一の namespace にある場合、namespace を省略できます:
SAVE__PATH="k8s://palworld-server-0/palworld-server:/palworld/Pal/Saved"
v0.5.3 から、agent なしでコンテナ内のゲームサーバーの存档を同期することがサポートされています。
pst 本体がバイナリファイルとしてデプロイされている場合、config.yaml
内のsave.path
を変更するだけです:
save:
path: "docker://<container_name_or_id>:<ゲームの存档ディレクトリ>"
例えば:
save:
path: docker://palworld-server:/palworld/Pal/Saved
# または
save:
path: docker://04b0a9af4288:/palworld/Pal/Saved
pst 本体が Docker 単体デプロイメントである場合、SAVE__PATH
環境変数を変更し、Docker デーモンを pst コンテナ内にマウントする必要があります
- デーモンをマウントする
元のdocker run
コマンドに-v /var/run/docker.sock:/var/run/docker.sock
を追加します
- 環境変数を変更する
SAVE__PATH
環境変数を以下の形式で変更します:
SAVE__PATH="docker://<container_name_or_id>:<ゲームの存档ディレクトリ>"
例えば:
SAVE__PATH="docker://palworld-server:/palworld/Pal/Saved"
# または
SAVE__PATH="docker://04b0a9af4288:/palworld/Pal/Saved"
Warning
実行後に Error response from daemon: client version 1.44 is too new. Maximum supported API version is 1.43
のようなエラーが表示された場合は、現在の docker engine が使用している Docker API のバージョンが低いことを意味します。その場合は、別の環境変数を追加してください:
-e DOCKER_API_VERSION="1.43" (あなたの API バージョン)
ゲームサーバーが Level.sav ファイルを作成する時間と位置(HASH を含む)は初回には不確定なため、Saved ディレクトリレベルを指定してください。プログラムが自動的にスキャンします
- palworld-save-tools は存档解析ツールの実装を提供しました
- palworld-server-toolkit は存档の高性能解析の一部を提供しました
- pal-conf 構成生成器ページを提供します
- PalEdit は最初のデータ化思考とロジックを提供しました
- gorcon は RCON リクエスト/レシーブの基本能力を提供しました
Apache2.0 ライセンス に基づいて授与されます。任意の転載は README とファイル部分で明記してください!商用行為は必ず通知してください!