AWS を使ってマイクラサーバーを立ち上げる

当ページのリンクには広告が含まれています。
アイキャッチ

こんにちは、ふじみや です。

マインクラフトを遊んでいると「マルチプレイ用のサーバーを立ててみたい。けど立て方よく分かんない。ちょっと調べたけどレンタルサーバーって結局高くつきそう」、「わが家ではJava版だけど、子どもの友達は統合版なので、一緒に遊べるようにできないだろうか」といった思いを持たれている方も多いのではないでしょうか。

そこで今回は、マイクラのマルチプレイをするのは週末だけ、またサーバーを立てるなんてしたことがない、という方向けに利用している時間だけ課金されるAWSを使ったマイクラサーバーの立て方についてご説明をしたいと思います。

ずっとサーバーを立ち上げておきたいというヘビーユーザーの方はAWSを利用するとむしろ割高になる可能性が高いかと思います。そういった方は Virtual Private Server(VPS)などのサービスを利用した方がお得です。また、レンタルサーバーやVPSについては以下の記事にて説明をしていますので、ご参考ください。

ちなみに、私はマイクラ以外にも学習用としてVPSを利用したくなったこともあり、現在では Xserver VPS を利用しています。キャンペーン期間中は3年契約をすることで1か月あたりの利用料金が850円となることもありますので、以下でご紹介する前提の場合、月間60時間以上マルチプレイをされる方はVPSの利用を検討した方が良いでしょう。

目次

AWSの登録と初期設定

AWSとは2006年にサービスが開始されたAmazonのクラウドコンピューティングサービスです。

通常、サーバーを設置したり、企業が自社の業務データを保管する際にはデータセンター内にスペースを借りて機器を設置するなどしていますが、こういったやり方では柔軟性に欠けるとともに初期コストが高いという課題があります。

そこで、他社(この場合だとAmazon)が提供しているクラウドサービスを利用して、自前ではデータセンターやサーバー機器を保有することなく、また初期コスト不要でコンピューティングリソースを確保し、必要に応じてその性能を大きくしたり小さくしたりできるようにして、前段の課題を解決しています。

AWSを利用したシステムアーキテクチャ例

AWSには200を超えるサービスがあるようですが、私が利用しているのはクラウドコンピューティングサービスのElastic Cloud Computing(EC2)など数種類のみです。

ちなみに、私の使い方では、大体週末くらいしかサーバーを起動していないこともあり、1ヶ月当たりのコストは約6ドル(大体800円)です。

1か月間の日次使用料
ふじみやの1か月のAWS利用状況

AWSのサインアップ

まずはAWSに登録しましょう。

AWSのコンソールの記載にしたがって情報を入力していきましょう。

なお、最初の画面に記載されている ルートユーザー とはAWSの利用に関するすべての権限を有しているユーザーのことを意味しています。

AWSは最初の1年間は無料利用枠というものが付与されており、一部の機能が無料で利用することができます(残念ながら、マインクラフトを利用するには無料枠だと厳しいと思いますが。。)。

入力を進めていくとクレジットカードの入力を求められますが、こちらも入力をしてください。入力をしても、無料利用枠の範囲内であれば請求はありません。

多要素認証(MFA)の設定

AWSにサインインできるようになったら、まずはAWSアカウントのセキュリティを高めるため、MFAを設定するようにしましょう。MFAを設定しておかないと、IDとパスワードが漏洩した際に第三者にAWSのリソースを悪用され、多額の請求がきてしまう可能性があります。

サインインしたら表示されるマネジメントコンソールの右上にユーザー名が表示されているので、それをクリックし、 セキュリティ認証情報 をクリック。

AWSのヘッダー

その後は、 多要素認証(MFA) と記載されているバーをクリックして、あとは記載されている内容の指示に従えばOKです。

セキュリティ認証情報

EC2インスタンスの起動

