皆様こんにちは。
今回はAmazon Lightsailの無料期間(三か月)を利用してMinecraftサーバーを立てる方法を紹介します。

前提条件

・AWSアカウントを保有しており、マネジメントコンソールにアクセスできる。
・今までにLightsailを利用したことがない。(無料期間を開始していない)
・Minecraft Java Edition 1.18.2
・公式サーバーではなく軽量化された「PaperMC」サーバーを利用。
・無料期間は三か月間であるため、課金されたくない場合期間内にインスタンスの削除をしてください。

Amazon lightsailとは

Amazon Lightsail は、数クリックでウェブアプリケーションやウェブサイトを立ち上げられる、使いやすいクラウドリソースを提供します。Lightsail は、インスタンス、コンテナ、データベース、ストレージなどの簡素化されたサービスを提供します。Lightsail では、WordPress、Prestashop、LAMP などの事前に設定されたブループリントを使用して、ウェブサイトやアプリケーションを簡単に立ち上げることができます。また、Lightsail では、静的なコンテンツをホストするだけでなく、世界中のオーディエンスにコンテンツを提供したり、Windows Business サーバーを立ち上げて実行することもできます。Lightsail コンソールは、設定プロセスをガイドし、多くの場合はコンポーネントがすでに設定されています。    公式ドキュメントより

今回はAmazon Lightsailのインスタンスサービスを利用してマインクラフトのサーバーを構築していきます。

Minecraftサーバー構築

1.Lightsailインスタンス作成

では早速Minecraftサーバーを構築するためにまずインスタンスを作成します。

設定値は下記の通りです。(今回利用しない部分は省略しています)

項目 デフォルト値 設定値 説明
インスタンスロケーション 東京、ゾーン A (ap-northeast-1a) 東京、ゾーン A (ap-northeast-1a)
プラットフォームの選択 Linux/Unix Linux/Unix
設計図の選択 アプリ+OS,
WordPress(5.9.3-8)
OSのみ,
Amazon Linux 2 (2.0.20220426.0)
SSH キーペアの変更 新しいデフォルトキーの作成 既存のキーペア キーペアがない場合、新規作成してください。
インスタンスプランの選択 $3.5USD $10USD 無料期間があるもので、一番性能が高いものを選択。
Lightsail リソース名 Amazon_Linux_2-1 Minecraft-Server 識別しやすい名前に変更。

Lightsailのマネジメントコンソールから「インスタンスの作成」をクリック。(画像では見切れていますがページ右下で言語の変更ができるので、英語になっている場合日本語に変更してください)
file

上記の表にしたがって設定していきます。
file

SSHキーペアがない場合新規作成し、プライベートキーをダウンロードしてください後程使用します。
file

設定を完了し、問題がなければ「インスタンス作成」を最後にクリックします
file

これでMinecraftサーバーに必要なインスタンスを作成できました。
file

2.ファイアウォールルール設定

今回のMinecraftサーバーに必要なファイアウォールルールを下記の表に合わせて設定していきます。

変更前(デフォルト)IPV4ファイアウォールルール

アプリケーション プロトコル ポートまたは範囲/コード 制限
SSH TCP 22 任意のIPv4アドレス
Lightsailブラウザ SSH/RDP
HTTP TCP 80 任意のIPv4アドレス

変更後IPv4ファイアウォールルール

アプリケーション プロトコル ポートまたは範囲/コード 制限
SSH TCP 22 自身のパブリックIPv4アドレス
Lightsailブラウザ SSH/RDP
カスタム TCP 25565 自身のIPv4アドレス

自分のパブリックIPを調べるには下記のサイトを参考にしてください。
https://www.cman.jp/network/support/go_access.cgi

今回はIPv6ネットワーキングは利用しないため、無効化します。

それでは設定をしていきます。
まず下記画像の赤枠をクリックし、
file

「管理」をクリックします。
file

「ネットワーキング→+ルールを追加」の順にクリックしていき、
file

ポートまたは範囲に「25565」、IPアドレスに制限するにチェックを付けて送信元IPアドレスに自分のパブリックIPを入力後、作成をクリック。
file

「25565」ポートのルールが追加されているのを確認したら、次にSSHのルールを変更するために画像の赤枠をクリックし、
file

IPアドレスに制限するにチェックを付けて、送信元IPアドレスに自分のパブリックIPを入力後、保存をクリック。
file

SSHのルールが変更されているのを確認したら、今回HTTPプロトコルは使用しないので画像赤枠をクリックしてルールを削除します。
file

これでIPv4ファイアウォールルールの設定を完了しました。次にIPv6ネットワーキングを無効化します。
file

画像の赤枠をクリックして、
file

「はい、無効にします」を選択。
file

IPv6ネットワーキングが無効になり、これでファイアウォールルール周りの設定は完了しました。最後にSSH接続に使用するパブリックIPをコピーするため、「ホーム」をクリックしてインスタンス一覧画面に戻ります。
file

赤枠の部分に数字が表示されていると思うので、コピーしてください。
file

3.Minecraftサーバーセットアップ

インスタンスに接続して設定するために、TeraTermを使用します。

