MinecraftサーバーをAWSのEC2(Amazon Linux 2)で立ち上げる
どうも、靖宗です。
友人との話で度々「マイクラサーバー立てる」と言って無視してきた日々に終止符を打つべく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
のみダウンロードしてください。
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ぐらいはメモリを確保しておきたいところです。
なので、VPSでMinecraftサーバーを立てる方は、少人数であれば2GB程度は見ておくのが良いのではないでしょうか。