LoginSignup
9
4

More than 1 year has passed since last update.

Java版Minecraft 1.17.1のマルチサーバをGCPで建ててみた

Last updated at Posted at 2021-08-14

はじめに

今回MinecraftのJava版のマルチサーバをGCP上のGoogle Compute Engineに構築しました。
先人の記事があったものの、1.17.1を入れる上で少しハマりどころがあったので、備忘録として残しておきたいと思います。

いくつかGCPで記事を書いている方はいましたが、最小レベルでの記事はなかなか見つからなかったので、ここまでやれば取り敢えずバニラのMinecraftをみんなで遊べる!というところを目標とします。

GCPを使ったマイクラマルチサーバは、サーバ構築まで約30分ほどで完了しますので、非常に簡単にセットアップすることが可能です。

詳細な手順については、今回様々な記事を参照させていただいたため、そちらを参考に記述しておきます。

実行結果、料金

今回作成したGCEインスタンスに4人同時接続し、5〜6時間ほどプレイしてみましたが、ほとんどカクつくことはありませんでした。

発生した料金は以下のグラフのようになっており、日本円で約31円です。
image.png

Minecraftサーバ構築ではよくVPSサービスなど紹介されていますが、個人で友達とワイワイ遊ぶ程度であれば、少し知識は必要ですが、GCEはかなり有用な選択肢の一つなのではないかと思います。何よりも、GCPを触るきっかけにもなります。

サーバ構築手順

今回は備忘録的な記事になりますので、GCPの登録などは済んでいる前提とします。
もしまだの場合は、以下のリンクからグーグルアカウントにログインの上、プロジェクトの作成を行ってみてください。
https://console.cloud.google.com/

インスタンスの作成

GCPのサイドメニューから
コンピューティング > Compute Engine > VM インスタンス
を選択します。
image.png

そうすると、以下の画像のようなリストが出てきます。今回私はすでにインスタンスを立ててしまっているのでminecraft-serverというのがリストに追加されていますが、最初は何も無いはずです。
image.png

上部ナビゲーションのVMインスタンスの右横、インスタンスを作成をクリックします。

画像の通りに新規VMインスタンスの各項目を設定します。
image.png

インスタンスの名前・リージョン

名前はわかりやすい名前にしておきます。今回はminecraft-multi-serverとします。

リージョン ゾーン
asia-northeast1(東京) asia-northeast1-b

にしてみます。近い方がラグとか少ないはずなので、東京にしました。

マシンタイプ

image.png

マシンの構成は、マシンタイプをカスタムに設定すると好きなようにCPUとメモリを割り当てることが可能です。

シリーズについてはN1でも十分だと思います。

メモリについては後でも変更できるのですが、人数が少なければ大体3〜4GBくらいメモリを割り当てておくとかなりサクサクになります。

初めは少なめに設定して後からカクついてるな〜と思ったら増やしていくのが一番いいかもしれません。(私は面倒だったので適当に設定しました)

ブートディスク

続いて、ブートディスクの設定です。
image.png
こちらの変更ボタンをクリックすると、ディスクを変更することが出来ます。

今回はコスパ重視で以下の設定にしてみました。
image.png
サイズに関しては、バックアップを多めにとるなら変更したほうが良いかもしれません(Cloud Storageに保存するようにするとかが良いと思います)。ただ、個人利用レベルであればこの程度で十分です。

プリエンプティブ

続いて、プリエンプティブを設定します。
まずは以下の画像の格納されているプロパティを表示させます。
image.png

すると色々なタブが出てきます。
image.png

管理タブ内のプリエンプティブをオンにします。
image.png
この設定をオンにすると、GCEのインスタンスの余り部分が利用できるようで、
- 24時間でインスタンスが自動停止
- GCEの都合でシャットダウンの恐れがある
というデメリットが生じますが、相当額料金が安くなります。個人利用で24時間もマイクラサーバ起動させませんし、むしろ勝手に切れてくれて都合が良いまであります。付けておきましょう。

ネットワーキング

続いて同様の場所からタブをネットワーキングに切り替えます。

image.png

ネットワークタグに適当な名前を設定します。今回はminecraft-serverとしてみました。

ここの名前は後でポート開放に必要となります。

また、minecraftからサーバにアクセスするときに毎回IPアドレスが変わると面倒なので、固定のアドレスを設定します。
名前は適当に、minecraft-multi-serverと、インスタンスの名前と揃えてみました。
image.png

最終的には以下のようになります。

image.png

インスタンスの作成

ここまで設定できたら、インスタンスを作成します。
image.png
作成ボタンをクリックします。

これで、インスタンスが作成されました。
以下のようにリストに増えているはずです。
image.png

インスタンスの停止

そのまま次の設定に行くなら不要ですが、もし作業を中断したり、実際にマルチサーバを終了するときは、必ずインスタンスを停止しておきます。
インスタンス起動時間単位で課金されるため、コツコツ止めておくだけでもかなりお財布に優しいです。
停止する場合は、停止したいインスタンスにチェックを入れた上で、上部メニューの停止をクリックします。
image.png
横幅が狭いときはに格納されているため、注意してください。

ポート開放

続いて、建てたインスタンスにMinecraftからアクセスできるように、ポート開放を行います。
GCP左上のナビゲーションメニュー > ネットワーキング > VPC ネットワーク > ファイアウォール
をクリックします。

image.png

ここでは、先程インスタンスを作成したときに付けたネットワークタグを指定して、ポートを開放します。
ファイアウォールルールを作成をクリックします。
image.png

このファイアウォールルールに名前を付けます。
今回はminecraftと命名します。
image.png

そうしたら少し下にスクロールし、ターゲットタグに先程指定したminecraft-serverというターゲットタグを付けます。
また、ソースIPの範囲は特に指定しないため、0.0.0.0/0を入力します。
プロトコルとポートでは、Minecraftデフォルトの設定である、tcpにチェックを入れ、25565を指定します。
image.png

これでルールを作成するだけで、ポート開放は完了です。
以前自宅のルータでサーバを作ってポート開放したことがありましたが、そのときはかなり煩雑な設定が必要だったことに対し、GCEでは非常に簡単に設定できることに感動を覚えました。

インスタンス内にMinecraftサーバを設定

ポート開放まで設定が終わったら、あとはサーバを建てるだけです。
インスタンスの画面に戻り、ブラウザ上のSSHターミナルを用いてインスタンスにアクセスします。
もし先程インスタンスを停止していたら、チェックを入れて開始をクリックします。

インスタンスリスト内の接続部分のをクリックし、ブラウザウィンドウで開くを選択します。
image.png

少し待つと、下のような黒い画面になると思います。
image.png

ここで
- 必要なパッケージのインストール
- Java版Minecraftのマルチサーバをインストール
- サーバの初期設定
を行います。

必要なパッケージのインストール

以下の順番にコマンドを実行していきます。$マーク以外を一行ずつコピペするとうまく実行できるはずです。

$ sudo add-apt-repository ppa:linuxuprising/java -y
$ sudo apt update
$ sudo apt install openjdk-16-jre -y

最後の行を実行すると、なにやら同意画面が出てきます。
それぞれ矢印キーとEnterキーでOKYesを選択すると無事インストール出来るはずです。

Java版Minecraftのマルチサーバをインストール

続いて、マルチ用に提供されているMinecraftのサーバファイルをインストールします。
今回は分かりやすいように、rootにそのまま必要ファイルを展開しますが、整理する場合は適宜ディレクトリを作成してください。

まず、以下のリンクからMinecraft公式サイトに飛びます。

image.png

Download minecraft_server_x.x.x.jar and ...
のリンクを右クリックしてコピーします。

そのまま、先程のインスタンスのターミナルに、以下のコマンドを入力します。

$ wget <今コピーしたURLをペーストする>

