第3回 Amazon Linux2023 で minecraft を遊ぶ – 起動停止設定編

マインクラフトのアイコン

本シリーズの目標

何かしらの手段でインスタンスを起動させ、minecraft を遊べるようにする。

minecraft は mod の導入が可能な forge サーバーにする。

ログインしている人がいなくなったら、自動的にインスタンスを停止させる。

最終的には、AMI 化してインスタンスを終了することで、課金額を抑える。

今回の目標

ここまでに作成した minecraft サーバーは、セッションマネージャーを介してインスタンスに接続して、コマンドを入力しなければ動きませんでした。

今回は、インスタンスを起動させたら、そのまま遊ぶことが出来るような設定を行います。

今回の対象者

前回記事を参考に、Mod サーバーを構築出来ている方が対象となります。

そんなに難しくはありませんので、是非、挑戦してみてください!

はじめに

猫とキャンプと野球観戦と AWS が大好きな旦那、LeoSaki です。モフモフしたい。

以前、Teraterm を利用したやり方で書いたことがあるのですが、AWS を使っているのなら、とことん AWS のサービス、システムを活用しよう、というのが一番の目的です。22 番ポートを開放せずにサーバーでの作業が出来ているのも、わかる人からすれば面白いなぁ、と思っていただけると幸いです。

現在、Minecraft で遊んでらっしゃる方は、一旦、停止させてください。

/stop コマンドで停止。忘れてないですよね?

自動起動シェルスクリプトの作成

セッションマネージャーで接続後、念のためカレントディレクトリをホームディレクトリに移動しておきます

$ cd

vim コマンドを利用してファイルを作成します

$ vim minecraft_script.sh

以下のコードをコピーして、貼り付けてください

#!/bin/bash

start() {
    cd minecraft
    screen -AmdS minecraft sh run.sh
}

stop() {
    screen -p 0 -S minecraft -X eval 'stuff "stop"\015'
}

case "$1" in
    start)
        start
        ;;
    stop)
        stop
        ;;
    *)
        echo $"Usage: $0 {start|stop}"
esac

作成したスクリプトを保存します

「Esc」キーを押します

「:wq」を入力します

「Enter」キーを押します

スクリプトの動作確認

Minecraft サーバーが起動するか、確認

コマンドを入力します

$ sh -x minecraft_script.sh start

実際に Minecraft に繋ぐことが出来るか、確認

夜なうえに雨!

Minecraft サーバーが停止するか、確認

※ 先にゲーム画面を終了させてください。

コマンドを入力します

$ sh -x minecraft_script.sh stop

サーバーに繋がらなくなったことを確認

自動起動の設定

コマンドを入力します

$ sudo vim /etc/systemd/system/minecraft.service

以下のコードをコピーして貼り付けてください

[Unit]
Description=Minecraft Server
After=network.target local-fs.target

[Service]
Type=forking
User=ssm-user
WorkingDirectory=/home/ssm-user/
ExecStart=/home/ssm-user/minecraft_script.sh start
ExecStop=/home/ssm-user/minecraft_script.sh stop

[Install]
WantedBy=multi-user.target

作成したスクリプトを保存します

「Esc」キーを押します

「:wq」を入力します

「Enter」キーを押します

インスタンスの起動時にスクリプトが動くように設定します

$ sudo systemctl enable minecraft.service

パーミッション(権限)を変更します

$ chmod 744 minecraft_script.sh

おまけ:タイムゾーンの設定

これは、やらなくても良いです。

今後、ログ等を確認する際に、やっておくと少しだけ便利かもしれません。

また、この作業の後には、インスタンスの再起動が必要となるため、このタイミングで実施しています。

現在の設定の確認
UTC になっています

$ sudo timedatactl

タイムゾーンの変更

$ sudo timedatectl set-timezone Asia/Tokyo

確認

$ sudo timedatectl

自動起動設定の動作確認

起動確認 EC2 インスタンスの再起動

該当インスタンスにチェックを入れて、「インスタンスの状態」から「インスタンスの再起動」を選択する

これまでは、再起動終了後、セッションマネージャーを起動して「sh run.sh」コマンドを打つ必要があったが・・・
Minecraft を起動する

起動確認 EC2 インスタンスの停止 → 起動

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

「停止済み」になったことを確認

該当インスタンスにチェックを入れて、「インスタンスの状態」から「インスタンスを開始」を選択する

Minecraft の起動。
IP アドレスが変わっています。編集画面から修正することをお忘れなく!

最後に

これで、インスタンスを起動すれば、すぐに Minecraft が遊べるようになりました!

しかし、EC2 のコンパネに接続しなければならなかったり、IP アドレスが変わってしまったり、少し不便は残ると思います。

今後は、この辺りの「少し不便」を解消するため方法を考えたいと思います。

引き続き、よろしくお願いします!

AWS,EC2,MinecraftAWS,EC2,MineCraft

Posted by LeoSaki