1台のサーバーで、複数グループ分のMinecraft Educationワールドを同時運用するためのDocker構成です。
前提: 公式ドキュメントに記載のサーバー構築手順(デバイスコード認証・管理ツールによる有効化など)を理解していることを前提としています。
- Dedicated Server FAQ
- Dedicated Server Alternate Configuration(Tooling and Scripting Notebook)
cp .env.example .env.env を編集して最低限以下を設定します。
SERVER_PUBLIC_IP_LAN=192.168.1.100 # LAN 内からの接続先IP(必須)
# SERVER_PUBLIC_IP_WAN=example.com # LAN 外から接続させる場合のみ設定LAN 内用と LAN 外用のアドレスを両方定義しておき、ワールドごとに SERVER_NETWORK_WORLD_N=wan のように指定すれば、どちらの接続先を広告するかをワールド単位で切り替えられます(未指定なら SERVER_NETWORK_COMMON、それも無ければ lan)。
その他の設定は _COMMON 項目で全ワールドのデフォルト値を一括設定できます。個別ワールドで上書きしたい場合は _WORLD_1 のように指定します。
優先順位: 個別設定(
_WORLD_N)> 共通設定(_COMMON)> デフォルト値
make add PORT=19132 # ワールド1
make add PORT=19134 # ワールド2(複数運用する場合)ワールド番号は自動採番されます。ポート番号は .env にも自動追記されます。
ポート番号の注意:
- 公式はセキュリティ上、既定ポート(19132)を避けることを推奨しています。
- 同一ホスト上のワールドには必ず別々のポートを割り当ててください。同じポートで2つ起動すると、参加者側に「無効なテナントID(Invalid Tenant ID)」エラーが出ます。
make upサーバーバイナリは起動時に自動でダウンロードされます。server/bedrock_server_edu に手動配置するとダウンロードをスキップします。
初回起動時にログ(logs/world{N}/)にデバイスコードとURLが出力されます。ブラウザでそのURLを開き、テナントのグローバル管理者アカウントでサインインしてください。
テナント設定で「Allow Teachers to Manage Servers」が有効な場合は、教員(Faculty)アカウントでもサーバーの作成・認証ができます。ただしテナント側の Dedicated Server 有効化そのものは、グローバル管理者しか行えません。
サインイン後に sessions/world{N}/edu_server_session.json が生成され、以降は自動更新されます。
Dedicated Server Admin Portal でサーバーの Enabled をオンにしてください(オフのままでは誰も参加できません)。
Broadcast は任意です。
- オン: テナント内の全ユーザーのサーバー一覧に自動表示されます(ユーザー側から一覧を削除することはできません)。
- オフ: ユーザーがクライアントの「サーバーを追加」から、12桁の英数字(大文字小文字の区別なし)のサーバーIDを手入力して参加します。
Windows の場合: Docker Desktop は WSL2 上で動作するため、WSL2 のターミナル(Ubuntu 等)で実行してください。
permission denied/make: command not foundになる場合(NAS 等): Docker デーモンへの接続に root 権限が必要で、かつmakeが sudo のPATHに含まれていない環境では、以下のように現在のPATHを引き継いで実行してください。sudo env "PATH=$PATH" make up
# 本番運用
make up NOTIFY=true BACKUP=true # 全ワールド + 通知 + 自動バックアップ
# 起動オプション
make up # 全ワールドのみ起動
make up WORLDS="1 2" # 指定ワールドのみ起動
make up NOTIFY=true # 通知スタックも一緒に起動
make up BACKUP=true # バックアップサービスも一緒に起動
# その他
make build # イメージを再ビルド
make down # 全ワールドを停止
make restart # 全ワールドを再起動
make logs N=1 # ワールド1 のログを表示
make ps # 全コンテナの状態を表示
make backup # 今すぐ手動バックアップ
make add PORT=19134 # 新しいワールドを追加設定ファイルを更新したときは再ビルドが必要:
property-definitions.json/entrypoint.sh/Dockerfileはビルド時にイメージへ COPY されるため、これらの変更(新バージョン対応の取り込みなど)を反映するにはイメージの再ビルドが必要です。make build # イメージを再ビルド make down make upなお Minecraft サーバーバイナリ自体は起動時に自動更新されるため、バイナリのバージョンアップだけであれば再ビルドは不要です(再ビルドが必要なのは上記リポジトリ側ファイルを変更した場合)。
Makefile # ワールドの起動・追加コマンド
docker-compose.world{N}.yml.example # ワールド定義テンプレート(make add が使用)
docker-compose.notify.yml # 通知スタック(Vector + Apprise)
docker-compose.backup.yml # 自動バックアップ(make up BACKUP=true)
Dockerfile / entrypoint.sh # コンテナ定義
property-definitions.json # 環境変数 → server.properties のマッピング定義
.env.example # 環境変数テンプレート
vector/vector.toml.example # Vector 設定テンプレート
apprise/minecraft.yml.example # 通知先設定テンプレート
docker-compose.world1.yml # make add で生成
docker-compose.world2.yml # make add で生成
.env # .env.example からコピー
worlds/world{N}/ # ワールドデータ
├── worlds/{LEVEL_NAME}/ # ゲームワールドデータ
├── behavior_packs/ # ビヘイビアパック
├── resource_packs/ # リソースパック
├── allowlist.json
├── permissions.json
└── packetlimitconfig.json
sessions/world{N}/ # Entra 認証セッション(自動更新。失効時は再度デバイスコード認証)
logs/world{N}/ # サーバーログ
chat_logs/world{N}/ # チャットログ(CHAT_LOGGING_ENABLED=true のとき出力)
server/ # サーバーバイナリ手動配置用(省略可)
プレイヤーの参加/退出・チャット・サーバーイベントを ntfy や LINE 等に通知できます。
cp vector/vector.toml.example vector/vector.toml
# vector.toml を編集して ntfy トピック等を設定
cp apprise/minecraft.yml.example apprise/minecraft.yml
# minecraft.yml を編集して通知先 URL を設定(LINE 等)
make up NOTIFY=trueChatLog ファイル(chat_logs/world{N}/)を監視し、[日時] - で始まる行をすべて通知します。
前提: ChatLog ファイルはサーバー本体の機能(
chat-logging-enabled、1.21.133 以降)で出力されます。.envのCHAT_LOGGING_ENABLED_COMMON=true(既定値)が必要です。この設定はあとから変更できますが、反映にはサーバーの再起動が必要です。
- 公式ドキュメント(Servers セクション)
- Dedicated Server FAQ
- Dedicated Server System Requirements
- IT Admin: Create Dedicated Servers
- Teacher View: Create Dedicated Servers
- Dedicated Server Alternate Configuration
- Modifying Existing Servers(
server.propertiesの各項目一覧) - Dedicated Server Advanced Setup(allowlist・パスコード)
- Enabling Cross-Tenant Play(他テナントからの参加。本構成では未検証)
リポジトリのコード: PolyForm Noncommercial 1.0.0(非商用利用のみ許可)
Minecraft Education Edition サーバーバイナリの利用は Microsoft の利用規約に従います。