第1回 Amazon Linux2023 で minecraft を遊ぶ – バニラサーバー構築編

本シリーズの目標
何かしらの手段でインスタンスを起動させ、minecraft を遊べるようにする。
minecraft は mod の導入が可能な forge サーバーにする。
ログインしている人がいなくなったら、自動的にインスタンスを停止させる。
最終的には、AMI 化してインスタンスを終了することで、課金額を抑える。
今回の目標
Amazon Linux2023 で minecraft のバニラサーバーを構築します。
今回の対象者
今回は、AWS アカウントの作成が出来るレベルの方であれば、どなたにでも出来るように考えています。
サーバーに接続する必要はありますが、特別なソフト(Tera Term などのターミナルエミュレーター)は利用しません。
はじめに
猫とキャンプと野球観戦と AWS が大好きな旦那、LeoSaki です。モフモフしたい。
とりあえず、AWS アカウントだけ、ご用意ください。
それでは準備はよろしいでしょうか?
ロールの作成
ロールとは、AWS サービスやアプリケーションに対して AWS リソースの操作権限を付与するための仕組みです。
噛み砕いて言うと、通常、サーバーがファイルを保存している場所(S3)にアクセスしようとしても、拒否されます。たとえ自分が作ったサーバーと自分が作った S3 であっても、拒否されます。セキュリティ的には当然のことだと思うのですが、詳しくない人にとっては躓きポイントの一つかもしれません。
そこで、S3 にアクセスしてもいいよ、というロールを作成してサーバーにアタッチしてあげます。
晴れて、サーバーが S3 にアクセスすることが出来るようになりました。
(大変噛み砕いているので、厳密にはもう少しいろいろとあるのですが、ロールとは AWS サービスに他の AWS サービスを使ってもいいよ、と許可してあげる仕組み、です)
今回はターミナルエミュレーターの代わりに AWS Systems Manager を利用して、サーバーに接続するためのロールを作成します。
検索ボックスに「IAM」と入力して、「IAM」のコントロールパネルを開きます


左の柱から「ロール」を選択します

「ロールを作成」を選択します

信頼されたエンティティタイプは「AWS のサービス」
サービスは「EC2」
ユースケースは「EC2 Role for AWS Systems Manager」を選択します
選択後、下部に「次へ」というボタンがありますので、押してください

ここは、特に何もせず「次へ」ボタンを押します

ロール名は分かりやすいものを入力してください
私は「minecraft-ec2-role」としました
最後に、下部の「ロールの作成」を押します

画面が変わって、ロール「ロール名」が作成されました、表示されたら成功です

EC2 インスタンスの作成
EC2 インスタンスは、サーバーのこと。Minecraft はこのサーバーの中で動きます。
マネジメントコンソールから「EC2」を検索して開きます


※ 右上が「東京」となっていることを確認してください※

「インスタンスを起動」を押します

サーバーに分かりやすい名前をつけます
ここでは「minecraft-server」としました

※ 重要 ※
Amazon マシンイメージ(AMI)は、「Amazon Linux 2023 AMI」を選択します
アーキテクチャは、「64 ビット(Arm)」を選択します

※ 重要 ※
インスタンスタイプは「t4g.medium」を選択します

※ 重要 ※
キーペアは「キーペアなしで続行(推奨されません)」を選択します

「Allow SSH traffic from」のチェックボックスを外し、右上の「編集」を押します

セキュリティグループ名は分かりやすいものをつけましょう
私は「minecraft-serever-sg」としました
「セキュリティグループを追加」を押します

タイプ「カスタム TCP」
ポート範囲「25565」
ソースタイプ「任意の場所」

ストレージを設定で、赤で囲んだところを「10」に設定し、右下の「インスタンスを起動」を押します

しばらく待って、「成功」の画面が表示されたら、「すべてのインスタンスを表示」を押します

お目当てのサーバーが表示されない場合は、「更新ボタン」を押してみてください

EC2 インスタンスにロールをアタッチ
インスタンスの作成のタイミングでもロールをアタッチすることは出来るのですが、他の設定パラメーターが多くて分かりづらいため、このタイミングでロールをアタッチします。
先ほど作成したインスタンスを選択
「アクション」→「セキュリティ」→「IAMロールを変更」の順番に選択します

最初に作成したロールを選択し、「IAMロールの更新」を押します
もし表示されない場合は、右横の更新ボタンを押してみてください

