🦍

Minecraft Server を Docker で構築する(Official)

2024/05/16に公開

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

🛠️ 事前準備

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

  • 💻 サーバ機(Ubuntu Server、Docker)
  • 🌐 Docker Hub

1. Docker のインストール

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

2. Proxy Server の構築(Velocity)

プロキシを介して接続する場合は中継サーバーを構築しておく。
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:

  # =================================================== #
  #  Vanila Server                                      #
  # =================================================== #
  vanilla:
    container_name: mc_vanilla
    image: itzg/minecraft-server
    tty: true         # ターミナルの割り当て(`-t`オプション)
    stdin_open: true  # 標準入出力ストリーム(`-i`オプション)
    environment:
      ENABLE_ROLLING_LOGS: "TRUE"
      JVM_OPTS: "-XX:MaxRAMPercentage=75"
      #TYPE: "VANILLA"
      EULA: "TRUE"
      #VERSION: "LATEST"
      MOTD: "The World of Vanilla Server"
      MAX_PLAYERS: 5
      MAX_WORLD_SIZE: 10000
      ENABLE_COMMAND_BLOCK: "TRUE"
      SNOOPER_ENABLED: "FALSE"
      VIEW_DISTANCE: 12
      PVP: "FALSE"
      LEVEL: "lv25565" # a default is "world"
      #ONLINE_MODE: "TRUE"
      ALLOW_FLIGHT: "TRUE"
      USE_NATIVE_TRANSPORT: "TRUE"
      SIMULATION_DISTANCE: ""
      STOP_SERVER_ANNOUNCE_DELAY: 60
      GUI: "FALSE"
    ports:
      - "25565:25565/tcp"
      - "25565:25565/udp"
    volumes:
      - ./vanilla:/data
      - /etc/timezone:/etc/timezone:ro
    restart: unless-stopped

2. Proxy の通信設定

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

🔧 VanillaCord の導入

コンテナに接続して VanillaCord のパッチを当てる。

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

# コンテナに接続
docker container exec -it mc_vanilla bash
🔦 [root@mc_vanilla] /data#
# VanillaCord を ダウンロード
curl -OL https://dev.me1312.net/jenkins/job/VanillaCord/lastSuccessfulBuild/artifact/artifacts/VanillaCord.jar

# パッチプログラムの作成
java -jar VanillaCord.jar `ls minecraft_* | sed -e "s/^.\{17\}//" | sed 's/\.[^\.]*$//'`

# コンテナを抜ける
exit
🖥️ terminal
# コンテナの停止
docker compose rm -fsv vanilla

⚙️ Config (vanillacord.txt)

🖥️ terminal
# パッチの適用
var=`ls ./vanilla/minecraft_* | sed -e "s/^.\{27\}//" | sed 's/\.[^\.]*$//'`
sudo mv ./vanilla/out/$var.jar ./vanilla/minecraft_server.$var.jar

# データ転送の設定
sed -i "s/forwarding = bungeecord/forwarding = velocity/" ./vanilla/vanillacord.txt

# 秘密鍵を設定する
# secret = "IPパケット転送用の秘密鍵の値"
SECRET=`cat ./velocity/forwarding.secret`
sed -i "s/seecret = /seecret = $SECRET/" ./vanilla/vanillacord.txt

3. Docker コンテナの起動

Compose を使ってアプリケーションを起動する。

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

4. Server の環境設定(RCON)

👥 OP権限

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

🖥️ terminal
# RCON クライアントの起動
docker exec -i mc_vanilla rcon-cli

# オペレーター権限を付与
op username

# [Control]+[C]キーで RCON を抜ける

⛳️ 動作確認

1. Minecraft Java Edition の起動

PC端末には予め Minecraft Java Edition のインストールを済ませておく。
https://zenn.dev/mesgory/articles/67d331cb6d3584

Minecraft Launcher を起動し、サイドメニューに「MINECRAFT:Java Edition」を選択、ドロップダウンリストに「最新のリリース」を選択して [プレイ] ボタンを押下する。

2. Minecraft Server への接続

メインメニューより【マルチプレイ】を押下して、サーバーの接続設定と動作確認を行う。

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

🎬 ① Minecraft Server を追加
  1. マルチプレイメニューより【サーバーを追加】を押下する。

  2. サーバーアドレス情報を登録し【完了】を押下する。

🎬 ② Minecraft Server に接続
  1. 一覧から追加した接続先を選び【サーバーに接続】を押下する。

  2. 世界に接続できることを確認する。

Discussion