【Minecraft for AWS】 EC2インスタンスでMinecraftサーバーを構築

2021.07.07

テクニカルサポートチームの丸屋 正志(Maruya Masashi)です。

1. Minecraft for AWS シリーズについて

Minecraft を用いて、AWS サービスを楽しく学習ができたらと思い、こちらのブログシリーズを始めました。

対象者としては、AWS 未経験or初学者、もしくはクラウドサービスを用いて Minecraft サーバーを立ててみたい人向けになります。

なお、一部 AWS を使用しなくても良い箇所もあるかと思いますが、基本的には "Minecraft for AWS" で全てを解決していきます。(一部外部の SaaS を使用予定)

現在、AWS サービスは約205個以上あります、私自身も全てを網羅しているわけではありませんが、 Minecraft を介して触れれる AWS サービスを全て触ってブログ化していきます。


2. 前提条件

2.1. Minecraftサーバーを立てる理由

Minecraftマルチサーバーの基礎

Minecraft自体は、シングルプレイとマルチプレイの両方が出来ます。

個人で遊ぶのであれば、シングルプレイで問題はありませんが、友人やネットの人達と一緒に遊びたいということはありませんでしょうか?
そういった時に、みんなで遊べる空間(サーバー/場所)があると盛り上がりますよね!

そこで、今回は "みんなで遊べる空間" を AWS の EC2 を用いて構築していきます。


3. EC2インスタンス編

3.1. そもそもEC2インスタンスとは?

EC2 (Elastic Compute Cloud)は、サイズ変更可能な仮想マシンをクラウド内で提供するウェブサービスです。 リソースが必要な時に数分で新規インスタンスを立ち上げ、変更する事ができ、必要がなくなれば終了させることでコスト効率化をはかることができます。

上記ブログでは、各種項目の詳しい詳細が書いてありますので、併用して進めていくと面白いかと思います。

3.2. EC2インスタンスの作成

初めに、 Minecraft を動かすためのインスタンス(サーバー/場所)を準備していきます。

AWS コンソールを開きましたら、〔EC2〕と入力して選択します。

Image from Gyazo

EC2 インスタンスのコンソール画面に移動後、画面右上にある 【インスタンスを起動】 を選択します。

Image from Gyazo

《ステップ 1 : Amazon マシンイメージ(AMI)》 にて、 【Amazon Linux 2 AMI】 を選択します。

Image from Gyazo

《ステップ 2 : インスタンスタイプの選択》 にて、少し下にスクロールをして 【t3.medium】 を選択します。

Image from Gyazo

《ステップ 3 : インスタンスの詳細の設定》 については、デフォルトのままで次に行きます。

Image from Gyazo

《ステップ 4 : ストレージの追加》 についても、デフォルトのままで次に行きます。

Image from Gyazo

《ステップ 5 : タグの追加》 にて、 【キー】 と 【】 を入力します。

  • キー : 〔Name
  • 値 : 〔Minecraft_Server

参考情報
キー(Key) と 値(Value) を付けることにより、作成したリソースを管理がしやすくなります。
ドキュメント : Amazon EC2 リソースのタグ付け - タグの基本

Image from Gyazo

《ステップ 6 : セキュリティグループの設定》 にて、下記の様にします。

  • セキュリティグループの割り当て : 【新しいセキュリティグループを作成する
    • セキュリティグループ名 : 〔Minecraft_SG
    • 説明 : 〔Minecraft_SG
タイプ プロトコル ポート範囲 ソース 説明
SSH TCP 22 マイIP 自分のIP/32 HomeIP(任意)
カスタムTCP TCP 25565 カスタム 0.0.0.0/0 (任意)

Image from Gyazo

《ステップ 7 : インスタンス作成の確認》 にて、 【起動】 を選択します。

Image from Gyazo

《既存のキーペアを選択するか、新しいキーペアを作成します。》 にて、下記の様にします。

  1. 新しいキーペアを選択
  2. キーペア名に 〔Minecraft-key〕 と入力
  3. キーペアのダウンロード】 を選択
  4. インスタンスの作成】 を選択

Image from Gyazo

インスタンス画面に戻り、しばらく待つと当該インスタンスの 『ステータスチェック:2/2 のチェックに合格しました』 と表示されますので 【パブリックIPv4アドレス】 をコピーします。

Image from Gyazo

3.3. EC2 インスタンスに接続

Mac の場合は下記コマンドを実行します。

# ダウンロードした秘密鍵ファイルを ~/.ssh配下に移動
mv ~/Downloads/Minecraft-key.pem ~/.ssh

# 秘密鍵ファイルに対してアクセス権限を変更
chmod 600 ~/.ssh/Minecraft-key.pem

# 作成したインスタンスに SSH 接続
ssh -i ~/.ssh/Minecraft-key.pem ec2-user@【パブリックIPv4アドレス】

参考情報
そもそも、秘密鍵とは?
秘密鍵 【secret key】 シークレットキー / 私有鍵 / private key / プライベートキーを参照


4. 各種パッケージのインストール編

インスタンスを立ち上げることが出来ましたら、続いてはシステムのアップデートや必要なパッケージの導入をしていきます。

4.1. パッケージのアップデート

sudo yum -y update

4.2. Java 16 の導入