MFAの設定が完了したら、再度マネジメントコンソール画面に戻り、ヘッダー部分の検索バーより EC2 と検索をしましょう。この際、ヘッダー部分の右上(ユーザー名の左となり)に記載されているリージョンが 東京 となっているか確認するようにしましょう。

EC2の画面になったら左側のペインより、インスタンスをクリック。

EC2インスタンスの管理画面(ダッシュボード)

画面右上にある「インスタンスを起動」をクリックしましょう。

起動画面では次のように設定をしてみましょう。

項目入力内容
名前とタグMinecraft
AmazonマシンイメージAmazon Linux 2
アーキテクチャ64ビット (Arm)
インスタンスタイプt4g.medium
キーペア新しいキーペアの作成
ネットワーク設定下記参照
ストレージを設定デフォルトのまま

アーキテクチャはAmazonマシンイメージを設定する項目と同じ箇所にあり、デフォルトは 64ビット (x86) となっていますので、これを変更しましょう。

これは、アーキテクチャがArmである t4g.medium が下表のとおり最も安くすむためですが、面倒だからそのままでいいよ、という方はここでは特に変更せずに、インスタンスタイプを選択する際に t3.medium または t3a.medium としていただければと思います。なお、無料利用枠の t2.micro だとサーバーが起動できないことがありますのでご注意ください。

インスタンス名アーキテクチャ1時間あたりの料金
t2.mediumx860.0464 USD
t3.mediumx860.0416 USD
t4g.mediumArm0.0336 USD

以下の記事にてインスタンスタイプについてご説明をしています。
より理解を深めたい方はぜひご覧ください。

キーペアは新規作成すると自動的にダウンロードされますが、削除しないでください。
インスタンス接続時に必要となりますが、再発行はできませんのでご注意ください。

また、ネットワークの設定に関しては同項目の右上にある 編集 をクリック後、同項目の下部にある セキュリティグループルールを追加 をクリックし、次の通りにしてください。

タイプポート範囲ソース
カスタムTCP191320.0.0.0/0
カスタムUDP191320.0.0.0/0
カスタムTCP255650.0.0.0/0
カスタムUDP255650.0.0.0/0

これらの設定が完了したら、 インスタンスを起動 をクリックして完了です。

IPの固定化

今回は、マインクラフトを遊ばない間は課金を避けるためインスタンスを停止する予定です。しかしながら、インスタンスは停止するとそれまで利用していたIPは変更されてしまいます。

そこで、AWSのElastic IPを利用してIPを固定化させましょう。なお、このElastic IPはインスタンスの停止中は1日あたり約0.12ドル(約17円)課金されてしまいますので全くの無稼働でも毎月約3.60ドル(約515円)がかかります。とはいえ、ずっとインスタンスを立ち上げておくよりは安くすみます。

少しでもコストを下げたい、毎回IPアドレスが変わっても問題ない、という方はこちらの項目は読み飛ばしていただいて問題ありません。なお、インスタンスを起動した際にIPアドレスをLINEに通知する方法についても記事にしていますので、Elastic IPを利用されない方はこちらも是非ご参照ください。

Elastic IPの設定

それでは早速設定をしていきましょう。

EC2マネジメントコンソールの左ペインより Elastic IP をクリック。その後、右上の Elastic IPアドレスを割り当てる をクリックします。

Elastic IPの管理画面
私は既にElastic IPを利用しているので真ん中に表示されていますが、皆さんは何も表示されないと思います

画面が変わったら、そのまま 割り当てる をクリック。タグは必要に応じて入力してください。そうすると、以下の通りにElastic IPが割り当てられます。

Elastic IPの割当

アクション▼ 内の Elastic IPアドレスの関連付け より関連付けましょう。

中段の インスタンスインスタンスタイプを選択します をクリックすれば、EC2インスタンスが表示されますので、Elastic IPを関連付けたいインスタンスを選択し、右下の 関連付ける をクリックしましょう。

Elastic IPの関連付け

EC2インスタンスのIP固定化はこれで完了です。

