AWSでMinecraftサーバーを立てよう。

この記事は約10分で読めます。

どうも。
なにやらAWSとMinecraftの組み合わせでこのブログがヒットしている事が多いようです。
過去に1度だけAWSの話を取り上げたことがあるような気がしますが、
今回はせっかくなのでAWSでMinecraftサーバーを立てるなら、という話をしようと思います。

AWSとはなんぞや?

さて、そもそもAWSとはなんぞや?という方がいらっしゃるかもしれません。
AWSはAmazon Web Serviceの略で、
かの有名なECサイト大手Amazonが提供しているWebに関するサービスです。
EC2やLightsailといったような仮想サーバーや、
CloudFlontといったCDN、lamdaといったサーバーレスでプログラムを実行できるものなど
その提供サービスは多岐に渡ります。

MinecraftのサーバーでAWSを使う理由は?

MinecraftのサーバーをAWSで立てることに意味はあるのか?という話ですが
ご自身でサーバーになりえるPCやそれに耐える通信環境があるのであれば無いと言えます。
逆にそれ以外の場合でMinecraftサーバーを運営したいのであれば
AWSは強い味方になってくれると思います。

AWSのサービスは何を使えばいいのか?

AWSでサーバーを使うなら大概の場合EC2かLightsailの2択になるかと思います。
DockerやKubernetesみたいなコンテナを使うとまた選択肢も変わってきますが、
少なくとも序盤のうちでなおかつMinecraftサーバーであれば検討する必要はないでしょう。
またEC2はスケーラビリティの高いサービスになりますが、
その分コストが読みづらく素人が使うにはちょっと面倒くさい面があります。
そういった観点から見ていくと、通常のVPSサービスと同様に使えるLightsailが最適かと思います。

プランはどのくらいが最適?

とりあえず数人が入るくらいのサーバーを想定しているなら20ドルが最適かと思います。
一般的な生活サーバーでの場合になりますが、
メモリ割り当て1GBに対し5人前後は捌けると言われています。
そこにOSのメモリ使用量約500MBを入れるとだいたい2GBくらいは必要です。
本当に友人とプレイするだけのバニラサーバーであれば
最低限これを達成できる10ドルのプランでも構わないと思いますが、
プラグインを追加したりサーバーを公開したりする場合は余裕を持たせたほうがいいでしょう。
問題はCPUリソースの方で、Minecraftサーバー単体で1コア専有してしまう場合が殆どで、
OSのその他の機能やその他のプログラムを動かす場合少ししんどいと思います。
プラグインによってはデータベース・サーバーを必要とする場合もあり、
それを動かす場合それにもリソースを割り当てる必要があります。
そのため2コア4GBが使用可能な20ドルのプランが最適であると言える訳です。

ただこれに関してはサーバーの規模が変われば必要になるリソースも変わってくるので、
想定している最大接続人数をもとに最適なプランを選び必要があるでしょう。
ちなみに、Lightsailではない話にはなりますが、
過去に4コア4GBのVPSで16人が同時に接続した結果、まともに遊べない状態になりました。

どうやって立てるの?

さて、ここからは実際にLaightsailでMinecraftサーバーを立てる方法を解説していきます。
とりあえずLinuxが必要最低限使える事を前提に解説を進めていきますので、
わからないコマンドや単語が出てきたらその都度検索してください。

AWSアカウントを作る。

ひとまずAWSのサイトにアクセスしたらアカウントを作成しましょう。
右上にある「アカウントを作成」をクリックすれば作ることができます。

Lightsailの管理画面に移動する。

Lightsailは通常のサービスとは別のページで管理するようになっています。
全てのサービスの一覧からLightsailの文字を見つけてクリックすると移動できます。
面倒くさい人はこのリンクから飛ぶと良いでしょう。
https://lightsail.aws.amazon.com

インスタンスを作成する。

Lightsailを使う準備ができたら、
「インスタンスを作成」をクリックしてサーバーの準備をはじめましょう。
設定する必要のある項目は

  • インスタンスロケーション
  • プラットフォームと設計図
  • SSHキーペア
  • インスタンスプラン

これら4つです。順番に見ていきましょう。
ちなみにインスタンスとは要するにサーバーの事です。

インスタンスロケーションはその名の通りインスタンスの場所です。
日本の他にも様々な国でインスタンスを動かすことができます。
基本的には自分が住んでいる国に一番近いものを選択すれば良いと思います。
日本在住の場合は東京がありますからそれで良いでしょう。
アベイラビリティーゾーンは特に変更する必要はありません。

次にプラットフォームと設計図ですが、
プラットフォームはLinux/Unix、設計図はOSのみにしてAmazon Linux 2を選択しましょう。
どうしてもWindowsを使いたいんだ…!!という方は止めはしませんが、
ライセンス料で結構持っていかれるのでおすすめしません。というか無駄です。
Linuxの使い方を覚えてください。

Linux OSに関して言えば実際のところ何でも良いです。
自分が使い慣れているOSがあるのであればそれを使えば良いと思います。
そうでないのであればAmazon Linux 2がAWSではベターです。

次に忘れがちなSSHキーペアの変更についてです。
こいつはSSHを使ってサーバーに接続するための鍵なのですが、
ここで忘れないようにダウンロードしておかないとあとで大変な目に合います。
自分で生成したキーをアップロードするのであれば構いませんが、
デフォルトを使用するのであればここでダウンロードしておきましょう

最後にインスタンスプランです。
上記でプランについて解説しましたが、自分の用途に合ったプランを選択してください。

ここまでできたら適当な名前を付けてインスタンスを作成です。

サーバーをセットアップする。

作成を実行するとしばらく処理が行われた後、ステータスが実行中に変わります。
変わったら早速サーバーのセットアップをしていきましょう。
まずはSSHに接続する必要があります。
Webブラウザからアクセスすることもできるのですが、
ちょっと使い勝手が良くないでSSHクライアントを用意してください。

インスタンスのIPとユーザー名はインスタンス情報に書かれています。
それと、インスタンスを作成する際にダウンロードした鍵を用いてログインします。
ログインの仕方は各自使用しているクライアントの情報を検索してください。

ここからはAmazon Linux 2を使用していると仮定して解説を進めていきます。
ログインできたらひとまずアップデートをやってしまいましょう。
インスタンスの作成段階では結構アップデートが溜まっています。
アップデートは以下のコマンドで行うことができます。

sudo yum update -y

アップデートが終わるまで少し時間がかかりますのでコーヒーでも飲んでお待ち下さい。
終わったら次にJavaをインストールしていきます。
ここではAmazonが開発しているOpenJDKであるAmazon Correttoを使用します。

sudo yum install java-11-amazon-corretto

古いMinecraftサーバーを動かす場合はJava11では動作しない可能性があります。
その場合はJava8をインストールしてください。

sudo amazon-linux-extras enable corretto8
sudo yum install java-1.8.0-amazon-corretto

ここまでできたら正常にJavaがインストールされたことを確認してください。

java --version

もしここでインストールしたものとは異なるバージョンが表示されている場合は、
Javaのパスを変更する必要があります。
パスの変更はalternativesコマンドを使用することで行うことができます。

sudo alternatives --config java

ここまでできたら基本的な準備は完了です。
ここからはMinecraftサーバーの準備をしていきます。

準備ができたらサーバーを起動してeulaをtrueにしてもう一回立ち上げの一連の作業をやります。
ここまでできたらMinecraftサーバーを立てることができたといえるでしょう。

サーバーをデーモン化する。

デーモンとはなんぞや…。閣下…?
違いますよ。インスタンスの起動時に勝手にサーバーを起動したり、
サーバーがダウンした場合に自動的に再起動してくれたりする便利な機能です。

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

ここでnanoが入ってないと怒られたら大人しくnanoをインストールするか、
諦めてvimを使うかのどちらかです。
私は大人しくnanoをインストールする選択をしました。

開けたら必要な情報を入力していきます。

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

[Service]
ExecStart=/usr/lib/jvm/java-11-amazon-corretto/bin/java -jar minecraft-server.jar
WorkingDirectory=/home/ec2-user/minecraft/
Type=simple
Restart=always
User=ec2-user
Group=ec2-user

[Install]
WantedBy=multi-user.target

ExecStartは実行するプログラムを指定する行です。
注意点はJavaをフルパスで指定する必要がある点です。
一般的なecho $JAVA_HOMEでは多分出ないのでalternatives --config javaでチェックして下さい。

WorkingDirectoryはMinecraft Server Jarを置いたフォルダのパスです。
自身が今いるパスを確認する場合はpwdで可能です。

UserやGroupはプログラムを実行したいユーザーやグループを指定できます。

他にも様々な設定を行うことができますが、
詳しいことは systemd service 説明 で検索してください。
多分日本語だとこの辺が分かりやすくて良いんじゃないかと思います。

入力し終わったらCtrl+Xで保存してsystemdに読み込ませます。

sudo systemctl daemon-reload

あとはこのサービスを起動すればMinecraftサーバーも起動します。
注意点としては、デーモンとして起動する場合直接コンソールにアクセスできません。
OPなどを付与する場合はデーモン化する前に行っておきましょう。

sudo systemctl start minecraft.service

ついでにインスタンス起動時に自動起動するようにしておくと便利です。

sudo systemctl enable minecraft.service

ポートを開く。

サーバーを起動できたらポートを開放する必要があります。
Lightsailでは管理画面のインスタンスページの中からネットワーキングタグの中にあります。
ここのIPv4 Firewallのルールを追加TCP 25565を入力して作成すればOKです。
Amazon LinuxではファイヤーウォールはデフォルトではOFFなのでそちら側の設定を行う必要は特にありません。

IPアドレスについて

Lightsailは初期の状態ではIPアドレスは可変です。
インスタンスを再起動するとIPアドレスが変わる場合があります。
インスタンス利用中の間は料金はかかりませんので、静的IPに変更することをおすすめします。

さいごに。

ここまでAWS Lightsailを使ってMinecraftサーバーを立てる方法を解説してきました。
Lightsailにはインスタンスの他にもマネージドデータベースやコンテナなど様々な機能を利用することができます。
Lightsailに限らずAWS全般のサービスについて、必要が出てきたらその都度検索して色々使ってみると良いと思います。

また忘れないように支払い情報を入力しておきましょう。
支払い情報は右上の請求をクリックすると請求管理ダッシュボードに移動するので、
左側のメニューからお支払い方法に移動するとクレジットカードを登録できます。

よいクラフターライフを送れるようお祈りしています。
それではまた。

コメント

タイトルとURLをコピーしました