🦍

Java版 Minecraft Mod Server を Docker で構築する(Fabric)

2024/06/11に公開

コンテナ型仮想環境で、Java版マインクラフトのMODサーバー『Fabric』を構築します。使用するコンテナイメージは Docker 社が運営する公開レジストリの Docker Hub から取得します。

🛠️ 事前準備

デバイスやソフトウェアは以下を用いる。

1. Docker のインストール

以下の記事より Docker のインストールを済ませておく。
https://zenn.dev/mesgory/articles/e4a707b0c31c76

2. Proxy Server の構築(Velocity + Geyser を利用する場合)

プロキシを介して接続する場合は中継サーバーを構築しておく。
https://zenn.dev/mesgory/articles/4f22286eda3b8c

3. データ格納用ディレクトリの用意

データを永続的に管理するためのディレクトリを用意する。

🖥️ terminal
# データ格納用ディレクトリの作成(存在しない場合)
mkdir -v /media/shared/minecraft

# カレント・ディレクトリの変更
cd /media/shared/minecraft

🎭 作業手順

1. Docker リポジトリのセットアップ

Compose ファイル を編集する。(詳細は公式ドキュメントを参照)

🖥️ terminal
# Compose ファイルの作成
vi ./compose.yaml
📄 compose.yaml
services:

  fabric:
    container_name: mc_fabric
    image: itzg/minecraft-server
    tty: true
    stdin_open: true
    environment:
      ENABLE_ROLLING_LOGS: "TRUE"
      JVM_OPTS: "-XX:MaxRAMPercentage=75"
      TYPE: "FABRIC"
      EULA: "TRUE"
      VERSION: "LATEST" #Default
      MOTD: "The World of Fabric Server with Crossplay"
      MAX_PLAYERS: 5
      MAX_WORLD_SIZE: 10000
      ENABLE_COMMAND_BLOCK: "TRUE"
      SNOOPER_ENABLED: "FALSE"
      VIEW_DISTANCE: 12
      PVP: "FALSE"
      ONLINE_MODE: "FALSE" # Use Proxy Server
      ALLOW_FLIGHT: "TRUE"
      USE_NATIVE_TRANSPORT: "TRUE"
      STOP_SERVER_ANNOUNCE_DELAY: 60
      GUI: "FALSE"
      MODS: |
        https://github.com/FabricMC/fabric/releases/latest/download/fabric-api-0.100.0+1.20.6.jar
        https://github.com/OKTW-Network/FabricProxy-Lite/releases/latest/download/FabricProxy-Lite-2.8.0.jar
        https://cdn.modrinth.com/data/bWrNNfkb/versions/YlFk39jA/Floodgate-Fabric-2.2.3-SNAPSHOT%2Bbuild.25.jar
      SERVER_PORT: "30067"
    ports:
      - "30067:30067/tcp"
      - "30067:30067/udp"
    volumes:
      - ./fabric:/data
      - /etc/timezone:/etc/timezone:ro
    restart: unless-stopped
  fabric-backups:
    container_name: mc_fabric_bk
    image: itzg/mc-backup
    environment:
      BACKUP_NAME: "fabric"
      BACKUP_INTERVAL: "12h"
      PRUNE_BACKUPS_DAYS: 5
      PAUSE_IF_NO_PLAYERS: "true"
      PLAYERS_ONLINE_CHECK_INTERVAL: "5m"
      INITIAL_DELAY: "2m"
      RCON_HOST: fabric
    depends_on:
      - fabric
    volumes:
      - ./fabric:/data:ro
      - ./backups:/backups
      - /etc/timezone:/etc/timezone:ro
    restart: unless-stopped
    network_mode: "service:fabric"

2. Docker コンテナの初回起動と停止

Compose を使ってアプリケーションを起動し、必要なファイル群が生成されたら一旦停止する。

🖥️ terminal
# コンテナの構築と起動(バックグラウンド実行)
docker compose up -d

# コンテナの停止
docker compose down

3. 設定ファイルの編集

各サービスの設定をサーバー環境に合わせて編集する。

👥 OPリスト

任意のプレイヤーに管理者権限を付与する。

🖥️ terminal
# ops.txt を作成(オペレータ権限を付与するユーザーを列挙する)
tee -a ./paper/ops.txt <<EOF >/dev/null
username
EOF

4. Proxy の通信設定(Velocity + Geyser を利用する場合)

プロキシを介して接続する場合は中継サーバーの設定も編集しておく。

⚙️ Config (FabricProxy-Lite.toml)

🖥️ terminal
# 秘密鍵を設定する
# secret = "IPパケット転送用の秘密鍵の値"
SECRET=`cat ./velocity/forwarding.secret`
sed -i "s/secret = \"\"/secret = \"$SECRET\"/" ./fabric/config/FabricProxy-Lite.toml

🔌 Floodgate

🖥️ terminal
# キーファイルの配置
mv ./fabric/config/floodgate/key.pem ./fabric/config/floodgate/key.pem.org
cp ./velocity/plugins/floodgate/key.pem ./fabric/config/floodgate/

4. 設定内容の反映

プロセスを再起動して設定内容を反映する。

🖥️ terminal
# コンテナの再構築と起動(バックグラウンド実行)
docker compose up -d --build

⛳️ 動作確認

1. Minecraft Server の動作確認

リンク先の記事 ⛳️ 動作確認 を参考にして、サーバーに接続できることを確認する。

https://zenn.dev/mesgory/articles/e3dc962bd38dfd

サーバー名 サーバーアドレス(host:port)
任意の名前 ホスト名またはIPアドレス:30067
※プロキシを介して接続する場合は中継サーバーのポートを指定する

Discussion