Compute Engine での Minecraft サーバーのセットアップ

このチュートリアルについて、Mojang および Minecraft による承認や連携は行われていません。

専用の Minecraft サーバーを実行するには、専用のサーバーマシン、大容量の RAM、広い帯域幅が必要です。これらの要件を Google に任せてみませんか。このチュートリアルでは、Compute Engine で標準の Java Minecraft サーバーをインストール、構成、実行する方法について説明します。このサーバーは、標準 Java ベースのデスクトップ Minecraft クライアントに対応しています。

Minecraft サーバー ソフトウェアは、Compute Engine インスタンスで実行されます。このインスタンスは、Google のインフラストラクチャで実行される仮想マシンです。このチュートリアルでは、Compute Engine インスタンスのデフォルトのマシンタイプである n1-standard-1 が使用されます。n1-standard-1 マシンタイプは、10 GB のブートディスク、仮想 CPU(vCPU)1 基、3.75 GB の RAM で構成されており、デフォルトでは Debian Linux が実行されます。

Minecraft サーバーのワールドデータ用に十分な容量を確保するために、高パフォーマンスの 50 GB の永続ソリッド ステート ドライブ(SSD)もインスタンスに接続します。この永続 SSD を追加することによって、インスタンスで 50 人までのプレーヤーを快適にサポートする専用 Minecraft サーバーのシステム要件を満たすようになります。

目標

  • Compute Engine 仮想マシン インスタンスを作成する
  • Minecraft サーバーをインストールして構成する
  • Minecraft のワールドデータの自動バックアップをセットアップする

費用

このチュートリアルでは、以下の課金対象の Google Cloud Platform コンポーネントを使用します。

  • Compute Engine 仮想マシン
  • Compute Engine 永続ディスク
  • Cloud Storage

料金計算ツールを使用して、予測される使用量に基づき、費用の見積もりを出すことができます。 GCP を初めてご利用の場合は、無料トライアルをご利用いただけます。

始める前に

  1. Google アカウントにログインします。

    Google アカウントをまだお持ちでない場合は、新しいアカウントを登録します。

  2. Google Cloud Platform プロジェクトを選択または作成します。

    [リソースの管理] ページに移動

  3. Google Cloud Platform プロジェクトに対して課金が有効になっていることを確認します。

    課金を有効にする方法について

Compute Engine インスタンスを作成して構成する

最初に、新しい Compute Engine インスタンスを作成して構成します。

  1. GCP Console の [VM インスタンス] ページに移動します。

    [VM インスタンス] ページに移動

    新しい Compute Engine インスタンスを作成するよう求めるダイアログが表示されます。

  2. [作成] をクリックして作業を開始します。

  3. [インスタンスの作成] ページで、次のようにインスタンスを設定します。

    • インスタンスの名前を指定します。このチュートリアルでは一貫して mc-server というインスタンス名を使用しています。
    • インスタンスをホストするリージョンとゾーンを選択します。このチュートリアルでは一貫してリージョン us-central1 (Iowa) とゾーン us-central1-f を使用しています。
    • [ブートディスク] セクションで [変更] をクリックします。[ブートディスク] ポップアップ ダイアログが表示されます。
    • ディスクタイプを [SSD 永続ディスク] に変更します。
  4. [選択] をクリックして変更内容を確定し、ダイアログを閉じます。

これは基本的な構成です。ただし、新しいインスタンスはまだ作成しないでください。専用の Minecraft サーバーの要件を満たすには、いくつかの詳細設定も構成する必要があります。

インスタンスで Cloud Storage へのアクセスを有効にする

このチュートリアルの後半では、ワールドデータを Cloud Storage にバックアップする方法を学習します。この場合、インスタンスに Cloud Storage への読み書きアクセス権が必要になります。アクセスを有効にするには、次のようにします。

  1. [ID と API へのアクセス] で [サービス アカウント] プルダウンをクリックして、[Compute Engine のデフォルトのサービス アカウント] を選択します。
  2. [アクセス スコープ] に [各 API にアクセス権を設定] を設定します。
  3. [ストレージ] プルダウンで [読み取り / 書き込み] を選択します。

インスタンスにタグ付けする

次に、インスタンスにタグ付けします。このチュートリアルで後ほど、外部の Minecraft クライアントがこのサーバーにアクセスできるようにするためのファイアウォール ルールを作成する際にこのタグを使用します。

  1. [管理、セキュリティ、ディスク、ネットワーク、単一テナンシー] をクリックして、詳細設定の一連のタブを表示します。
  2. [ネットワーキング] タブで、minecraft-server タグを [ネットワーク タグ] フィールドに追加します。

