【パルワールド】マルチプレイサーバーをDockerでサクッと建てる方法
はじめまして!りょうまと申します。
今回、技術的な記事を書いてまとめていくnoteを作成しました。
個人的に興味のある物事について不定期に書いていきたいと思います!
はじめに
第1回目は、最近話題のパルワールドというゲームについてです!
マルチサーバーを自宅サーバーに建ててみたので、建て方をご紹介します。
公式の手順ではホスト側にSteamCMDをインストールして、パルワールドのサーバーソフトウェアを入れるのですが、サーバーの環境を汚したくないと言うのと、のちのち環境の構築・解体・移動が簡単にできるDocker技術を用いてメンテナンス性の高い方法で導入していきます。
参考:公式のサーバー構築手順
Linuxをインストール
VPSなど借りている場合はそちらでOKです(OSはUbuntuにする事)
今回は小型のPCを購入してUbuntuをインストールしました。
セールになっていて6万7,000円ほどで入手できました。
用意したPCスペック
CPU Intel Core i7 12650H
メモリ 32GB(16GB x2)
LAN 2.5Gbps x 2ポート
OS Windows11
ストレージ M.2 SSD 512GB
2.5インチHDD/SSD追加可能
値段の割に結構良いスペックで小型で省スペースでとっても良かったです。
(1月31日にスペック上がった新型のNAB7が出るらしい…)
Ubuntuのインストール
Ubuntu Server公式サイトからiSOイメージをダウンロード
Rufusというフリーソフトで起動USBを用意します。
あとはUSBメモリを刺した状態でPCを起動してUbuntuをインストールします。
詳しいインストール方法は調べるとたくさん出てくると思うので割愛します。
インストールができたら、SSHで接続してください。
TeraTermというフリーソフトがおすすめです。
TeraTermを起動したら、IPアドレスとユーザー名とパスワードでログインしてSSH接続します。
TeraTermでは、マウスで文字を選択するだけでコピーされて、右クリックすると貼り付けになります。癖があるけど便利なので覚えておいてください!
ファイアウォールの設定
公開するサーバーなのでファイアウォールはしっかりと設定しておく事を推奨します。
※VPSを利用している場合はVPS側の機能でセキュリティグループ設定があると思うので、そちらで8211番のUDPを通すように設定してください。
まず最初にSSHのポートを開放しておきます。
※これしないと後で自分自身がアクセスできなくなります!!
# ↓ 各自の環境に合わせてください
sudo ufw allow from 192.168.11.0/24 to any port 22
パルワールドは8211番ポートのUDPを利用するので開放します。
sudo ufw allow 8211/udp
ファイアウォールを有効化します。
sudo ufw enable
Dockerをインストール
コピペでDockerがインストールできます。
# 競合するパッケージを削除
for pkg in docker.io docker-doc docker-compose podman-docker containerd runc; do sudo apt-get remove $pkg; done
#パッケージ インデックスを更新
sudo apt-get update -o Dir::Etc::sourcelist=/dev/null
sudo apt-get install apt-transport-https ca-certificates curl gnupg lsb-release software-properties-common -y
# Dockerの公式GPGキーを追加
sudo install -m 0755 -d /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --yes --dearmor -o /etc/apt/keyrings/docker.gpg
sudo chmod a+r /etc/apt/keyrings/docker.gpg
# Dockerのリポジトリをセットアップ
echo \
"deb [arch="$(dpkg --print-architecture)" signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu \
"$(. /etc/os-release && echo "$VERSION_CODENAME")" stable" | \
sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
# パッケージ インデックスを更新
sudo apt-get update
# Dockerをインストール
sudo apt-get install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin -y
# 自動起動するように設定
sudo systemctl enable docker
sudo systemctl start docker
docker-composeをインストール
docker-composeもインストールしておきます。
sudo curl -L https://github.com/docker/compose/releases/download/v2.12.2/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose
sudo chmod +x /usr/local/bin/docker-compose
Dockerfileを作成
nano Dockerfile
エディタが開いたら下記の中身を貼り付けて、Ctrl + Xで保存。
FROM cm2network/steamcmd:latest AS base
RUN mkdir -p /home/steam/.steam/sdk64/
RUN ./steamcmd.sh +login anonymous +app_update 1007 +quit
RUN cp /home/steam/Steam/steamapps/common/Steamworks\ SDK\ Redist/linux64/steamclient.so /home/steam/.steam/sdk64/
RUN ./steamcmd.sh +login anonymous +app_update 2394010 validate +quit
RUN cp /home/steam/steamcmd/steamservice.so /home/steam/.steam/sdk64/
WORKDIR /home/steam/Steam/steamapps/common/PalServer
EXPOSE 8211/udp
RUN mkdir /home/steam/Steam/steamapps/common/PalServer/Pal/Saved
RUN chown steam.steam /home/steam/Steam/steamapps/common/PalServer/Pal/Saved
CMD ["./PalServer.sh", "players=32", "-useperfthreads", "-NoAsyncLoadingThread", "-UseMultithreadForDS"]
解説
docker-compose.ymlを作成
nano docker-compose.yml
エディタが開いたら下記の中身を貼り付けて、Ctrl + Xで保存。
version: "3.9"
services:
palworld:
build: .
ports:
- "8211:8211/udp"
restart: always
volumes:
- ./Saved:/home/steam/Steam/steamapps/common/PalServer/Pal/Saved
user: "1000:1000"
解説
Savedフォルダを作成
セーブデータと設定の保存先になります。
steam(ID:1000)ユーザーが書き込むので所有者を変えておきます。
mkdir Saved
chown 1000:1000 Saved
コンテナビルド
docker-compose build
サーバー起動
docker-compose up -d
ログの確認
何か動きがおかしくてログを確認したい場合
docker-compose logs -f --tail all
完成
ひとまずここまで実行すれば、パルワールドの専用サーバーメニューからIPアドレスを入力することでゲームを開始できます!
次回はサーバーのゲーム設定を編集してゲームバランスの調整をしてみたいと思います。