🕋

Dockerでパルワールドサーバーを建てる : レッドストーンを追え(5)

2024/02/05に公開

実質ポケモンサーバー

令和6年1月19日衝撃の問題作が発売された。

パルワールド

広大な世界で不思議な生物『パル』を集めて、戦闘・建築・農業を行わせたり、工場で労働させたりする全く新しいマルチ対応のオープンワールドサバイバルクラフトゲームです。

各詳細はここでは省くとして。
筆者も執筆時点で72時間遊んでいる。
(レベル40ぐらい)

以前マイクラのサーバーを建てる記事をいくつも書いたけど、
パルワールドのサーバーも立ててみるかと思い立ち、
ちょっとやってみることに。
(なので レッドストーンを追え シリーズ)
Docker経由でサーバーが動くようにして、
気が向けばNASとかサーバーPCに搭載しよう。

ちなみにPodmanやWSLインスタンスでも試しているが、
いまのところ動いてない...
(動いたら後日記事にする)

ヾ(・ω<)ノ" 三三三● ⅱⅲ コロコロ♪

------------------- ↓ 本題はここから ↓-------------------

事前準備

事前にインストールしてる各種アプリは以下の通り

アプリ バージョン 備考
パルワールド v0.1.4 公式テックガイド: https://tech.palworldgame.com/dedicated-server-guide
Docker Desktop v.4.27.1 起動状態
git for windows 2.43.0.vfs.0.0

自身のPCのローカルIPを取得

後述するが標準の接続値になっている 127.0.0.1:8211 では接続ができないっぽい
なのでローカルIPアドレス使用する。
ipconfigやpowershellコマンドで取得

ipconfig
ipconfig
イーサネット アダプター イーサネット:
   IPv4 アドレス . . . . . . . . . . . .: 192.168.1.37
powershell
(Get-NetIPAddress | Where-Object {$_.AddressFamily -eq "IPv4" -and $_.InterfaceAlias -notlike "*Pseudo*"}).IPAddress[0]
 192.168.1.37

palworld-server-dockerをクローン

続いてパルワールドのDedicated Server(専用サーバー)を用意するのだが、
購入者が1200万人もいるサービスだけあって、
docker composeでセットできるソリューションはすでにあった。
有名どころは以下の二つ

今回は一番メジャーっぽい thijsvanloef/palworld-server-docker を採用
インストール先は適当で

powershell
git clone https://github.com/thijsvanloef/palworld-server-docker.git
cd palworld-server-docker
docker compose up -d --build

Docker DesktopのUIやdocker compose logsでログを確認。
STARTING SERVER欄の[S_API FAIL] Tried to access Steam interface ~が見えたら起動完了

(;'ω') 成功なのに FAIL とはこれ如何に

パルワールドの世界へ

サーバーの準備ができたので、
クライアントから接続する
「マルチプレイに参加する(専用サーバー)」の最下部にある以下の項目を記入して接続を押下

  • パスワードを入力するにチェック
  • アドレス欄に [ローカルIP]:8211を記入

パスワード入力欄が表示されるので初期パスワード worldofpals を入力し確定を押下

キャラクタークリエイションの画面が表示されると接続成功

(」・ω・)」パル!(/・ω・)/モン!

サーバー停止

一応停止コマンドも

powershell
docker compose down

サーバー設定調整

ここから必須ではないが、
サーバーの設定を調整する方法も説明しておく

thijsvanloef/palworld-server-docker はdocker-compose.ymlに設定値を記載する仕様

デフォルト docker-compose.yml 全文
docker-compose.yml
services:
   palworld:
      image: thijsvanloef/palworld-server-docker:latest
      restart: unless-stopped
      container_name: palworld-server
      stop_grace_period: 30s # Set to however long you are willing to wait for the container to gracefully stop
      ports:
        - 8211:8211/udp
        - 27015:27015/udp # Required if you want your server to show up in the community servers tab
      environment:
         - PUID=1000
         - PGID=1000
         - PORT=8211 # Optional but recommended
         - PLAYERS=16 # Optional but recommended
         - SERVER_PASSWORD=worldofpals # Optional but recommended
         - MULTITHREADING=true
         - RCON_ENABLED=true
         - RCON_PORT=25575
         - TZ=UTC
         - ADMIN_PASSWORD=adminPasswordHere
         - COMMUNITY=false  # Enable this if you want your server to show up in the community servers tab, USE WITH SERV
ER_PASSWORD!
         - SERVER_NAME=World of Pals
         - SERVER_DESCRIPTION=palworld-server-docker by Thijs van Loef
      volumes:
         - ./palworld:/palworld/

先ほど使用したデフォルトパスワードなどは変更しておこう

docker-compose.yml
-         - ADMIN_PASSWORD=adminPasswordHere
-         - SERVER_PASSWORD=worldofpals # Optional but recommended
-         - TZ=UTC
+         - ADMIN_PASSWORD=[任意のパスワード]
+         - SERVER_PASSWORD=[任意のパスワード]
+         - TZ=Asia/Tokyo

拘りがあるのであれば SERVER_NAMESERVER_DESCRIPTION などを変えるのもあり

------------------- ↓ 後書きはここから ↓-------------------

今回も丸一日エラーメッセージと格闘する羽目になった
サーバー建てる時にはありがちだけど、
('Д') やっぱ、辛ーわ

接続がタイムアウトしました


おきのどくですが ぼうけんのしょは きえてしまいました

このエラーは全く接続できていないことを意味している。
なのでパスワードが違うのかなとかではなく接続自体を疑う方がいい。
(特にUDPポート)

いろんな方法を試したけど、
一番安定しているのがローカルIP直打ちだった。

なので本編ではIPを最初に取得している

No password has been entered


〇〇は のろわれてしまった

これは単純にパスワードが異なっている。
接続できないとは比べ物にならないぐらい安心できる

サーバー起動時のパスワード設定 SERVER_PASSWORD を再度確認して、
パスワードを入力するにチェックを入れて接続を試す
(ちなみにパスワードは丸見えなので当たり障りのないものにすること)

UDPポートの疎通確認方法

疎通確認しても動くとは限らない前提だが、
Portが空いてるかどうかは確認できる。

netstatではスルーされるのでnmapを使う。

インストール
winget install Insecure.Nmap

(;'∀') insecure って

疎通可
nmap  192.168.1.37 -sU -p 8211
 PORT     STATE         SERVICE
 8211/udp open|filtered unknown
疎通不可
nmap  192.168.1.37 -sU -p 8211
 PORT     STATE  SERVICE
 8212/udp closed unknown

参考:
https://urashita.com/archives/34218#nmap

Discussion