インスタンスの静的 IP をセットアップする

受信リクエストを確実にインスタンスに転送できるように、インスタンスに静的 IP を設定する必要があります。インスタンスに静的 IP アドレスを追加するには、次のようにします。

  1. [ネットワーキング] タブの [ネットワーク インターフェース] セクションで、[デフォルト] をクリックします。[ネットワーク インターフェース] 構成メニューが表示されます。
  2. [外部 IP] プルダウンをクリックし、[IP アドレスを作成] を選択します。ポップアップ ダイアログが表示されます。

    新しい静的 IP アドレスの作成

  3. IP アドレスに「mcs-ip」という名前を付けます。

  4. [予約] をクリックしてアドレスを作成します。

  5. [完了] をクリックして変更を commit し、[ネットワーク インターフェース] 構成メニューを閉じます。

永続ディスクをインスタンスに追加する

次に、永続ディスクをインスタンスに接続します。ブートディスクとは異なり、永続ディスクは Compute Engine インスタンスの存続期間に結び付けられていません。たとえば、後からホスティングを変更する必要がある場合は、より適合するマシンタイプにディスクを移動できます。

このチュートリアルで使用する永続ディスクのタイプは永続 SSD です。このタイプの永続ディスクでは、非常に高速な I/O オペレーションがサポートされているため、サーバーのタイムラグを軽減できます。

永続ディスクをインスタンスに追加するには:

  1. [ディスク] タブの [追加ディスク] セクションで、[新しいディスクを追加] をクリックします。ディスク作成ダイアログが表示されます。

    新しいディスクの作成

  2. このダイアログで次のように入力します。

    • 名前: minecraft-disk
    • [ディスクタイプ]: SSD 永続ディスク
    • [ソースタイプ]: 空のディスク
    • サイズ(GB): 50
  3. [完了] をクリックします。インスタンスを作成すると、このディスクが自動的に作成されて接続されます。

インスタンスを作成する

これでインスタンスが設定されました。このページの下部にある [作成] ボタンをクリックして新規インスタンスを作成します。この操作を行うと、[VM インスタンス] ページに戻ります。

永続ディスクのフォーマットとマウント

この時点では、ディスクはインスタンスに接続されていますが、まだインスタンスにマウントされていません。ここでディスクをマウントすると、ディスクを設定できなくなります。そのため、すべてのディスクと同様に、最初に、オペレーティング システム(この場合は Debian Linux)が理解できるファイル システムで永続ディスクをフォーマットする必要があります。

インスタンスとの SSH 接続を確立します。[VM インスタンス] ページの mc-server の行で [SSH] をクリックして、ブラウザベースの SSH ターミナルを開きます。

SSH ターミナル

SSH ターミナルが開いたら、インスタンスの home ディレクトリに minecraft という名前のディレクトリを新規作成します。

user@mc-server: sudo mkdir -p /home/minecraft

このディレクトリを永続ディスクのマウント ポイントとして使用します。

次に、ディスクをフォーマットします。

user@mc-server: sudo mkfs.ext4 -F -E lazy_itable_init=0,lazy_journal_init=0,discard /dev/disk/by-id/google-minecraft-disk

最後に、ディスクをマウントします。

user@mc-server: sudo mount -o discard,defaults /dev/disk/by-id/google-minecraft-disk /home/minecraft

インスタンスに Minecraft サーバーをインストールして実行する

永続ディスクが実際にマウントされました。次に、最初に行うのは Minecraft サーバーをインストールして実行することです。

Java ランタイム環境(JRE)をセットアップする

Minecraft サーバーは Java 仮想マシン(JVM)上で実行されるため、その実行には Java ランタイム環境(JRE)が必要です。このサーバーではグラフィック ユーザー インターフェースは不要であるため、このチュートリアルではヘッドレス バージョンの JRE を使用しています。この方法では、マシンでの JRE のリソース使用量が軽減されるため、Minecraft サーバー自体のリソース使用量を必要に応じて拡張するために多くの容量を確保できます。

ヘッドレス バージョンの JRE をダウンロードしてインストールする前に、Debian インストールの Debian リポジトリを更新する必要があります。それを行うには、SSH ターミナルで次のコマンドを実行します。

user@mc-server: sudo apt-get update

