Dockerでパルワールドサーバーを建てる : レッドストーンを追え(5)
実質ポケモンサーバー
令和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
イーサネット アダプター イーサネット:
IPv4 アドレス . . . . . . . . . . . .: 192.168.1.37
(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でセットできるソリューションはすでにあった。
有名どころは以下の二つ
- https://github.com/jammsen/docker-palworld-dedicated-server
- https://github.com/thijsvanloef/palworld-server-docker
今回は一番メジャーっぽい thijsvanloef/palworld-server-docker
を採用
インストール先は適当で
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
を入力し確定を押下
キャラクタークリエイションの画面が表示されると接続成功
(」・ω・)」パル!(/・ω・)/モン!
サーバー停止
一応停止コマンドも
docker compose down
サーバー設定調整
ここから必須ではないが、
サーバーの設定を調整する方法も説明しておく
thijsvanloef/palworld-server-docker
は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/
先ほど使用したデフォルトパスワードなどは変更しておこう
- - ADMIN_PASSWORD=adminPasswordHere
- - SERVER_PASSWORD=worldofpals # Optional but recommended
- - TZ=UTC
+ - ADMIN_PASSWORD=[任意のパスワード]
+ - SERVER_PASSWORD=[任意のパスワード]
+ - TZ=Asia/Tokyo
拘りがあるのであれば SERVER_NAME
や SERVER_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
参考:
Discussion