インスタンスを停止し、再度開始してもIPが変わっていないことが確認できるかと思います。

なお、インスタンスを停止する際には インスタンスを終了 を選択しないよう注意してください。せっかく作ったインスタンスが削除されてしまいます。設定で インスタンスの終了 を制限することもできますので、不安な方は設定を変更されるのも良いかと思います。

EC2インスタンス(Linux)への接続

さて、ここからはEC2インスタンスに接続をしましょう。

今回、マシンイメージとして選択したLinuxは、コマンドで操作をするOSです。普段は見慣れない操作方法ですが、慣れてしまえばそこまで難しくはありませんのでご安心ください。

Windowsを利用されている方は、ターミナルソフトをダウンロードし、インストールしてください。Tera TermRLogin というソフトがありますが、私は後者を使用しています。

ターミナルソフトの設定

ターミナルソフトのインストールが終わったら、ソフトを起動しましょう。

起動したら、新規 をクリックし、接続先を設定します。エントリー はわかりやすい名前を入力し、ホスト名 はIPアドレスを入力。ログインユーザー名ec2-user と入力ください。

パスワード は空欄のままで、SSH認証鍵 をクリックし、インスタンス起動時にダウンロードしたキーを選択してください。

RLoginのサーバー選択画面
RLoginのサーバー接続設定画面

以上の設定が終わり OK をクリックすると元のServer Selectの画面に戻りますので、追加されたエントリーをダブルクリックしてください。その後、表示される 公開鍵の確認 はそのまま 接続する をクリックで問題ありません。

次の画面が表示されたら、無事EC2インスタンスに接続が成功しています。

Amazon Linux 2への接続完了

EC2インスタンス(Linux)に接続したら

接続に成功したら、まずは以下のコマンドを入力しましょう。Linuxのソフトウェアをアップデートするためですので、忘れずに入力しましょう。

sudo yum -y update

なお、上記のざっくりとした意味は以下の通りです。

  • sudo・・・スーパーユーザー(=root)権限にてプログラムを実行
  • yum・・・ソフトウェアのパッケージを管理する際のコマンド
  • -y・・・yumコマンドのオプション。確認が求められれば、全て「yes」として返答
  • update・・・パッケージをアップデート

これでEC2インスタンスのIPを固定化し、Linuxを操作する環境が整いましたが、このままではデフォルトの言語が英語、タイムゾーンは協定世界時(日本より9時間遅い)状況となっています。

そのまま利用を続けても問題ありませんが、Linuxの言語設定やタイムゾーンを変更しておきたい方は以下の記事をご覧いただければと思います。

環境の構築

今回はJava版のプレイヤーと統合版のプレイヤーが同時にプレイできるよう、Spigotというプラグインサーバーを導入します。プラグインはModみたいなもので、サーバーに導入することで機能を簡単に追加することができるようになります。

そのためには少しだけ環境の構築が必要ですので、早速やっていきましょう。

Java

マインクラフトはJavaで動くゲームですので、Javaをインストールする必要があります。プログラミング言語としてのJavaについて知識が全くなくともインストールは可能ですのでご安心ください。

Amazon Corretto

AWSでは、Amazon CorrettoというJavaと互換性のあるパッケージを提供しています。もちろん、普通にJavaをインストールすることもできますが、今回はこちらを使ってみましょう。

なお、Amazon Correttoの詳しい説明をご参照されたい方は、以下のリンクをご参照ください。

Amazon Corretto

Amazon Correttoのインストール方法

Linuxに接続したら、次のコマンドを入力してください。なお、途中で「インストールして良いか?(is this ok)」と聞かれたら「y」と入力しましょう。

sudo yum install java-17-amazon-corretto

インストールが完了したら、念のためJavaのバージョンを確認してみましょう。

java -version

入力後に以下のように表示されれば、無事インストールが完了しています。

Javaのバージョン確認

これでJavaのインストールは完了です。

Git