「ホスト(T):」に先ほどコピーしたパブリックIPを貼り付け、「OK」をクリック。
file

「ユーザ名(N):」に"ec2-user"と入力し、「RSA/DSA/ECDSA/ED25519鍵を使う」で、インスタンス作成時にダウンロードしたキーペアを選択します。最後に「OK」クリックし、コンソールに入ることができたら成功です。
file

接続に成功したらまず、パッケージのアップデートを行います。

sudo yum update -y

アップデートが完了したら次にJavaをインストールしていきます。
今回はOpenJDKのAmazon Correttoを使用します。

sudo yum install -y java-17-amazon-corretto

次に以下のコマンドを入力して、インストールできたかを確認してください。

java -version

インストールできていれば以下の出力が表示されます。

openjdk version "17.0.3" 2022-04-19 LTS
OpenJDK Runtime Environment Corretto-17.0.3.6.1 (build 17.0.3+6-LTS)
OpenJDK 64-Bit Server VM Corretto-17.0.3.6.1 (build 17.0.3+6-LTS, mixed mode, sharing)

そしたら次に、「Minecraft」というディレクトリを作成し、その中にMinecraftサーバーを導入します。

mkdir Minecraft
cd Minecraft

作成したディレクトリ内に利用するMinecraftサーバーをダウンロードします。
*今回は公式サーバーではなく軽量化された「PaperMC」サーバーを利用します。

wget https://papermc.io/api/v2/projects/paper/versions/1.18.2/builds/313/downloads/paper-1.18.2-313.jar

サーバーをダウンロードできたら下記のコマンドを使用してサーバーを起動してみましょう。

java -Xmx1024M -Xms1024M -jar paper-1.18.2-313.jar nogui

しかし以下の出力を返され起動に失敗してしまいます。

[17:22:46 ERROR]: Failed to load properties from file: server.properties
[17:22:46 WARN]: Failed to load eula.txt
[17:22:46 INFO]: You need to agree to the EULA in order to run the server. Go to eula.txt for more info.

起動に失敗しましたがeula.txtという規約同意書が生成されます。
規約を承認するため以下のコマンドを入力して「eula=false」の箇所を「eula=true」に変更してください。

vi eula.txt

変更後再度サーバーを起動してみましょう。

java -Xmx1024M -Xms1024M -jar paper-1.18.2-313.jar nogui

以下の様な出力がされていれば起動は成功しているはずです。

--<略>--
[16:42:56 INFO]: Preparing level "world"
[16:43:05 INFO]: Preparing start region for dimension minecraft:overworld
[16:43:06 INFO]: Time elapsed: 997 ms
[16:43:06 INFO]: Preparing start region for dimension minecraft:the_nether
[16:43:07 INFO]: Time elapsed: 433 ms
[16:43:07 INFO]: Preparing start region for dimension minecraft:the_end
[16:43:07 INFO]: Time elapsed: 509 ms
[16:43:07 INFO]: Running delayed init tasks
[16:43:07 INFO]: Done (12.652s)! For help, type "help"
[16:43:07 INFO]: Timings Reset

4.MInecraftサーバー接続

今回構築したMinecraftサーバーに接続してみましょう。

1.自分のマインクラフトを起動し「マルチプレイ」を選択。
file

2.「サーバーを追加」を選択。
file

3.「サーバーアドレス」にインスタンスのパブリックIPを入力後、「完了」を選択。
file

4.追加したサーバーを選択し、「サーバーに接続」を選択。
file

これで接続できました。
file

ここまで出来たらTeraTermのコンソールに戻り以下のコマンドを入力して、自分のマインクラフトユーザーにop権限を与えます。

op [自分のマイクラID]

成功したら以下の出力が表示されます。

[18:19:36 INFO]: Made [自分のマイクラID] a server operator

これで自分のマインクラフトユーザーはマインクラフトのチャットを利用してサーバーを停止したり、時間の操作などができるようになりました。

5.ホワイトリスト設定

現在ファイアウォールルールの設定の関係上自分しかこのサーバーに入れないので、ルールを再度変更し、マインクラフトのホワイトリスト機能を利用して自分が許可した人がサーバーにはいれるように設定します。

まずIPv4ファイアウォールの「25565」ポートのルールを変更します。
file

「IPアドレスに制限する」のチェックを外して「保存」をクリック。
file

これでファイアウォールルールの変更を完了しました。

しかしこのままではインスタンスのパブリックIPを知られさえすれば誰でもサーバーに入られてしまうため、マインクラフト側でホワイトリストを設定して制限をかけます。

ホワイトリストを有効化するために以下のコマンドを入力します。

whitelist on

ホワイトリストを有効化するとホワイトリストに追加されていないユーザは下記の表示がされ、サーバーに接続することができなくなります。
file

サーバー接続を許可する人をホワイトリストに追加するには下記のコマンドを入力してください。(自分自身はop権限を持つためホワイトリスト関係なしにサーバーに接続できます)

whitelist add <追加したい人のマイクラID>

これでホワイトリスト設定の説明を終わります。

最後に、Minecraftサーバを停止するには以下のコマンドを使用してください。

stop
Last modified: 2022-05-09

Author