Minecraft 1.17 からは、Java 16 を導入する必要があります。

Minecraft now uses a more recent version of Java. If you are using a default setup the Launcher will download and install the correct version. If you are using a custom Java setup or a third-party launcher, you will need to ensure that your Java installation is version 16 or above.

=> https://www.minecraft.net/en-us/article/minecraft-snapshot-21w19a

Java 16 をインストールする為には、yum リポジトリの追加が必要となりますので追加をしていきます。

vi というエディターの使い方

  • i : 入力モードに切替
  • Esc : コマンドモードに切替
  • :wq : 保存して終了
sudo vi /etc/yum.repos.d/adoptopenjdk.repo

==============追加内容==============
[AdoptOpenJDK]
name=AdoptOpenJDK
baseurl=https://adoptopenjdk.jfrog.io/artifactory/rpm/amazonlinux/2/x86_64
enabled=1
gpgcheck=1
gpgkey=https://adoptopenjdk.jfrog.io/adoptopenjdk/api/gpg/key/public
==================================

java 16 のインストール

sudo yum -y install adoptopenjdk-16-hotspot.x86_64 git

バージョン確認方法
(実行時期により 16.0.1 以外になるかと思いますが、2021/07/07 時点では問題なく動作範囲内です。)

java -version

==============出力結果==============
openjdk version "16.0.1" 2021-04-20
OpenJDK Runtime Environment AdoptOpenJDK-16.0.1+9 (build 16.0.1+9)
OpenJDK 64-Bit Server VM AdoptOpenJDK-16.0.1+9 (build 16.0.1+9, mixed mode, sharing)
==================================

5. Minecraft サーバー環境構築編

Java 16 が導入出来ましたら、Minecraft サーバーを立ち上げていきます。

5.1. 作業ディレクトリの作成

Amazon Linux 2 のデフォルトユーザーである ec2-user 配下に作業環境を作成していきます。

# ディレクトリの作成
mkdir ~/minecraft

# ディレクトリの移動
cd ~/minecraft/

# 現在の場所を確認
pwd
==============出力結果==============
# pwd を実行後に下記になっていることを確認
/home/ec2-user/minecraft
===================================

5.2. Minecraft サーバーのビルド

バニラ/CraftBukkit/Spigot と様々な種類がありますが、ここでは将来的にプラグインを利用出来る Spigot というものを使用します。

# BuildToolsを取得
wget https://hub.spigotmc.org/jenkins/job/BuildTools/lastSuccessfulBuild/artifact/target/BuildTools.jar

# バージョンを指定してビルド
java -jar BuildTools.jar --rev 1.17

==============出力結果==============
# ビルドには数分ほど掛かるため、気長にお待ちします
~<略>~
Success! Everything completed successfully. Copying final .jar files now.
Copying spigot-1.17-R0.1-SNAPSHOT.jar to /home/ec2-user/minecraft/./spigot-1.17.jar
  - Saved as ./spigot-1.17.jar
===================================

5.3. Minecraft サーバー起動

Minecraft サーバーを起動するファイルを作成します。

vi Minecraft_start.sh

==============追加内容==============
#!/bin/sh
java -Xmx2048M -Xms1024M -jar /home/ec2-user/minecraft/spigot-1.17.jar nogui
===================================

実際の追加内容です。 Image from Gyazo

上記で作成したファイルに対して実行権限を付与します。

chmod +x Minecraft_start.sh

初めて起動する際に、下記のような結果が出力されて停止します。

sh Minecraft_start.sh

==============出力結果==============
Loading libraries, please wait...
[11:50:06] [main/ERROR]: Failed to load properties from file: server.properties
[11:50:06] [main/WARN]: Failed to load eula.txt
[11:50:06] [main/INFO]: You need to agree to the EULA in order to run the server. Go to eula.txt for more info.
===================================

EULAに同意の上、生成されたファイル(eula.txt) の 【eula=false】 から 【eula=true】 に置換後、再度 【Minecraft_start.sh】 を実行します。

sed -i -e "s/eula=false/eula=true/g" eula.txt
sh Minecraft_start.sh

==============出力結果==============
~<略>~
[12:59:52] [Server thread/INFO]: Time elapsed: 5072 ms
[12:59:52] [Server thread/INFO]: Server permissions file permissions.yml is empty, ignoring it
[12:59:52] [Server thread/INFO]: Done (46.876s)! For help, type "help"
>
===================================

6. Minecraft サーバー接続編

お使いの Minecraft(Java版) を起動して

  1. 【マルチプレイ】 を選択
  2. 【サーバーを追加】 を選択
  3. 【接続】 を選択

接続を致しますと・・・みんなで遊べる空間が準備出来ました。

Image from Gyazo


7. お片付け編

EC2 インスタンスは起動をしていると料金が発生いたします、そのため使わなくなった場合には削除などをして料金を抑えたいと思います。

EC2 コンソールのインスタンス画面に行きましたら、当該インスタンスを選択し、【インスタンスの状態】から【インスタンスを終了】を選択して、インスタンスを終了(削除)していきます。

Image from Gyazo


8. さいごに

以上で、【Minecraft for AWS】 のEC2インスタンスを使った Minecraft サーバーの構築方法でした。

これからも、シリーズを続けていくため、よければご参考くださいませ!