Azure Virtual Machine (Ubuntu 24.04) で Minecraft サーバー(Bedrock Edition)を構築する

Azure Virtual Machine (Ubuntu 24.04) で Minecraft サーバー(Bedrock Edition)を構築する

Clock Icon2025.05.24

いわさです。

この DevelopersIO にもいくつかブログがあるのですが[1]、ゲーム Minecraft のゲームサーバーは自分で用意することも出来ます。

ゲームのリファレンスアーキテクチャの一例として Microsoft Learn 上で次のようなページが提供されています。

https://learn.microsoft.com/ja-jp/gaming/azure/reference-architectures/multiplayer-basic-game-server-hosting

上記ドキュメントは日本語版でして、以前は英語版も提供されていたのですがいつのまにか無くなっていました。
こちらのドキュメントもなくなる前に一度作って備忘録を残しておくかと思い、今回 Microsoft Azure 上の仮想マシンで Minecraft サーバーを構築したのでその手順を紹介します。

なお、Minecraft には Java Edition と Bedrock Edition の 2 つが存在しており、クライアントとサーバーの Edition をあわせる必要があります。
このブログでは Bedrock Edition の構築手順となっています。

Java Edition の場合はバイナリ入手先や、通信ポートなどいろいろ異なっていますのでご注意ください。

Azure 仮想マシンの作成

まず、Minecraft Bedrock Edition のサーバー Windows あるいは Ubuntu 向けに提供されています。

https://www.minecraft.net/en-us/download/server/bedrock

今回は Ubuntu で Azure 仮想マシンを用意し、そこで動作させてみます。
まずは Azure ポータルから仮想マシンのメニューを選択します。

A23ACD96-C58D-4F5D-A754-E150C53F7036.png

東日本リージョンに仮想マシンを作成します。
マシンイメージでは LTS である Ubuntu Server 24.04 LTS - x64 Gen2 を選択しました。
インスタンスサイズですが、前述の公式ドキュメントに「ユーザーが 10 人未満であれば、2 個の仮想 CPU (vCPU) と 4 GB の RAM を備えた Standard B2s のような小さい Azure 仮想マシンでも問題ありません。」と記載されていたので、Standard B2ls_v2 にしました。

589FFFC7-354B-4BE2-978B-24524ABF37B5.png

今回のコンセプトとしては出来るだけランニングコストを下げることが優先だったので、ストレージはデフォルトの Premium SSD からより安価な Standard SSD に変更しました。

2A760606-9FA7-4BF5-A2AE-B9E735F3B704.png

仮想マシンの準備はこんな感じです。

Minecraft サーバーのインストールと実行

続いて、作成した Ubuntu 仮想マシンに SSH で接続し Minecraft サーバーモジュールをインストールします。
前述のページより Minecraft Bedrock Edition のサーバーモジュールをダウンロードリンクを取得します。

72E95C42-EC74-4419-9354-2D84FB8DD33D_1_105_c.jpeg

ここでダウンロードして SSH 経由でアップロードしても良いですが、私はサーバー上から取得しました。
この Web サーバー、どうやらユーザーエージェントのチェックをしているようでして普通にwgetしても失敗しました。
HTTP request sent, awaiting responseからレスポンスがうまく取得できない方は、ユーザーエージェントを何かしら設定してみましょう。

% wget --user-agent="Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36" \
  https://www.minecraft.net/bedrockdedicatedserver/bin-linux/bedrock-server-1.21.83.1.zip
--2025-05-24 15:08:46--  https://www.minecraft.net/bedrockdedicatedserver/bin-linux/bedrock-server-1.21.83.1.zip
Resolving www.minecraft.net (www.minecraft.net)... 23.52.128.89, 23.52.128.75
Connecting to www.minecraft.net (www.minecraft.net)|23.52.128.89|:443... connected.
HTTP request sent, awaiting response... 200 OK
Length: 67247621 (64M) [application/x-zip-compressed]
Saving to: ‘bedrock-server-1.21.83.1.zip.1’
bedrock-server-1.21.83.1.zip.1 100%[====================================================>]  64.13M  41.4MB/s    in 1.5s
2025-05-24 15:08:47 (41.4 MB/s) - ‘bedrock-server-1.21.83.1.zip.1’ saved [67247621/67247621]

続いて zip ファイルの展開をします。
なお、bedrock_serverがサーバーモジュール、server.propertiesが主な設定ファイルです。
デフォルトはサバイバルモードになっていまして、クリエイティブモードに変更したい場合やサーバー設定を変えたい場合はこの設定ファイルを変更する必要があります。

iwasa@minecraft-server:~$ sudo apt-get install unzip
Reading package lists... Done
Building dependency tree... Done
Reading state information... Done
Suggested packages:
  zip
The following NEW packages will be installed:
  unzip