これでserver.jarファイルをインスタンス上にダウンロードすることが出来ました。
そうしたら、先程の公式サイトに再び戻り、ダウンロードリンクの下のコマンドをコピーします。
サーバを起動するときは毎回このコマンドを実行します。
しかし、サーバファイルの名前が変わっているので、以下のように書き換える必要があります。
image.png

$ java -Xmx1024M -Xms1024M -jar server.jar nogui

ちなみにこのまま実行するとメモリが1GBしか割り当てられないことになるので、3GB分使用可能にしておきます。
-Xmx1024Mの部分が最大使用可能メモリ量ですので、ここを1024 * 3の3072に設定しておきます。
今回私が実行したコマンドは、以下のものになります。

$ java -Xmx3072M -Xms1024M -jar server.jar nogui

サーバの初期設定

コマンドを実行すると、ERRORが出るはずです。
image.png

これは、EULAの規約に同意していない場合に出るエラーです。
server.propertiesファイルの中身を編集する必要があります。

以下のコマンドを実行します。

$ vim eula.txt

vimエディタによりeula.txtファイルが開かれます。
このvimは一癖あるエディタなので、詳しい使い方は以下の記事を参考にしていただけると良いと思います。

今回は最低限の書き換えを行います。
コマンドを実行すると、このような画面になるはずです。
image.png

そうしたら、そのままiキーを押し、画像の位置まで矢印キーでカーソルを動かします。
image.png
そのままfalseを削除し、trueに書き換えます。
完了したら、escキーを2回押し、:wqと入力し、Enterキーを押してください。
image.png

途中でうまく行かなかった場合は、escキーを2回押し、:q!と入力し、Enterキーを入力するともとの画面に戻れますので、もう一度vimコマンドの実行から行ってみてください。

これで、先程のコマンドを再度実行すると、少し待った後にMinecraftサーバを建てることが出来ます。

$ java -Xmx3072M -Xms1024M -jar server.jar nogui

以下の画面になれば、サーバ建ては成功です。
image.png

ちなみに、このウィンドウを閉じてしまうとMinecraftのサーバは停止してしまいます。
もし閉じた後もサーバを動かしたままにする場合は、screenコマンドを利用する必要があります。
今回は開きっぱなしを想定しますので、興味ある方はこちらの記事を参考にscreen -rを実行してみてください。

Minecraftからサーバにアクセスする

ここまででMinecraftサーバを建てることは完了しています。
それでは、いよいよ作成したサーバにMinecraftから入ってみます。

まず、先程のインスタンスの画面から外部IPアドレスをコピーします。
image.png

サーバと同じバージョンのMinecraftを起動し、メインメニューのマルチプレイを選択します。
image.png

サーバーを追加ボタンをクリックし、サーバー名は分かりやすい名前にします。
そして、サーバーアドレスにコピーしたIPアドレスを入力し、完了をクリックします。
image.png

すると、サーバーに新しく項目が増えているはずです。選択し、サーバーに接続をクリックします。
image.png

無事、マルチサーバに接続できました。お疲れさまでした!
image.png

先程の外部IPアドレスを友人に教え、接続してもらってください。一緒にプレイできるはずです!

おわりに

今回GCPで簡単にサーバを建てられたことは非常に驚きました。
慣れてしまえばほんの数十分で新しいサーバを建てられると思います。
コストも(停止さえ忘れなければ)かなり抑えられますし、VPSとかは高いなぁ…と思っている方で友人とマイクラしたい方はぜひ試してみてはいかがでしょうか。

参考記事

今回、以下の記事を参考に環境構築をしました。

また、自分はJavaのインストールで少しハマりました。原因としては、1.17.1ではJava 16が必要なのですが、Ubuntu 18.04 LTSupgradeupdateを行ってもJava 16インストール用のパッケージが存在しないためです。
そのため、以下の記事を参考にしました。非常に分かりやすかったです。

9
4
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
9
4