Spigotは権利関係上、そのままサーバーをダウンロードすることができません。ファイルをビルドすることでサーバーを入手することができ、その際にGitが必要となります。

Gitのインストール方法

こちらもコマンドは簡単で、次を入力するだけです。

sudo yum install git

Javaと同様に、インストール後は念のためにバージョンを確認しましょう。

git --verion

次のように表示されれば、gitのインストールは完了です。

Gitのバージョン確認

Gitの環境設定

次のコマンドを入力しましょう。これは「gitを使う際には改行コードの自動変換を無効化する」という意味になります。

git config --global --unset core.autocrlf
  • git config・・・gitの設定
  • –global・・・該当ユーザーの全リポジトリ
  • –unset・・・次の設定を削除(無効化)
  • core.autocrlf・・・改行コードの自動変換

サーバーファイル(Spigot)の入手

前述の通り、Spigotは権利関係上、サーバーファイルがそのまま配布されることはなく、BuildTools.jar というビルド用のファイルを入手の上、ビルド と呼ばれる作業を各自で行っていただくことでサーバーファイルが入手できる、という仕組みになっています。

詳細については、公式サイトのWikiに載っていますので、お時間がある方はそちらもご参照ください。

「ビルドとか難しそう」や「特にLinuxの使い方に慣れる必要ない。早く遊べるようになりたい」という方は、ホームディレクトリ(/home/ec2-user)にて以下のコマンドで入力し、サーバーファイル保存用のディレクトリ(Windows等でいうフォルダです)を作成後に マインクラフトの軽量マルチサーバー導入(PaperMC)をご覧ください。

mkdir minecraft

このコマンドは「minecraft」という名前のディレクトリをログインした際に表示される場所であるホームディレクトリ(/home/ec2-user)の直下に作るよう指定しているものです。なお、「mkdir」は「ディレクトリを作る(make directory)」という意味です。

BuildTools.jarのダウンロード

それでは、早速やっていきましょう。

保存先ディレクトリの作成

まずはBuildTools.jarを保存するディレクトリを作ります。

mkdir spigot

ディレクトリを作成したら、以下のコマンドを入力してディレクトリ内にあるファイル等を確認してみましょう。

ls
ディレクトリ内の保存物確認

無事 spigot という名前のディレクトリが出来ていることが確認できますね。

次に spigot に移動して、BuildTools.jarをダウンロードしましょう。次のいずれかのコマンドを入力してください。一行ずつ入力し実行してくださいね。

cd ./spigot
curl -o BuildTools.jar <ダウンロードしたいファイルのURL>
cd ./spigot
wget <ダウンロードしたいファイルのURL>

これらのコマンドのざっくりとした意味は以下の通りです。

  • cd・・・カレントディレクトリ(現在地)を移動
  • ./spigot・・・カレントディレクトリの直下にある「spigot」
  • curl/wget・・・ファイルをダウンロードするためのコマンド
  • -o・・・保存するファイル名を指定(この場合だとBuildTools.jar)

ダウンロードが完了したら、ls コマンドを入力してファイルを確認してみましょう。そうすると、次の最下部のように表示されるかと思います。これが表示されていれば、ダウンロードは問題なく完了しています。

ファイルのダウンロード

ビルドとサーバーファイルの入手

ここまできたらサーバーの入手まではもうすぐです。

ビルド

次に以下のコマンドを入力しましょう。ここでは最新版のサーバーを入手する指定にしています。

java -jar BuildTools.jar --rev latest

これは、おおまかには「BuildTools.jarというプログラムをJavaで実行する」という意味です。

  • java・・・Javaアプリケーションを起動
  • -jar・・・JARファイル(BuildTools.jar)にカプセル化されたプログラムを実行

ここで、以下のようなエラーが表示がされたら、システムに割り当てられているメモリが不足しています。エラーの最後に書いてある通り、コマンドを変更して再度実行しましょう。

BuildTools requires at least 512M of memory to run, but has only detected 233M.
java -Xmx1G -jar BuildTools.jar --rev latest