リポジトリが更新されたら、次のコマンドを実行して、ヘッドレス JRE をインストールできます。

user@mc-server: sudo apt-get install -y default-jre-headless

Minecraft サーバーをインストールする

これで JRE がセットアップされたので、次に Minecraft サーバーをダウンロードしてインストールします。まず minecraft ディレクトリに移動します。

user@mc-server: cd /home/minecraft

マウントされた永続ディスクは minecraft ディレクトリに含まれるため、そのディレクトリでコマンドを実行するには、root ユーザー アクセス権と呼ばれる特別なレベルのアクセス権が必要になります。次のコマンドを実行して root ユーザーに切り替えます。

user@mc-server: sudo su

次に、最新の Minecraft サーバーの Java アーカイブ ファイル(JAR)をインスタンスにダウンロードします。Minecraft のダウンロード ページにアクセスし、ダウンロード リンクからファイルの URL をコピーして、次のコマンドの URL をその URL に置き換えます。

root@mc-server: wget https://launcher.mojang.com/v1/objects/f1a0073671057f01aa843443fef34330281333ce/server.jar

サーバーの初回起動:

root@mc-server: java -Xms1G -Xmx3G -d64 -jar server.jar nogui

初回実行はすぐに終わります。サーバーが起動し、いくつかの問題を報告して停止します。次のコマンドを実行すると、minecraft ディレクトリにいくつかの新しいファイルが作成されていることがわかります。

root@mc-server: ls -l

これらの新しいファイルの中に eula.txt というファイルがあります。このファイルを開いて編集します。

root@mc-server: nano eula.txt

このファイルにはブール値の変数 eula があります。Minecraft サーバーを使用するには Minecraft End User License Agreement (EULA)の条件に同意する必要があります。EULA の条件に同意する場合は、eula の値を false から true に変更し、保存して終了します。

Minecraft サーバーを実行する

この時点で Minecraft サーバーを再度起動すると、サーバーは SSH セッションの存続期間に結び付けられます。つまり、SSH ターミナルを閉じると Minecraft サーバーも終了します。この問題を回避するには screen を使用できます。これは、「接続解除」してバックグラウンド プロセスにしたり、「再接続」してフォアグラウンド プロセスにしたりできる仮想ターミナルを作成できるアプリケーションです。仮想ターミナルが接続解除されてバックグラウンド プロセスになっている場合は、ユーザーがログインしているかどうかに関係なく実行されます。

SSH ターミナルで次のコマンドを実行して screen をインストールします。

root@mc-server: apt-get install -y screen

次に、screen の仮想ターミナルで Minecraft サーバーを起動します。-S フラグを使用してターミナルに mcs という名前を付けます。

root@mc-server: screen -S mcs java -Xms1G -Xmx3G -d64 -jar server.jar nogui

Ctrl+a キーを押してから d キーを押して、screen ターミナルの接続を解除します。このターミナルはバックグラウンドで実行が続行されます。このターミナルに再接続するには、次のように screen -r <terminal_name> を実行します。

root@mc-server: screen -r mcs

最後に、必要であれば screen ターミナルを接続解除します。exit と一度入力して root ユーザーモードを終了し、もう一度 exit と入力して SSH 接続を終了します。

これでMinecraft サーバーが実行されるようになりました。ただし、まだ共有する準備ができていません。サーバーを共有するには、他のユーザーがアクセスできるようにするファイアウォール ルールをセットアップする必要があります。

クライアントが Minecraft サーバーにアクセスできるようにする

受信リクエストを確実にインスタンスに転送できるように、ファイアウォール ルールを作成する必要があります。方法は次のとおりです。

  1. GCP Console で、[ファイアウォール ルール] ページに移動します。

    [ファイアウォール ルール] ページに移動

  2. [ファイアウォール ルールを作成] をクリックします。

  3. [ファイアウォール ルールを作成] ページでフォームに次のように入力します。

    • 名前: minecraft-rule
    • ターゲットタグ: minecraft-server
    • [ソースフィルタ]: IP 範囲
    • ソース IP の範囲: 0.0.0.0/0
    • プロトコル / ポート: tcp を選択して、表示されたフィールドにポート「25565」を入力します。
  4. [作成] をクリックして、新しいファイアウォール ルールを作成します。これで、ユーザーが自分のローカルの Minecraft クライアントからこのサーバーにアクセスできるようになりました。

Minecraft サーバーを構成する

