itamaeのレシピとしてマインクラフト統合版のrecipeが無かったため作りました!!
itamae-plugin-recipe-bedrock_server
インスタンスを立ち上げるとbedrockサーバーが自動で起動します。
Minecraft Server DownloadのMinecraft End User License AgreementとPrivacy Policyを読んでから進めましょう!!
環境
- Microsoft Azure
- Ubuntu 18.04 LTS
- Ruby 2.5.5(Azure Cloud Shell)
MinecraftはMicrosoftによって開発されているので今回はAzureで構築方法を紹介します。今なら¥22,500分無料で使えます1
仮想マシンの作成以外はConohaやGCP, AWSでもネットワークは同様に使用できます。
作業プロジェクトの作成
azure-minecraft-server
というサーバー名で始めます。素敵な名前をつけて上げてください👶
何度も使用するため、変数として扱ってすすめます
SERVER_NAME=azure-minecraft-server
mkdir ${SERVER_NAME}
cd ${SERVER_NAME}
最後には下記のような構成になります。
.
├── .ssh
│ └── id_rsa
└── azure-minecraft-server
├── Gemfile
├── Gemfile.lock
├── node.yml
└── recipe.rb
Gemfileの作成
Gemfileを作成します。
GemfileとはJavaScriptで言うpackage.json
です✍️
source 'https://rubygems.org'
gem 'itamae'
gem 'itamae-plugin-recipe-bedrock_server'
保存しましたら、bundle install
を行います。
bundle install
とは、Javascriptでいうnpm install
です
bundle
設定ファイルの作成
node.ymlを作成します。
詳しい設定はOfficial Minecraft Wiki Server.properties を見てください。殆どの場合は変更しなくて大丈夫でしょう。
自分で構築するサーバーの醍醐味として、server-name, max-playersを今回は設定します
bedrock_server:
configuration:
server-name: "Azure Minecraft Server"
max-players: 1000
recipeの作成
itamaeではプロビジョニングファイルのことをrecipeと読んでいます。recipe.rbを作成します。
Gemfileにgem 'itamae-plugin-recipe-bedrock_server'
を追加したため、bedrock_serverのインストール、インスタンス起動時の自動起動は1行で済みました
残りの3行は、Minrcraftのデフォルトポート19132を許可します。
include_recipe 'bedrock_server'
execute 'ufw --force enable'
execute 'ufw allow 19132/udp'
execute 'ufw reload'
仮想マシンの作成
今回はAzure CLIで作成します。ConohaまたはGCP, AWSを使用している場合、この章はそれぞれの方法で仮想マシンを作成し、SERVER_ADDRESSにアドレスを代入し、次の章へ飛ばしてください。
Azure Cloud Shellを使用しているのでazコマンドがすでにインストール済みです🤟
便利なことに秘密キーは~/.ssh/id_rsaとして使え、itamae実行時のコマンドが少なくなります🙆
今回は西日本にリソースグループを作成します。
マシンタイプはデフォルトだとStandard_DS1_v2が選ばれます。料金はリンクで確認してください。
作成後、Minecraftのデフォルトポート19132を許可します。
# リソースグループの作成
az group create -l japanwest -n ${SERVER_NAME}_group
# 仮想マシンの作成
az vm create \
-g ${SERVER_NAME}_group \
-n $SERVER_NAME \
--image UbuntuLTS \
--admin-username azureuser \
--nsg ${SERVER_NAME}-nsg \
--generate-ssh-keys
# 19132ポートを許可
az network nsg rule create \
-g ${SERVER_NAME}_group \
--nsg-name ${SERVER_NAME}-nsg \
-n MinecraftBedrock_Port \
--priority 100 \
--destination-port-ranges 19132 \
--protocol Udp
# IPアドレスの取得
SERVER_ADDRESS=$(
az vm list-ip-addresses \
-g ${SERVER_NAME}_group \
-n ${SERVER_NAME} \
| jq -r '.[0].virtualMachine.network.publicIpAddresses[0].ipAddress'
) && echo ${SERVER_ADDRESS}
itamaeの実行
これで最後です。
作成した仮想マシンにbedrock serverをインストールします。驚くことに一撃です!
bundle exec itamae ssh -u azureuser -h ${SERVER_ADDRESS} --node-yaml=node.yml recipe.rb
接続
サーバーのIPアドレスを確認します。
ここでは、127.0.0.1
がサーバーアドレスとして返却される例を示しています。
Minecraftを開きサーバーアドレスを入力してください。少し長いローディングのあと、世界が開けるでしょう。お疲れ様でした👐
echo ${SERVER_ADDRESS}
# => 127.0.0.1
次にやることは?
今回は1コアのサーバーを作成しました。少ない人数だと大丈夫かもしれませんが、大人数だと遅く感じるでしょう。マシンサイズの変更を行ってみましょう!
Japan Minecraft Serversにサーバーを登録し、仲間と交流しましょう!
127.0.0.1
というサーバーアドレスは覚えづらい?ドメインを購入してみましょう!