技術メモ

プログラミングとか電子工作とか

MinecraftサーバーをAWSのEC2(Amazon Linux 2)で立ち上げる

f:id:ysmn_deus:20190904114458p:plain

どうも、靖宗です。
友人との話で度々「マイクラサーバー立てる」と言って無視してきた日々に終止符を打つべくAWSを利用してマイクラサーバーを立てることにしました。
料金的な観点で言えば動かしっぱなしにするなら絶対VPS(かLightsail)の方がいいんですが、EC2に慣れ親しむというのと拡張性(EC2だとインスタンスの性能がすぐ変えられる)という点でEC2をチョイスしました。
なので、これに当てはまらない方はVPSを選びましょう。

EC2でインスタンスを立ち上げる

この辺は記事が腐るほどあると思いますので割愛。
気が向けば別記事にします。
あと、もしかしたらAMIが転がってるかも。

インスタンスの選定

他の記事などで「small以上じゃないと動かない」という報告をいくつか見受けました。
自分は疑り深いので、敢えてt3.microで実行してみました。
Xmx900M Xms512M(最大メモリ900MB、最小メモリ512MB)で実行してみると、起動はするのですが非常にラグ(ブロックを破壊したのに破壊したことにならない)が生じたり、サーバーがクラッシュして落ちたりするところから最小メモリ1024MB程度は確保しておく必要があるのかもしれません。
ただ、この検証は後述するForgeサーバで行っていますので、もしかしたらバニラのサーバーはなんとか動作するかもしれません。

以上より、この記事ではt3.small相当のインスタンス(自分はt3a.smallを利用)することを想定しております。

Minecraft Serverのセットアップ

とりあえずパッケージマネージャーのアップデートと、Javaを入れときます。

sudo yum update -y
sudo yum install java-1.8.0-openjdk.x86_64

次に、Minecraftのサーバー版をダウンロードしてきます。
今回は1.14.4を公式サイトから直接ダウンロードします。

wget https://launcher.mojang.com/v1/objects/3dc3d84a581f14691199cf6831b71ed1296a9fdf/server.jar

たぶんこの辺でディレクトリを作成してその中で作業した方が良いです。
僕は後で後悔しました。

mkdir minecraft_server
mv server.jar minecraft_server/
cd minecraft_server

とりあえず起動してみます。

java -Xmx1024M -Xms1024M -jar server.jar nogui

文句言われて起動しないと思います。
使用ライセンスを許諾するか否かの確認が必要ですので、実行したら作成されるeula.txtを編集します。
eula=falseの箇所をeula=trueにします。

#By changing the setting below to TRUE you are indicating your agreement to our EULA (https://account.mojang.com/documents/minecraft_eula).
#Fri Aug 11 21:05:32 JST 2017
eula=true

これでサーバーが実行できるようになってる筈です。
先ほどのコマンドで実行します。

java -Xmx1024M -Xms1024M -jar server.jar nogui

これで、EC2のIP(か、ドメインを設定している場合はそのドメイン?)にアクセスすればMinecraftサーバーにアクセスできる筈です。
とりあえずの動作確認ですので、実行したサーバーは終了しておきます。
Ctrl+Cで強制終了するか、コマンド入力できる状態でstopと入力すれば止まります。

Forge Serverにする

MODなどを導入する際にはMinecraft Forgeというものにしておくと便利と聞きます。
実際にどうなのか知りませんが、大体サーバーのセットアップの記事を書いてる人達はForgeを導入しているので一応導入しておきます。
必要最低限構成で動かしたい方はスルーしてください。少々重たくなるかもしれません。
たぶんこいつのせいでt3.microとかが使えないのではないかと思っています。

Forgeのダウンロード

Forgeの公式サイトhttps://files.minecraftforge.net/)からインストーラーをダウンロードします。
参考にしたサイトにはuniversal.jarもダウンロードするよう指示がありましたが、1.14.4ではうまく動作しなかったので不要です。
installer.jarのみダウンロードしてください。

f:id:ysmn_deus:20190904103652p:plain

wgetでダウンロードしたいところですが、広告を読ませるためにリダイレクトする形式になってます。
無料で使えるありがたみをかみしめながら広告を読むぐらいは我慢しましょう。

Forgeインストーラをアップロード

先にForgeのディレクトリを作成しておきます。
通常のサーバーのディレクトリをそのままコピペします。

cd ~
cp -Rp minecraft_server forge_server
cd forge_server

作成したディレクトリにForgeインストーラをアップロードします。
SSHでアクセスしてる場合はSCPかなんかでアップロードしてください。

インストール

インストーラを実行します。

java -jar ./forge-1.14.4-28.0.83-installer.jar nogui --installServer

起動

何はともあれ起動してみます。
参考にしたサイトにはuniversal.jarを起動するよう書かれていましたが、なんか起動しなかった(のと、Webフォーラムで生成された奴を実行しろと書かれていた)ので、生成されたforge-1.14.4-28.0.83.jarを実行します。

java -Xms1024M -Xmx1024M -jar forge-1.14.4-28.0.83.jar nogui

これでしばらくまってサーバーが立ち上がれば問題無いと思います。
念のためMinecraftのクライアントから接続して確かめてみるのも良いと思います。

自動起動+コマンドを用意

メンテナンススクリプトの作成

このサイトを参考にしました。
なぜか大概の方の実行コマンドが最大メモリと最小メモリが同じになっているケースが多いんですが、折角最大と最小を指定出来るので一応分けておきます。
上記の手順に従った方は下記のスクリプトで起動などが可能かと思います。
Forgeサーバーでない方はディレクトリや実行するjarを適宜変更してください。

パーミッション

Minecraftサーバーのみ動かしている方は特に気にしなくてもいい気がしますが一応パーミッションも変更しておきます。

chmod 744 mc_script.sh

実行テスト

スクリプトを作成したらとりあえず手動でスクリプトが実行するか確認します。

sh -x ./mc_script.sh start

Minecraftサーバーの標準入出力はscreenに飛ばされてるので、まずscreenに存在しているか確認します。

screen -ls
There is a screen on:
        2295.minecraft  (Detached)
1 Socket in /var/run/screen/S-ec2-user.

数字とかは適宜変わると思います。

もしサーバー上で直接コマンドを入力したい場合(ホワイトリストの入力とか?)はscreenで接続します。

screen -r minecraft

screenから抜けるときはCtrl+aを押した後にdを押して抜けて下さい。

停止

実行テストが終わったら停止しといてください。

sh -x ./mc_script.sh stop

自動起動の設定

systemdに登録して起動したら実行されるようにしておきます。
/etc/systemd/system/minecraft.serviceを作成します。

sudo vi /etc/systemd/system/minecraft.service

内容は下記の通り

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

[Service]
Type=forking
User=ec2-user
ExecStart=/home/ec2-user/mc_script.sh start
ExecStop=/home/ec2-user/mc_script.sh stop

[Install]
WantedBy=multi-user.target

上記が作成できたら、systemctlコマンドで登録します。

sudo systemctl enable minecraft

これで再起動して接続できれば問題無いかと思います。

動作状況

インスタンスの選定のところで言及しましたが、メモリがまあまあ食ってるみたいです。

free -m
              total        used        free      shared  buff/cache   available
Mem:           1961        1244         443           0         273         566
Swap:             0           0  

余裕を持っての動作でしょうけど、やはり2GBぐらいはメモリを確保しておきたいところです。
なので、VPSMinecraftサーバーを立てる方は、少人数であれば2GB程度は見ておくのが良いのではないでしょうか。

参考

minecraft.server-memo.net