0 upgraded, 1 newly installed, 0 to remove and 0 not upgraded.
Need to get 174 kB of archives.
After this operation, 384 kB of additional disk space will be used.
Get:1 http://azure.archive.ubuntu.com/ubuntu noble-updates/main amd64 unzip amd64 6.0-28ubuntu4.1 [174 kB]
Fetched 174 kB in 0s (895 kB/s)
Selecting previously unselected package unzip.
(Reading database ... 95522 files and directories currently installed.)
Preparing to unpack .../unzip_6.0-28ubuntu4.1_amd64.deb ...
Unpacking unzip (6.0-28ubuntu4.1) ...
Setting up unzip (6.0-28ubuntu4.1) ...
Processing triggers for man-db (2.12.0-4build2) ...
Scanning processes...
Scanning linux images...
Running kernel seems to be up-to-date.
No services need to be restarted.
No containers need to be restarted.
No user sessions are running outdated binaries.
No VM guests are running outdated hypervisor (qemu) binaries on this host.
iwasa@minecraft-server:~$ unzip bedrock-server-1.21.83.1.zip
Archive:  bedrock-server-1.21.83.1.zip
  inflating: allowlist.json
  inflating: bedrock_server
  inflating: bedrock_server_how_to.html
   creating: behavior_packs/
   creating: behavior_packs/chemistry/
   creating: behavior_packs/chemistry/__brarchive/
   :
  inflating: resource_packs/vanilla/texts/uk_UA.lang
  inflating: resource_packs/vanilla/texts/zh_CN.lang
  inflating: resource_packs/vanilla/texts/zh_TW.lang
  inflating: server.properties

最後にサーバー起動を行います。

iwasa@minecraft-server:~$ LD_LIBRARY_PATH=. ./bedrock_server
NO LOG FILE! - setting up server logging...
[2025-05-24 06:11:09:446 INFO] Starting Server
[2025-05-24 06:11:09:446 INFO] Version: 1.21.83.1
[2025-05-24 06:11:09:446 INFO] Session ID: 77152fb2-631e-4c79-9916-8b84e41def27
[2025-05-24 06:11:09:446 INFO] Build ID: 33674285
[2025-05-24 06:11:09:446 INFO] Branch: r/21_u8
[2025-05-24 06:11:09:446 INFO] Commit ID: 8ece772699d3e88a1a61d92551395c4d968059b5
[2025-05-24 06:11:09:446 INFO] Configuration: Publish
[2025-05-24 06:11:09:447 INFO] Level Name: Bedrock level
[2025-05-24 06:11:09:447 INFO] No CDN config file found for dedicated server
[2025-05-24 06:11:09:447 INFO] Game mode: 0 Survival
[2025-05-24 06:11:09:447 INFO] Difficulty: 1 EASY
[2025-05-24 06:11:09:448 INFO] Content logging to console is enabled.
[2025-05-24 06:11:09:814 INFO] Opening level 'worlds/Bedrock level/db'
[2025-05-24 06:11:09:828 INFO] [SERVER] Pack Stack - None
[2025-05-24 06:11:10:376 INFO] IPv4 supported, port: 19132: Used for gameplay and LAN discovery
[2025-05-24 06:11:10:376 INFO] IPv6 supported, port: 19133: Used for gameplay
[2025-05-24 06:11:10:401 INFO] Server started.
[2025-05-24 06:11:10:402 INFO] ================ TELEMETRY MESSAGE ===================
[2025-05-24 06:11:10:402 INFO] Server Telemetry is currently not enabled.
[2025-05-24 06:11:10:402 INFO] Enabling this telemetry helps us improve the game.
[2025-05-24 06:11:10:402 INFO]
[2025-05-24 06:11:10:402 INFO] To enable this feature, add the line 'emit-server-telemetry=true'
[2025-05-24 06:11:10:402 INFO] to the server.properties file in the handheld/src-server directory
[2025-05-24 06:11:10:402 INFO] ======================================================

これでサーバー自体は起動できたのですが、通信経路の確保が必要です。
Bedrock Edition の場合は UDP 19132 を使います。
なので、仮想マシンのネットワーク設計から受信セキュリティ規則を追加します。
もし Ubuntu 側で ufw を有効化している場合はそちらも許可設定が必要です。

5220C6AF-B12E-4913-9929-CFA992C3D966_1_105_c.jpeg

クライアントから仮想マシンのパブリック IP アドレスに接続すると無事ゲームサーバーに接続出来ると思います。

なお、SSH セッション上でbedrock_serverを実行していたので、Ctrl + C で終了するとゲームサーバーが終了してしまいます。次のように終了した瞬間、リビングにいる息子からクレームが飛んできました。

[2025-05-24 07:19:45:312 INFO] ================ TELEMETRY MESSAGE ===================
[2025-05-24 07:19:45:312 INFO] Server Telemetry is currently not enabled.
[2025-05-24 07:19:45:312 INFO] Enabling this telemetry helps us improve the game.
[2025-05-24 07:19:45:312 INFO]
[2025-05-24 07:19:45:312 INFO] To enable this feature, add the line 'emit-server-telemetry=true'
[2025-05-24 07:19:45:312 INFO] to the server.properties file in the handheld/src-server directory
[2025-05-24 07:19:45:312 INFO] ======================================================
^C

OS 起動時のバックグラウンドで実行させれると良さそうですが、ちょっと他の事情があって今回は Azure レイヤーで対応したいのです。
今回は仮想マシンのリモートコマンド実行機能から RunShellScript でbedrock_serverを起動させました。

image.png

cd /home/iwasa
LD_LIBRARY_PATH=. ./bedrock_server

おいおい自動化したいと思います。

さいごに

本日は Azure Virtual Machine (Ubuntu 24.04) で Minecraft サーバー(Bedrock Edition)を構築したので備忘録的に残しておきました。

一旦普通に使えそうなのですが近々で抑えておきたいのはサーバーモジュールのバージョンアップ手順を検証しておきたいですね。結構高頻度でアップデートされ、クライアントとのバージョンが離れると接続できなくなってしまうので。

脚注
  1. Minecraft の記事一覧 | DevelopersIO ↩︎

Share this article

facebook logohatena logotwitter logo

© Classmethod, Inc. All rights reserved.