0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

友達と遊ぶためにAWSでMinecraftサーバーを立てた話

Posted at

春休みに配布マップを使って、自分を含めた友達4人でMinecraftを遊ぶことになりました。普段使っているPCでサーバーを作っても良かったのですが、ラグが心配だったのでクラウドでサーバーを立てることにしました。
(1年ほど前に下書きだけ書いて放置していた記事をせっかくなら上げようと完成させたもの&初投稿なので正確性に欠ける点があるかもしれません。ご容赦ください)

こんな人に読んでほしい

AWSでJava版マイクラサーバーを立ち上げたい人
週に1日だけとか期間限定でサーバー立ち上げたい&コストを抑えてスペックの高いサーバーを使いたい

なぜAWSを選んだのか?

今回は以下の理由でAWSを選択しました。

  1. 1週間だけ遊ぶという期間限定のプロジェクトだったため、コストを抑えたく、柔軟な料金体系のAWSが適していた。
  2. サーバースペックの変更が簡単だったため、遊んでいる最中にパフォーマンス不足を感じたら即座にスペックを上げられる。
  3. AWS Amplifyでウェブアプリをホスティングした経験があったので、AWSに対する心理的ハードルが低かった。

AWSでマイクラサーバーを立てるといくらかかるの?

4人でそこそこ重めの配布マップをラグなく動かせるスペックでいくらぐらいかかるかを振り返ってみます

  1. インスタンス利用料: 0.2$ / hour (サーバー起動中のみ)
  2. Elastic IP: 0.005$ / hour
  3. EBS(ストレージ): 約1$ / month
    その他データ転送量とかに対しても課金されるみたいですが、計算が難しいので省略します。気を付けたいのは2, 3に関してはサーバーを起動していなくても課金されます。「マイクラ遊んでないのに毎月2ドルぐらい請求来てるのはなんでだ?」と過去の私はなりました

1週間 毎日8時間遊んだとすると0.287 + 0.00587 + 1*0.25 = 11.73$
計算に入れられていない隠れコストを入れても日本円で2,000円行くか行かないぐらいでしょうか (執筆時 1$=150円)
人それぞれ感じ方はあると思いますが、ちゃんといいスペックのサーバーを1週間使えるのであればかなりコスパに優れていると私は感じます

課題と結論

AWSの公式ドキュメントや他の方の記事を参考にして進めましたが、AWSのUIが変更されていて公式ドキュメント通りに進めても上手くいかない箇所があったのが最大の課題でした。

今回の経験を通じて、同じような状況に直面する方の助けになるように、この記事を書き残します。

前提条件

  • Minecraft Java版でのサーバー構築
  • linuxの基礎操作がある程度わかる(cd, sshあたり)

参考にした記事

まず、以下の記事を参考にサーバーを立ち上げました:

Setting Up a Minecraft Java Server on Amazon EC2

ただし、記事の手順通りに進めても、いくつかの箇所でUI変更によりつまずいた点がありました。

サーバー構築の手順

以下、具体的な手順とつまずいたポイントを記載していきます。基本は公式ドキュメントに従いつつ進めます。

1. リージョン選択

AWSログイン後のコンソール画面の右上からリージョン(サーバー場所)を選択します。今回は東京(ap-northeast-1)を選択しました。住んでいる地域を選択すればよいと思います。もし海外の方と一緒に遊ぶ場合などは中間の国を選択すれば特定の参加者だけがラグいみたいなことを避けられそうです
※ 選択する国によって金額が前後する場合があります。

image.png

2. EC2インスタンスを作成

コンソールの検索画面からEC2と検索し、EC2の画面に移動します。
下の画像のようなインスタンスを起動のボタンがあるので、クリックしインスタンス起動設定画面へ進みます。
image.png

するとこのような画面に移動します。
image.png

ここから一つひとつ項目を入力していきます。

(1) 名前を入力
わかりやすいものであればなんでも大丈夫です。今回はTUSBという配布マップを遊ぶためなので、My-TUSB-serverと入力しました。
image.png
(とっても面白い配布マップなのでぜひ遊んでほしい)
TUSB

(2) マシンを選択します
公式ドキュメントに従いAmazon Linux 2023 を選択しました。ただアーキテクチャに関しては、性能優先なら**64ビット(x86)**のほうがマイクラに適していそうです(クロック周波数が高い)
今回はx86で進めてみます(画像一部間違っていますご容赦ください)
image.png