サーバーのデフォルトのプロパティを編集することもできます。方法は次のとおりです。

  1. サーバーの screen ターミナルを再接続します。

    root@mc-server: screen -r mcs
  2. \stop」と入力して Minecraft サーバーを停止します。

  3. server.properties ファイルを編集します。各プロパティ タイプと使用可能な値の詳細については、Minecraft Wikiserver.properties ページをご覧ください。

    $ nano server.properties
  4. サーバーを再起動します。

    root@mc-server: screen -S mcs java -Xms1G -Xmx3G -d64 -jar server.jar nogui
  5. screen ターミナルの接続を解除します。

定期バックアップをスケジュールする

ローカルの Minecraft クライアントを実行している場合や、Minecraft サーバーを実行している場合は、Minecraft のワールドデータを定期的にバックアップすることをおすすめします。このセクションでは、Cloud Storage を使用してワールドデータの定期バックアップを設定する方法について説明します。

Cloud Storage では、さまざまなユースケースに最適化された複数の異なるストレージ クラスが用意されています。このチュートリアルでは、最大 5 GB/月の無料の Regional Storage を使用します。

バックアップ スクリプトを作成する

まず、GCP Console の [VM インスタンス] ページで、インスタンスへの SSH 接続を確立します。ターミナルが開いたら、root ユーザーに切り替えます。

user@mc-server: sudo su

新しい Cloud Storage Regional バケットを作成します。us-central1 は最も近い Cloud Storage リージョンに置き換え、[PROJECT_ID] はプロジェクト ID に置き換えます。このバケットを使用してバックアップを保存します。

root@mc-server: gsutil mb -c regional -l us-central1 gs://[PROJECT_ID]-minecraft-backup

次に、minecraft フォルダに新しいシェル スクリプト ファイル backup.sh を作成し、そのファイルを開いて編集します。

root@mc-server: nano /home/minecraft/backup.sh

このファイルに次のスクリプトを貼り付けます。[BUCKET_NAME] は、Cloud Storage バケット名に置き換えます。