-Xmx1G は、このプログラムにメモリを最大1GB割り当てる、という意味になります。1G の代わりに1024M としても問題ありません。ただし、1024の倍数となるようにご注意ください。また、2G などの上記よりも大きい数値としても問題ありません。

エラーがなくともプログラムの実行が終了するまで数分かかりますので、気長に待つようにしましょう。むしろ、すぐに止まったら何らかのエラーがある可能性が高いです。

プログラムの実行が終わり、Success! と表示されれば完了です。この時、ls コマンドを入力すると次の通りになり、spigot-1.19.2.jar を入手出来ているのが分かります。

ビルド完了

サーバーファイルの移動

最後に、このファイルを別のディレクトリに移しておきましょう。

mkdir ../minecraft
mv spigot-1.19.2.jar ../minecraft
  • ../minecraft・・・現在地の一つ上のディレクトリ内の「minecraft」ディレクトリ
  • mv・・・ファイル等を移動させる(move)

これでマルチプレイ用のサーバーファイルを入手することができました。

サーバーの立ち上げ

Spigotサーバーを入手することができましたので、サーバーを起動できるようにしていきましょう。

起動用スクリプトの作成・実行

BuildTools.jarのビルド時のように、コマンドを入力するのでも良いのですが、起動の都度入力するのは面倒です。そのため、起動用のスクリプトをサーバーファイルがある minecraft ディレクトリ内に作成しましょう。

vim start.sh
  • vim・・・テキストエディターで編集する
  • .sh・・・シェルスクリプトを記載したファイル

「start.sh」というファイルを編集、という意味になりますが、start.sh ファイルはありません。
この場合、ファイル名「start.sh」を新規作成して編集、という意味になります。

コマンドを入力すると真っ黒の画面が出てくるかと思いますので、キーボードの「i」を押下して編集可能な状態にし、次を入力しましょう。

java -Xms2G -Xmx2G -jar <サーバーファイル名(spigot-1.19.2.jar等)> nogui
  • -Xms・・・プログラムに割り当てる最小のメモリサイズ
  • nogui・・・使用状況に関するグラフを表示しない

入力が完了しましたら、一度キーボードの esc を押下後、:wq と入力してファイルを保存し編集を終了してください。

次にこのファイルに権限(パーミッション)を設定します。

sudo chmod +x start.sh
  • chmod・・・権限を変更するコマンド
  • +x・・・ユーザーにファイルに対する「実行」の権限を付与する

これにより、全ユーザーに対して、この start.sh を実行する権限が付与されました。
権限が付与されると、ls コマンド入力時に文字の色が変わっているのが分かりますね。

権限設定前の表示
chmodコマンド入力前
権限設定後の表示
chmodコマンド入力後

権限の設定が完了したら、このスクリプトを実行してみましょう。

sh start.sh

そうすると、サーバーが起動しますが、途中で eula.txtが読み込めません とエラーが出て止まってしまいます。これは初回の立ち上げでは絶対に起きることですので、問題ありません。

Failed to load eula.txt

eula.txtの編集

サーバーを利用するためには eula.txt 内でEULA(MINECRAFT エンド ユーザー ライセンス条項)に対する同意が必要となります。
このファイルは minecraft ディレクトリ内にありますので編集しましょう。

vim eula.txt

ファイル内の falsetrue に変更したら、ファイルを保存して編集を終えてください。

起動用スクリプトの再実行

eula.txt の編集が終わりましたら、起動用スクリプトを再実行してください。

sh start.sh

そうすると、今度は途中でエラーが出ることなくサーバーの起動が完了するはずです。

サーバーの起動完了

サーバーの停止

ここまで出来たら、一度サーバーを停止させましょう。停止をさせる場合は以下を入力してください。

stop

入力後、ワールドの保存等が完了するまで少し時間がかかりますので、そのままお待ちください。

サーバーの停止

これで、サーバーがちゃんと立ち上がることが分かりました。