(3) インスタンスタイプを選択します
どのインスタンスタイプを選択するかはどんな遊び方をするかによって変わるのですが、ここでの選択がサーバー性能と利用料金に直結するのでお気を付けください。これはあとから変更できるみたいです。今回はc6i.xlargeを選択します。性能と予算的にこれが最適だと思いました。マイクラサーバーをラグなく動かすためにはクロック周波数というものが大切なようです。バニラのマイクラサーバーは単スレッド依存要素が大きいようなので、クロック重視 or シングルコア最適化のインスタンスを選ぶとよいかもしれません。ただ遊び方によって最適なインスタンスタイプは全く違うと思うので、似たようなケースで遊ぶ場合は私の設定を真似てみてください
d44665bfde3f10c16f92b53b7abf689d.png

(高いものだと1時間ごとに20ドル吹き飛ぶみたいです。怖すぎる...)

(4) キーペア作成
キーペアを作ります。「新しいキーペアを作成」からRSAの.pemで作成しました。作成したキーはローカルに保存しておいて、作成したキーを選択します
このキーはお使いのPCからAWSのEC2へ接続するために使用します。これをなくすとサーバーへアクセスできなくなってしまうのでご注意ください
image.png

3. ネットワーク設定

VPC、サブネット、パブリックIPの自動割り当てを選択します。
これらの設定について公式ドキュメントでは、
デフォルト VPC を選択し、サブネットは指定しないままにして、パブリック IP の自動割り当てを有効にします。デフォルト VPC には、各アベイラビリティーゾーンに 1 つのパブリックサブネットがあるため、変更せずに選択できます。
と書いてありますが、私の環境ではサブネットを選択しないまま進むとエラーになってしまったので、サブネットを作成します。
image.png

作成したサブネットを「インターネットゲートウェイ」で紐づけします。私も理解があやふやなのですが、VPCとサブネットは紐づけて使用するようです。

紐づけが完了したらもとのインスタンス作成ページへ戻り、サブネットを指定します。

4. ネットワークの設定-サブネット(人によっては不要かも)

サブネットの新規作成ページに移動し、以下のように入力しました。
image.png

5. ネットワークの設定-セキュリティグループ

マインクラフトからのアクセスと、サーバー管理者(自分)がサーバー設定を行えるようにアクセスを許可します。
これをしないとサーバーを作ったけど、誰もアクセスできないという状態になってしまいます。
基本は画像の通りに設定してください。
初見殺し要素として、sshのソースの「3.112.23.0/29」というIPがリージョンによって違います。一番最初に設定した「東京(ap-northeast-1)」のことです。もし大阪や別のリージョンを設定した場合は別のIPを入力しなければいけません。公式ドキュメントに行けばリストがあるのですが、いかんせん量が多いので、日本国内の主要なIPをまとめておいておきます。

ap-northeast-1(東京) : 3.112.23.0/29
ap-northeast-3(大阪) : 15.168.105.160/29

image.png

6. ストレージの設定

デフォルトの8GBで足りると思います。(多く設定するとその分毎月請求が来るので最小限でよいと思います)
image.png

7. 高度な設定-ユーザーデータ

設定画面一番下の、高度な設定を展開します。そこから更に一番下に行くと以下のような設定画面があります。
image.png

ここに以下のコードをコピペします。

# *** INSERT SERVER DOWNLOAD URL BELOW ***
# Do not add any spaces between your link and the "=", otherwise it won't work. EG: MINECRAFTSERVERURL=https://urlexample


MINECRAFTSERVERURL=


# Download Java
sudo yum install -y java-17-amazon-corretto-headless
# Install MC Java server in a directory we create
adduser minecraft
mkdir /opt/minecraft/
mkdir /opt/minecraft/server/
cd /opt/minecraft/server

# Download server jar file from Minecraft official website
wget $MINECRAFTSERVERURL

# Generate Minecraft server files and create script
chown -R minecraft:minecraft /opt/minecraft/
java -Xmx1300M -Xms1300M -jar server.jar nogui
sleep 40
sed -i 's/false/true/p' eula.txt
touch start
printf '#!/bin/bash\njava -Xmx1300M -Xms1300M -jar server.jar nogui\n' >> start
chmod +x start
sleep 1
touch stop
printf '#!/bin/bash\nkill -9 $(ps -ef | pgrep -f "java")' >> stop
chmod +x stop
sleep 1

