Project ZomboidのサーバをUbuntuとDockerで構築する方法

公開日:

Project Zomboidはゾンビがはびこり始めた世界でアイテムを集めたりバリゲードを作ったりするサバイバル2Dゲームです。

このゲームはマルチプレイに対応していてこれが面白いのですが、Linuxなどで専用サーバを立てるのが少々難しいです。
今回は、DockerとUbuntuの環境でサーバを立てる方法を紹介します。

環境

今回の記事ではUbuntu 20.04にDocker CEをインストールした環境で、Dockerコンテナ上にサーバ構築を行いました。
Dockerを使用しているのでほかのバージョンのUbuntuやLinuxでも問題なく動くと思います。

Dockerが入っていない場合は下記を参考にインストールしておいてください。
Docker公式: Install Docker Engine on Ubuntu

サーバファイルの用意

SteamではLinux環境向けにゲームサーバを用意するためのSteamCMDというコマンドが用意されています。

zomboidもこれに対応しているのでSteamCMDに対して専用コマンドを打っていくことでゲームサーバの準備ができるようになっています。

まず、サーバを構築するディレクトリを作ってください。
そのあと下記の3つのファイルをディレクトリ内に作成してください。

update_zomboid.txt

このファイルは、SteamCMD向けの指示コマンドが列挙されたファイルです。
380870という番号はProject Zomboidを表すSteam固有のIDです。

このファイルでは/opt/pzserverというディレクトリにサーバファイルを展開するように指示してます。

@ShutdownOnFailedCommand 1
@NoPromptForPassword 1
force_install_dir /opt/pzserver/
login anonymous
app_update 380870 validate
quit
SteamCMDの詳細な使い方はValve公式のガイドを
https://developer.valvesoftware.com/wiki/SteamCMD

Dockerfile

サーバのイメージを作成するためのDockerファイルです。

Dockerfileはサーバの構築方法を指示するものです。下記では構築時にupdate_zomboid.txtを実行して初期化を済ませるように指示しています。

FROM steamcmd/steamcmd:ubuntu-20

RUN mkdir /opt/pzserver
WORKDIR /opt/pzserver
COPY update_zomboid.txt /opt/update_zomboid.txt
RUN steamcmd +runscript /opt/update_zomboid.txt
ENTRYPOINT ["/bin/bash" , "-l"]

Dockerfileの書き方は下記を参照してください。
Dockerfile リファレンス - Docker公式

docker-compose.yaml

docker-compose.yamlはサーバをどう動作させるか定義するためのファイルです。

セーブデータをディレクトリ内のsaveディレクトリに保存するように指定しています。
zomboidではUDPの16261と16262ポートを使用するので開放させておきます。

version: '3'
services:
    zomboid:
        build: .
        container_name: zomboid
        volumes:
          - ./save:/root/Zomboid
        ports:
          - "16261:16261/udp"
          - "16262:16262/udp"
        command: /opt/pzserver/start-server.sh

docker composeの書き方は下記を参考にしてください。
Docker Compose - Docker公式

セーブディレクトリの作成

ディレクトリ内で下記を実行してセーブデータを入れるディレクトリを作ります。

mkdir save

 テスト起動

一回テスト起動します。

docker compose build
docker compose up
こんな感じのログが出力されたら成功です。
zomboid    | LOG  : Network     , 1688801808085> 4,060,110,023> *** SERVER STARTED ****
zomboid    | LOG  : Network     , 1688801808085> 4,060,110,023> *** Steam is enabled
Steam is enabledが出ていない場合サーバは起動していますが、Steam版のZomboidで遊ぶことができなかったような気がします。
 
一回サーバを落とします(ctrl + c とかdocker compose downとか)。
 

サーバ設定の編集

セーブデータ内の下記ファイルを編集してサーバ設定を編集します。
手順通り作業しているのであれば下記のパスにあるはずです。
save/Server/servertest.ini

ポート開放

UDPの16261と16262ポートがインターネット側からアクセスできるようにファイアウォールやルータの設定を変更します。

サーバ起動

サーバを起動します。
Project Zomboidを起動してアクセスできることを確認しましょう。
docker compose up -d

 まとめ

 steamcmdコマンド使ってproject zomboidのマルチプレイヤーサーバを立てることができました。

更新日: