PalworldサーバーをDockerで立てるのに、設定で頭を悩ませなくて済む方法
今年の年始に猛威を振るったPalworld旋風を覚えていますか?今もなお一定のプレイヤー層を維持しており、大型アップデートがリリースされるたびに、自前のサーバーで友達と集まろうという気運が高まります。しかし、Linuxで公式サーバーを動かそうとしたことがある人なら分かる通り、SteamCMDの依存関係、パーミッションの問題、 constantly leaking memory(常にメモリリークを起こす問題)など、非常に頭を悩ませる要素が多いのです。
Thijs van Loef氏によるpalworld-server-dockerプロジェクトは、生のツールをコミュニティが磨き上げて使いやすくした好例です。必要なものがすべて1つのコンテナにパックされており、自動化も備わっています。そして何より、ARM64サポートがあるのです。
手動インストールより便利な理由
通常、ゲームサーバーの構築は延々と設定ファイルを編集し、ポートと格闘することになってしまいます。ここでは、すべて環境変数で管理できます。難易度を変更したいとか、PvPを有効にしたいとか,只需編集してコンテナを再起動すればOK。
ちなみに、このプロジェクトはクラシックなx86だけでなく、Raspberry Pi 4/5やM1/M2/M3チップ搭載のMacにも対応しています。ARMベースのホームサーバーを使っている人にとっては、x86アプリケーションを動作させるためにBox64で面倒な設定をする必要がないので、まさに救世主です。ここでは箱から出してすぐに使えます。
このコンテナできること
著者は単にサーバーの「ラッパー」を作っただけでなく、公式ビルドにはぜひ欲しいと思っていた機能を追加しています。
自動バックアップとアップデート
Palworldサーバーは現在の状態(早期アクセス版)では、クラッシュしたりセーブデータが破損したりしがちです。このコンテナにはCronサポートが組み込まれています。デフォルトでは深夜0時にバックアップを取りますが、 fácil(簡単に)再設定できます。古いアーカイブの自動削除機能も備わっているので、1週間もすればディスクがいっぱいになる心配がありません。
スマート一時停止(Auto-Pause)
リソースを気にする人にとって、おそらく最もクールな機能でしょう。コンテナは、サーバーに誰もいない時にサーバープロセスを「スリープ」状態にできます。誰かが接続しようとすると、サーバーが目覚めます。これによりRAMとCPUサイクルを大きく節約でき、スペックの低いVPSを借りている場合に特に重要です。
Discord連携
Webhookを接続すれば、サーバーがあらゆるイベントをチャンネルに報告します:誰が参加しました、誰が退出しました、アップデートが始まった時、バックアップが作成された時など。些細なことかもしれませんが、ゲームにログインしなくてもワールドの状況を監視できて便利です。
ハードウェア要件
Palworldはリソースをかなり消費します。4〜8人程度でプレイする予定なら、以下の数値を目指してください:
- CPU:最低4コア。
- RAM:16GBが必要最低ラインです。安定した運用には開発者が32GBを推奨していますが、長いセッション中にメモリリークの問題があるためです。
- ディスク:約8〜20GB。
Docker Composeを使ったクイックスタート
最も簡単な始め方はDocker Composeを使うことです。compose.yamlファイルを作成し、基本的な設定を追加してください:
services:
palworld:
image: thijsvanloef/palworld-server-docker:latest
restart: unless-stopped
container_name: palworld-server
stop_grace_period: 30s
ports:
- 8211:8211/udp
- 27015:27015/udp
environment:
- PUID=1000
- PGID=1000
- PORT=8211
- PLAYERS=16
- MULTITHREADING=true
- SERVER_NAME=My-Awesome-Pal-Server
- ADMIN_PASSWORD=SuperSecretAdminPass
- SERVER_PASSWORD=LetMeIn123
- COMMUNITY=false
volumes:
- ./palworld:/palworld/
その後、docker compose up -dを実行するだけです。コンテナがSteamCMDをダウンロードし、最新のサーバーソフトウェアを取得して、ワールドを起動します。
RCONとREST APIを使った管理
問題を起こしたプレイヤーをキックしたり、全プレイヤーにメッセージを送りたい時(「5分後にサーバーを再起動します」)など、コンテナの中に入る必要はありません。イメージにはrcon-cliとrest-cliユーティリティが組み込まれています。
メッセージ配信のコマンド例:
docker exec -it palworld-server rcon-cli "Broadcast Внимание! Технические работы"
独自のボットを書いてサーバー管理を行いたい人のために、完全なREST APIが用意されています。デフォルトでポート8212で有効になっています。
試す価値はあるか
Palworldで1晩限りではなく長期的にプレイする予定なら、このリポジトリは必須です。バックアップのルーティンを排除してくれ、環境変数を通じてゲームバランス(タマゴの孵化速度、Palのダメージ、昼夜のサイクル速度など)を柔軟に設定できます。
唯一の注意点は、ゲームのRAMへの欲求です。Dockerの中でもサーバーは利用可能なリソースをすべて「食い尽くす」可能性があるので、スケジュールベースの自動再起動(ここでも利用可)を設定しておくと非常に便利です。
このプロジェクトは積極的にメンテナンスされており、コミットも頻繁にされています。Discordコミュニティもバグに対して迅速に対応しています。ホームホスティングや友達向け的小規模サーバーに、現時点ではこれが最良のソリューションです。
関連プロジェクト