正常にアタッチしました、と表示されれば成功です

Minecraft の構築
実際に Minecraft が遊べるようにサーバーの中の設定を作っていきます。
インスタンスにチェックをつけて、「接続」を押します

!!! Oooops !!!
ロールをアタッチした直後、このような画面になってしまうことがあります

しばらく待つか、再起動を試してみてください
また、Ctrl キー + F5 キーを押して、キャッシュをクリアしてみてください

正常な状態になると、以下の画面から「接続」を選択出来るようになります

接続すると、真っ黒い画面が表示されます

実際にコマンドを打っていきます
アップデートをかけて最新の状態にします
$ sudo yum update -y
Java 17 をインストールするために、corretto.aws を利用します
$ sudo rpm --import https://yum.corretto.aws/corretto.key
$ sudo curl -L -o /etc/yum.repos.d/corretto.repo https://yum.corretto.aws/corretto.repo
Java 17 をインストールします
$ sudo yum install -y java-17-amazon-corretto-devel
ディレクトリを移動し、Minecraft 用のディレクトリを作成します
$ cd /home/ssm-user/
$ mkdir minecraft
作成した Minecraft 用のディレクトリに移動します
$ cd minecraft/
インスタンスにインストールするためのファイルのパスを取得します
以下のリンクのページに飛びます

利用したいバージョンのダウンロードボタンを押し、
「Download Server Jar」を右クリックして、「リンクのアドレスをコピー」を選択します

セッションマネージャーの黒い画面に、入力します
$ wget 【先ほどコピーしたアドレスを貼り付ける】
Minecraft を起動します
$ java -jar -Xms2048M -Xmx2048M server.jar nogui
※ 重要 ※ 初回は必ずエラーで停止します
ソフトウェア利用許諾契約を承諾します
$ vim eula.txt
「false」を「true」に変えてやる必要があります

キーボードの「i」を入力(INSERTモード)
「false」をバックスペースで削除して「true」を入力

「Esc」キーを押す
「:wq」を入力
「Enter」キーを押す
再度、Minecraft を起動します
$ java -jar -Xms2048M -Xmx2048M server.jar nogui

Minecraft に接続してみよう
Minecraft の Java Edition を PC で遊ぶ方法については、たくさんの方が記事を書かれているので割愛。
まずは、サーバーの IP アドレスを確認しておきます。
インスタンス一覧の画面から、マイクラ用インスタンスにチェックを入れて、下部に表示される「パブリック IP」を確認します

いつも通りに、Minecraft Launchar を起動させてください
赤で囲んだ部分をインストールしたバージョンと合わせましょう

「マルチプレイ」を選択します

「サーバーを追加」を選択します

先ほど確認したパブリック IP アドレスを入力して、完了ボタンを押します

さぁ、遊びに行きましょう!

なぜ夜か!

スクショを撮るためだけに朝を待つ

ゲームを終了します
AWS EC2 インスタンスは、動かしている間だけお金がかかります(従量課金)。ですから、ゲームを楽しんだ後は、マインクラフトインスタンスを停止しておきます。
セッションマネージャーで「/stop」を入力します

右上の「終了」を押します

確認が表示されるので、問題ないことを確認して「終了」を押します

インスタンスにチェックを入れて、「インスタンスの状態」から「インスタンスを停止」を選択します

インスタンスが停止しました

ゲームの再開方法
インスタンスにチェックを入れて、「インスタンスの状態」から「インスタンスを開始」を選択します

インスタンスが正常に開始したらパブリック IP を確認しておきます
チェックボックスにチェックを入れたインスタンスの情報を画面下部で確認出来ます

「接続」ボタンを押して、セッションマネージャーでインスタンスに接続します



コマンドを入力します
$ cd /home/ssm-user/minecraft/
$ java -jar -Xms2048M -Xmx2048M server.jar nogui

Minecraft を立ち上げます
マルチプレイの画面で「編集」を選択します

先ほど確認した IP アドレスに修正します

ゲーム再開!

最後に
いかがでしたか? 思ったより簡単じゃなかったですか?
遊び終わったら、インスタンスは停止しましょう。お金かかる。
しかし、立ち上げるたびにコマンドを打ったり、IP アドレスを確認して修正したり、結構手間がかかる子です。
次回以降、この辺りを修正していきたいと思います。
引き続き、よろしくお願いいたします。
ディスカッション
コメント一覧
まだ、コメントがありません