はじめに
minecraftの1.18がリリースされました。空や地下が拡張されてより世界が広がったようで、マイクラ世界の拡張は止まるところを知りませんね。
せっかくなので、こちらのバージョンをEC2でサーバー構築してみました。Java17のインストールなど、いくつか躓いたポイントがあったので、その辺りを重点的にまとめたいと思います。
(2021/12/12 追記)
Javaのログ制御系ライブラリ、「Log4j」から脆弱性が発見されました。minecraftもこちらのライブラリを使用しており、外部から攻撃される可能性があります。
今回はそちらの対策についても書いていきたいと思います。
この記事の対象者
- AWSのEC2でサーバーの立ち上げ・停止を行なったことがある方
- IaaSを使って minecraftのサーバーを立ち上げてみたい方
- AmazonLinux2にJava17を導入したい方
環境
- マシンスペック
- t2.medium
- OS
- Amazon Linux 2 (amzn2-ami-kernel-5.10-hvm-2.0.20211201.0-x86_64-gp2)
- Javaバージョン
- Amazon Corretto 17
- Minecraftバージョン
- 1.18.1(もともとは1.18.0で設置しましたが、Log4j対策のため1.18.1にアップデートしました。)
構築手順
若干実際に行った作業より順番が前後していますが、実施したこととしては以下の通りです。
EC2立ち上げ
minecraftはメモリが最低2GB必要なため、今回は t2.medium を選択しました。
今のところ問題なく動作していますが、同時接続人数が増えたらインスタンスのアップグレードも検討しています。
参考:Minecraft wiki サーバー/要件
セキュリティグループ
インバウンドルールでマインクラフトサーバー用のポートを解放します。
Javaのインストール
minecraft 1.18 では Javaのクラスバージョンが61.0以上でなければ起動することができません。こちらのクラスバーションはJava17以上が対応しているので、そちらをサーバーにインストールしたいと思います。
Amazon Corretto 17
Amazon Correttoは、Open Java Development Kit(OpenJDK)の無料、マルチプラットフォーム、本番環境対応のディストリビューションです。Correttoには、パフォーマンスの強化やセキュリティの修正を含む長期的なサポートが付属しています。Correttoは、Java SE標準との互換性があると認定されており、Amazonの内部で多くの本番サービスに使用されています。
引用:https://docs.aws.amazon.com/corretto/latest/corretto-17-ug/what-is-corretto-17.html
AWSではJava環境をあらかじめ準備してくれています。以下のコマンドを実行してサーバーにインストールを行います。プラットフォーム・タイプごとのダウンロードリンク一覧はこちらにあるので、詳しく知りたい方はリンク先を見てください。
- インストール
$ sudo yum install -y https://corretto.aws/downloads/latest/amazon-corretto-17-x64-al2-jre.rpm
- Javaのバージョンチェック
$ java --version
Minecraft Serverソフトのダウンロード
マインクラフト公式で配布しているサーバー用のjar
ファイルを取得します。詳しくは以下の公式ページに書いてあります。
参考:DOWNLOAD THE MINECRAFT: JAVA EDITION SERVER
- マインクラフト用ディレクトリの作成
$ mkdir minecraft
- jarファイルの取得
- こちらは1.18を構築した時点でのリンクです。1.18.1で建てたい方は、リンクを公式ページに書いてある最近のモノにしてください。
$ cd minecraft
$ wget https://launcher.mojang.com/v1/objects/3cf24a8694aca6267883b17d934efacc5e44440d/server.jar
実行
$ java -Xmx1024M -Xms1024M -jar server.jar nogui
こちらを実行すると、eula.txt
というファイルが生成されます。
そのファイルの中のfalse
部分をtrue
に書き換えます。(ここを変えることで、利用規約に同意したことになり、サーバー用スクリプトが実行できるようになります。)
マイクラサーバーを停止するときは、stop
と入力してあげれば終了処理が実施されます。
$ vi eula.txt
# false部分をtrueに書き換えて上書き保存します
$ java -Xmx1024M -Xms1024M -jar server.jar nogui
(2021/12/12 追記)
Log4jの脆弱性が発見されたため、マイクラサーバーを立ち上げる時のコマンドに変化があります。以下のように修正しましょう。
$ java -Xmx1024M -Xms1024M -Dlog4j2.formatMsgNoLookups=true -jar server.jar nogui
まとめ
今回はEC2を使ってマイクラサーバーを立ち上げてみました。Java17のインストール方法で少し手こずりましたが、とても良い勉強になりました。サーバーの勉強をしたい方には、ちょうど良い題材だと思います。立ち上げた直後にLog4jの脆弱性が発見されたため少々焦りましたが、脆弱性の対策なども含めてよい勉強になりました。
次回はこのマイクラサーバーの立ち上げ、停止をdiscordからできるようにしていきたいと思います(もともとこれがやりたかった)。