>_ DevTrendsja

言語

ホーム

言語

セクション

フロントエンド バックエンド モバイル DevOps AI / ML ゲーム開発 ブロックチェーン セキュリティ
Shell

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-clirest-cliユーティリティが組み込まれています。

メッセージ配信のコマンド例:

docker exec -it palworld-server rcon-cli "Broadcast Внимание! Технические работы"

独自のボットを書いてサーバー管理を行いたい人のために、完全なREST APIが用意されています。デフォルトでポート8212で有効になっています。

試す価値はあるか

Palworldで1晩限りではなく長期的にプレイする予定なら、このリポジトリは必須です。バックアップのルーティンを排除してくれ、環境変数を通じてゲームバランス(タマゴの孵化速度、Palのダメージ、昼夜のサイクル速度など)を柔軟に設定できます。

唯一の注意点は、ゲームのRAMへの欲求です。Dockerの中でもサーバーは利用可能なリソースをすべて「食い尽くす」可能性があるので、スケジュールベースの自動再起動(ここでも利用可)を設定しておくと非常に便利です。

このプロジェクトは積極的にメンテナンスされており、コミットも頻繁にされています。Discordコミュニティもバグに対して迅速に対応しています。ホームホスティングや友達向け的小規模サーバーに、現時点ではこれが最良のソリューションです。

関連プロジェクト