# Create SystemD Script to run Minecraft server jar on reboot
cd /etc/systemd/system/
touch minecraft.service
printf '[Unit]\nDescription=Minecraft Server on start up\nWants=network-online.target\n[Service]\nUser=minecraft\nWorkingDirectory=/opt/minecraft/server\nExecStart=/opt/minecraft/server/start\nStandardInput=null\n[Install]\nWantedBy=multi-user.target' >> minecraft.service
sudo systemctl daemon-reload
sudo systemctl enable minecraft.service
sudo systemctl start minecraft.service

# End script

このコードの3行目
MINECRAFTSERVERURL=
の部分を編集します。ここは立てたいサーバーのマイクラバージョンによって異なるので、各自以下のURLから使用したいサーバーのURLを取得してください。
https://mcversions.net/

左のStable versionをおすすめします。
image.png

今回私は1.19.4でサーバーを立てたいので、1.19.4をクリックし、Server.jarを右クリックして、「リンクを新しいタブで開く」をクリックします。そしてURLリンクをコピーし、コードに貼り付けます。
image.png

私の場合はこのようになりました。

MINECRAFTSERVERURL=https://piston-data.mojang.com/v1/objects/8f3112a1049751cc472ec13e397eade5336ca7ae/server.jar

8. サーバーを起動

お疲れ様です。これでインスタンス設定は終わりです。インスタンスを起動ボタンを押して少し待ちます。
13c4a7bece59a8431a79ab886b679fd4.png

9. EC2へSSH接続

コンピューターの意味のサーバーは立ち上がったので、次はマイクラサーバーを立ち上げます
インスタンス一覧に行くと、画像のようにパブリックIPv4アドレスというのが表示されるはずです。
4d7e2f07ef96872260cfa582de80e1b3.png

このIPがサーバーのIPになります。お好きな方法でよいのですが、EC2へ接続します。私はubuntu(ターミナル)からssh接続でec2に入ります

まずはインスタンスを選択した際に画面上部に出てくる"接続"のボタンを押します
↓のような画面が出るので、表示されているコマンドを参考にssh接続します。この際-iの後のssh keyはそれぞれの環境に合わせてパスを変更してください
3bb877e8a53e2111367063ea20b45612.png

私の場合は以下のようなログが出て無事EC2へ接続できました
ここでつまずく場合EC2のセキュリティ設定が厳しすぎるかもしれません

➜  ~ ssh -i ~/.ssh/TUSB-Key.pem ec2-user@ec2-52-90-240-218.compute-1.amazonaws.com
   ,     #_
   ~\_  ####_        Amazon Linux 2023
  ~~  \_#####\
  ~~     \###|
  ~~       \#/ ___   https://aws.amazon.com/linux/amazon-linux-2023
   ~~       V~' '->
    ~~~         /
      ~~._.   _/
         _/ _/
       _/m/'
[ec2-user@ip-172-31-33-58 ~]$

10. マイクラサーバーを立てる

/opt/minecraft/server にstartというファイルがあるはずです。./startで実行することでマイクラーサーバーが立ち上がります
もしなければ7つ目の設定がうまく動いていないので、javaやマイクラサーバーのダウンロード周りをec2上で行ってみてください。

以上でAWS上でマイクラサーバーのセットアップが一通り終わりました。追加で今のままだと、インスタンスを再起動するたびにIPが変わってしまうのでElastic IPというものを使ってIPを固定するのをお勧めします

11. !超重要! 遊び終わったらインスタンスを閉じましょう

AWSのEC2はインスタンスが開いている時間に対して課金されます。遊び終わったら忘れずにインスタンスを閉じましょう
ずっとec2をつけっぱなしにしてとんでもない請求が来るケース、良くあります。友達はec2立てまくって月9万円の請求が飛んでました

おわりに

AWSでのMinecraftサーバー構築は少しハードルが高いと感じるかもしれませんが、一度設定してしまえば快適に遊ぶことができました。UIの変更による戸惑いもありましたが、今回の経験を共有することで、これから同じように試す方の助けになれば幸いです。


タグ: #AWS #Minecraft #EC2 #クラウド #初心者向け

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?