#!/bin/bash
screen -r mcs -X stuff '/save-all\n/save-off\n'
/usr/bin/gsutil cp -R ${BASH_SOURCE%/*}/world gs://[BUCKET_NAME]/$(date "+%Y%m%d-%H%M%S")-world
screen -r mcs -X stuff '/save-on\n'

このスクリプトは、ワールドデータの現在の状態を保存した後、サーバーの自動保存機能を一時停止します。このスクリプトは次に、サーバーのワールドデータのディレクトリ(world)をバックアップし、その内容を Cloud Storage バケット内のタイムスタンプ付きのディレクトリ([TIMESTAMP]-world)に配置します。スクリプトがデータのバックアップを完了した後に、Minecraft サーバーの自動保存機能を再開します。

保存して終了し、次のコマンドを実行してスクリプトを実行可能にします。

root@mc-server: chmod 755 /home/minecraft/backup.sh

スクリプトをテストします。

root@mc-server: /home/minecraft/backup.sh

スクリプトが完了したら、GCP Console の [ストレージ ブラウザ] に移動してバケットをクリックします。world ディレクトリにタイムスタンプ付きのバックアップが存在するはずです。

cron ジョブをスケジュールする

各バックアップを手動で開始したい場合以外は、予測可能な時間間隔でスクリプトを自動的に実行できます。このタスクを行うには、新しい cron ジョブをスケジュールする必要があります。

cron ジョブをスケジュールするには、まず cron テーブルを開いて編集します。

root@mc-server: crontab -e

このファイルの下部までスクロールし、backup.sh を 4 時間ごとに実行するように指定する、次の行を貼り付けます。

0 */4 * * * /home/minecraft/backup.sh

保存して終了します。

設定は以上です。Compute Engine インスタンスではワールドデータが Cloud Storage バケットに 4 時間ごとに自動的にバックアップされるようになりました。

古いバックアップを自動的に削除する

ワールドデータを 4 時間ごとにバックアップすると、バックアップを 1 日に 6 回、1 週間に 72 回、1 か月に約 300 回行うことになります。オブジェクトのライフサイクル管理と呼ばれる Cloud Storage の機能を使用して、古いバックアップを自動的に削除できます。この機能を使用すると、新しいバックアップが利用可能になるか、一定時間が経過した後に、古いバックアップを自動的にアーカイブまたは削除するよう Cloud Storage バケットを構成できます。

Cloud Storage バケットを設定してバックアップを自動的に削除するには:

  1. GCP Console で Cloud Storage ブラウザを開きます。

    Cloud Storage ブラウザに移動

  2. バケットリストで、Minecraft バックアップ バケットを見つけます。

  3. バケットの [ライフサイクル] 列の [なし] をクリックします。[オブジェクト ライフサイクル ルールの表示] ページが表示されます。

  4. [ルールを追加] をクリックします。

  5. [オブジェクト条件の選択] セクションで、[年齢] を選択します。年齢を 7 日間に設定し、[続行] をクリックします。

  6. [アクションを選択する] セクションで [削除] を選択し、[続行] をクリックします。

  7. [保存] をクリックして設定を保存します。[オブジェクト ライフサイクル ルールの表示] ページに戻ります。

これで、バックアップ スクリプトが各バックアップを Cloud Storage に送信してから 1 週間後に、バックアップが削除されるようになりました。

Minecraft サーバーをシャットダウンする

Minecraft サーバーを実行する必要がない場合は、不要な費用が課金されないように、サーバーをシャットダウンする必要があります。

まず、GCP Console の [VM インスタンス] ページで、インスタンスへの SSH 接続を確立します。ターミナルが開いたら、Minecraft サーバーを実行している screen ターミナルに \stop コマンドを渡して Minecraft サーバーを停止します。

user@mc-server: sudo screen -r -X stuff '/stop\n'

これで Minecraft サーバーが停止したので、インスタンスを安全にシャットダウンできます。[VM インスタンス] ページでインスタンスの名前をクリックし、ページの上部にある [停止] ボタンをクリックします。SSH セッションからログアウトされます。

インスタンスを再度起動するには、[VM インスタンス] ページにアクセスし、ページの上部にある [起動] ボタンをクリックします。Minecraft サーバーを再度起動するには、インスタンスとの SSH 接続を確立し、永続ディスクをマウントしなおして、新しい screen ターミナルで Minecraft サーバーを起動します。この手順については、Minecraft サーバーを実行するをご覧ください。

起動とシャットダウンの手順を自動化する

サーバーを定期的にシャットダウンする予定がある場合は、インスタンスに起動スクリプトとシャットダウン スクリプトを追加して、よく使用する起動とシャットダウンの手順を自動化することを検討します。次のようにして起動手順を自動化できます。

  1. GCP Console の [VM インスタンス] ページに移動します。

    [VM インスタンス] ページに移動

  2. インスタンス名をクリックします。

  3. [編集] をクリックします。

  4. [カスタム メタデータ] セクションで、startup-script という名前の新しいキーを追加し、次のスクリプトを [] フィールドにコピーします。

    #!/bin/bash
    mount /dev/disk/by-id/google-minecraft-disk /home/minecraft
    (crontab -l | grep -v -F "/home/minecraft/backup.sh" ; echo "0 */4 * * * /home/minecraft/backup.sh")| crontab -
    cd /home/minecraft
    screen -d -m -S mcs java -Xms1G -Xmx3G -d64 -jar server.jar nogui
    

インスタンスを再起動すると、このスクリプトが自動的に Minecraft ディスクを適切なディレクトリにマウントし、必要に応じて cron ジョブを再インストールし、screen セッションで Minecraft サーバーを起動して、そのセッションを接続解除します。

シャットダウン手順を自動化するには、shutdown-script という別のキーを追加し、その [] フィールドに次のスクリプトをコピーします。

#!/bin/bash
/home/minecraft/backup.sh
sudo screen -r mcs -X stuff '/stop\n'

ページの下部にある、[保存] をクリックして変更を commit します。インスタンスを停止すると、このスクリプトが最新のゲームデータのバックアップを作成し、インスタンスがシャットダウンする前に Minecraft サーバーをシャットダウンします。

次のステップ

Minecraft Wiki を参照する

Minecraft Wiki では、Minecraft のプレーヤーや Minecraft サーバーの管理者などの役に立つ膨大なリソースが提供されています。

代替 Minecraft サーバーを試す

このチュートリアルでインストールした簡素な Minecraft サーバーは、使用可能な多数の Minecraft サーバーの 1 つにすぎません。Minecraft Wikiカスタム サーバーには、ゲームタイプ、マシン要件、変更の容易さなどに合わせて改善されている代替サーバーのリストがあります。

他のチュートリアルを試す

Google Cloud Platform のその他の機能を試すには、チュートリアルをご覧ください。

このページは役立ちましたか?評価をお願いいたします。

フィードバックを送信...