なお、Java版の人同士で遊ぶのであれば、これ以降は必要ありません。

サーバーへのプラグイン導入

サーバーの起動ができるようになりましたら、プラグインを導入していきましょう。

導入するプラグイン

今回導入する予定のプラグインについてざっくりと説明をしていきます。

GeyserMCとFloodgate

Java版と統合版でクロスプレイをする際に必須のプラグイン。

GeyserMCは統合版の通信をJava版のものへと変換するもので、Floodgateは統合版のアカウントでもJava版に参加可能とするためのものです。

GeyserMC

ViaVersion / ViaBackwards

通常、プレイヤーの使用しているバージョン(1.19.2とか)とサーバーのバージョンが揃っていないと遊ぶことはできないのですが、特にニンテンドースイッチやタブレットなどの統合版で遊ぶ方はアプリの自動更新を有効にしている人も多いかと思います。

そこで、ViaVersionやViaBackwardsを導入することでバージョンが違っていてもマルチプレイができるようにしています。

Geyser Skin Manager

デフォルトのままだと、統合版のプレイヤーはスティーブのスキンでしか遊ぶことができません。スキンをカスタマイズしているのであれば、このプラグインを導入することで、サーバー上でも統合版のスキンを表示させることができます(上手くいかないこともありますので、その辺はご理解をいただければと思います。)。

プラグインのダウンロード

BuildTools.jar をダウンロードする際には、Linux上でコマンドを入力する方法をご説明しました。しかしながら、何個もダウンロードするファイルがある場合に、いちいちURLを調べてコマンド入力するのは正直面倒です。そこで、今回はRLoginのファイル転送機能を使用してみましょう。

まずは、下記のリンクから、各プラグインの最新版をお手元のPCにダウンロードしましょう。

  • GeyserMC・・・「Geyser-Spigot.jar」をクリック
  • Floodgate・・・「floodgate-spigot.jar」をクリック
  • ViaVersion・・・記事右上にある「Download Now」をクリック
  • ViaBackwards・・・記事右上にある「Download Now」をクリック
  • Geyser Skin Manager・・・Assets内の「GeyserSkinManager-Spigot.jar」をクリック

なお、GeyserMCは頻繁に更新されますので、Feedlyなどに登録しておくと更新通知がきて便利です。

ファイルをLinuxに転送

ファイルのダウンロードが完了したら、RLoginの上部より ファイル転送 をクリックしてください。

RLoginのリボン

そうすると転送するファイルを選択する画面が出てきますので、左側はファイル転送元(先ほどプラグインをダウンロードしたフォルダ)、右側はファイル転送先(Linuxの minecraft ディレクトリ内の plugins )を指定してください。

ファイル転送画面(転送前)

あとは転送するファイルを選択して、右側にドラッグするだけで転送は完了します。なお、複数のファイルを選択することも可能です。

ファイル転送画面(転送後)

サーバー起動の確認

plugins ディレクトリへのファイル転送が完了したら、再度Linuxで起動用スクリプトを実行しましょう。

sh start.sh
サーバー起動時にプラグインの読み込みも完了

これでマルチプレイ用のサーバー立ち上げとクロスプレイ用のプラグイン導入が完了しました。

マイクラのマルチプレイ用サーバー選択画面にてEC2インスタンスのIPアドレスを入力すると無事に世界に接続できるようになっているはずです。

なお、ニンテンドースイッチ版のマイクラからサーバーに入る方法については ニンテンドースイッチ版マイクラでマルチサーバーに接続する方法 をご覧ください。

マルチサーバーへの参加

とはいえ、このままでは毎回AWSのマネジメントコンソールからEC2インスタンスを開始したり停止したり、更にはEC2インスタンスに接続してサーバー起動用スクリプトを実行する必要があり結構な手間です。

こういった手間を省く方法については他の記事で説明をしていますので是非ご覧ください。

それではまた。

アイキャッチ

この記事が気に入ったら
フォローしてね!

コメント

コメントする

目次