概要
このラボでは、ゲーム アプリケーション(Minecraft サーバー)を設定します。
Minecraft サーバー ソフトウェアは Compute Engine インスタンスで実行されます。
ここで使用するのは e2-medium マシンタイプで、10 GB のブートディスク、2 つの仮想 CPU(vCPU)、4 GB の RAM を搭載しています。マシンタイプはデフォルトでは Debian Linux を実行しています。
Minecraft サーバーのワールドデータを格納できるだけの容量を確保するため、高パフォーマンスの 50 GB 永続ソリッド ステート ドライブ(SSD)もインスタンスに接続します。専用の Minecraft サーバーは最大で 50 名のプレイヤーに対応できます。
目標
このラボでは、次のタスクの実行方法について学びます。
- アプリケーション サーバーをカスタマイズする
- 必要なソフトウェアをインストールして構成する
- ネットワーク アクセスを構成する
- 定期バックアップをスケジュールする
設定と要件
各ラボでは、新しい Google Cloud プロジェクトとリソースセットを一定時間無料で利用できます。
-
[ラボを開始] ボタンをクリックします。ラボの料金をお支払いいただく必要がある場合は、表示されるポップアップでお支払い方法を選択してください。
左側の [ラボの詳細] パネルには、以下が表示されます。
- [Google Cloud コンソールを開く] ボタン
- 残り時間
- このラボで使用する必要がある一時的な認証情報
- このラボを行うために必要なその他の情報(ある場合)
-
[Google Cloud コンソールを開く] をクリックします(Chrome ブラウザを使用している場合は、右クリックして [シークレット ウィンドウで開く] を選択します)。
ラボでリソースが起動し、別のタブで [ログイン] ページが表示されます。
ヒント: タブをそれぞれ別のウィンドウで開き、並べて表示しておきましょう。
注: [アカウントの選択] ダイアログが表示されたら、[別のアカウントを使用] をクリックします。
-
必要に応じて、下のユーザー名をコピーして、[ログイン] ダイアログに貼り付けます。
{{{user_0.username | "Username"}}}
[ラボの詳細] パネルでもユーザー名を確認できます。
-
[次へ] をクリックします。
-
以下のパスワードをコピーして、[ようこそ] ダイアログに貼り付けます。
{{{user_0.password | "Password"}}}
[ラボの詳細] パネルでもパスワードを確認できます。
-
[次へ] をクリックします。
重要: ラボで提供された認証情報を使用する必要があります。Google Cloud アカウントの認証情報は使用しないでください。
注: このラボでご自身の Google Cloud アカウントを使用すると、追加料金が発生する場合があります。
-
その後次のように進みます。
- 利用規約に同意してください。
- 一時的なアカウントなので、復元オプションや 2 要素認証プロセスは設定しないでください。
- 無料トライアルには登録しないでください。
その後、このタブで Google Cloud コンソールが開きます。
注: Google Cloud のプロダクトやサービスのリストを含むメニューを表示するには、左上のナビゲーション メニューをクリックするか、[検索] フィールドにサービス名またはプロダクト名を入力します。
タスク 1. VM を作成する
このタスクでは、Minecraft サーバーをホストし、ソフトウェアをインストールする VM を作成します。
詳細オプションを使用して VM を定義する
- Google Cloud コンソールのナビゲーション メニュー(
)で、[Compute Engine] > [VM インスタンス] をクリックします。
- [インスタンスを作成] をクリックします。
- 次のように指定し、残りの設定はデフォルトのままにします。
プロパティ |
値(値を入力するか、指定されたオプションを選択) |
名前 |
mc-server |
リージョン |
|
ゾーン |
|
-
[OS とストレージ] をクリックします。
-
ブートディスク イメージが「Debian GNU/Linux 12(bookworm)」と表示されていることを確認します。表示が異なる場合は、[変更] をクリックし、[バージョン] プルダウン リストから選択して [選択] をクリックします。
-
[新しいディスクを追加] をクリックします。
-
次のように指定し、残りの設定はデフォルトのままにします。
プロパティ |
値(値を入力するか、指定されたオプションを選択) |
名前 |
minecraft-disk |
ディスクソースのタイプ |
空のディスク |
ディスクの設定 |
SSD 永続ディスク |
サイズ(GB) |
50 |
暗号化 |
Google が管理する暗号鍵 |
-
[保存] をクリックします。ディスクが作成され、VM の作成時にこのディスクが自動的に VM に接続されます。
-
[ネットワーキング] をクリックします。
-
次のように指定し、残りの設定はデフォルトのままにします。
プロパティ |
値(値を入力するか、指定されたオプションを選択) |
ネットワーク タグ |
minecraft-server |
ネットワーク インターフェース |
[デフォルト] をクリックしてインターフェースを編集 |
外部 IPv4 アドレス |
静的外部 IP アドレスを予約 |
名前 |
mc-server-ip |
-
[予約]、[完了] の順にクリックします。
-
[セキュリティ] をクリックします。
-
次のように指定し、残りの設定はデフォルトのままにします。
プロパティ |
値(値を入力するか、指定されたオプションを選択) |
ID と API へのアクセス > アクセス スコープ |
各 API にアクセス権を設定 |
ストレージ |
読み取り / 書き込み |
- [作成] をクリックします。
タスク 2. データディスクを準備する
このタスクでは、Minecraft ディスクをフォーマットしてマウントします。
ディレクトリを作成し、ディスクのフォーマットとマウントを行う
ディスクはインスタンスに接続されていますが、マウントやフォーマットはまだ行われていません。
-
mc-server で [SSH] をクリックし、ターミナルを開いて接続します。
- 次のコマンドを実行して、データディスクのマウント ポイントとなるディレクトリを作成します。
sudo mkdir -p /home/minecraft
- 次のコマンドを実行してディスクをフォーマットします。
sudo mkfs.ext4 -F -E lazy_itable_init=0,\
lazy_journal_init=0,discard \
/dev/disk/by-id/google-minecraft-disk
結果(出力の例):
mke2fs 1.47.0 (5-Feb-2023)
Discarding device blocks: done
Creating filesystem with 13107200 4k blocks and 3276800 inodes
Filesystem UUID: 3d5b0563-f29e-4107-ad1a-ba7bf11dcf7c
Superblock backups stored on blocks:
32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208,
4096000, 7962624, 11239424
Allocating group tables: done
Writing inode tables: done
Creating journal (32768 blocks): done
Writing superblocks and filesystem accounting information: done
- 次のコマンドを実行してディスクをマウントします。
sudo mount -o discard,defaults /dev/disk/by-id/google-minecraft-disk /home/minecraft
ディスクのマウント後に出力は表示されません。
[進行状況を確認 ] をクリックして、目標に沿って進んでいることを確認します。
VM を作成してデータディスクを準備する
タスク 3. アプリケーションをインストールして実行する
このタスクでは、Minecraft アプリケーションをインストールして実行します。Minecraft サーバーは Java 仮想マシン(JVM)上で実行されるため、Java Runtime Environment(JRE)が必要です。このサーバーにはグラフィカル ユーザー インターフェースが必要ないため、ヘッドレス バージョンの JRE を使用します。
これによりマシンでの JRE のリソース使用量が少なくなり、Minecraft サーバーのリソース使用量を必要に応じて拡張できる十分な容量が確保されます。
Java Runtime Environment(JRE)と Minecraft サーバーをインストールする
-
mc-server の SSH ターミナルで、次のコマンドを実行して VM 上の Debian リポジトリを更新します。
sudo apt-get update
- リポジトリの更新後に、次のコマンドを実行してヘッドレス JRE をインストールします。
sudo apt-get install -y default-jre-headless
- 次のコマンドを実行して、永続ディスクがマウントされているディレクトリに移動します。
cd /home/minecraft
- 次のコマンドを実行して wget をインストールします。
sudo apt-get install wget
-
続行を確認するメッセージが表示されたら、「Y」と入力します。
-
次のコマンドを実行して、現在の Minecraft サーバー JAR ファイル(1.11.2 JAR)をダウンロードします。
sudo wget https://launcher.mojang.com/v1/objects/d0d0fe2b1dc6ab4c65554cb734270872b72dadd6/server.jar
Minecraft サーバーを初期化する
- Minecraft サーバーを初期化するには、次のコマンドを実行します。
sudo java -Xmx1024M -Xms1024M -jar server.jar nogui
結果(出力の例):
[21:01:54] [main/ERROR]: Failed to load properties from file: server.properties
[21:01:54] [main/WARN]: Failed to load eula.txt
[21:01:54] [main/INFO]: You need to agree to the EULA in order to run the server. Go to eula.txt for more info.
注: Minecraft サーバーを稼働させるには、エンドユーザー使用許諾契約(EULA)の条件に同意する必要があります。
[進行状況を確認] をクリックして、目標に沿って進行していることを確認します。
Java Runtime Environment(JRE)と Minecraft サーバーをインストールする
- Minecraft サーバーの最初の初期化で作成されたファイルを表示するには、次のコマンドを実行します。
sudo ls -l
注: server.properties
ファイルを編集して、Minecraft サーバーのデフォルトの動作を変更できます。
- EULA を編集するには、次のコマンドを実行します。
sudo nano eula.txt
- ファイルの最後の行を
eula=false
から eula=true
に変更します。
-
Ctrl+O キー、ENTER キーの順に押してファイルを保存してから、Ctrl+X キーを押して nano を終了します。
注: Minecraft サーバーはまだ再起動しないでください。次の手順で別の方法を使用します。
screen で仮想ターミナルを作成して Minecraft サーバーを起動する
この時点で Minecraft サーバーを再起動すると、サーバーは SSH セッションに連動します。つまり、SSH ターミナルを閉じるとサーバーも終了します。この問題を回避するには、screen
を使用します。これは、「接続解除」してバックグラウンド プロセスになったり、「再接続」してフォアグラウンド プロセスになったりする仮想ターミナルを作成できるアプリケーションです。接続解除されてバックグラウンド プロセスになっている場合、仮想ターミナルはユーザーがログインしているかどうかに関係なく実行されます。
-
screen
をインストールするには、次のコマンドを実行します。
sudo apt-get install -y screen
- 次のコマンドを実行して、Minecraft サーバーを
screen
の仮想ターミナルで起動します(S
フラグを使用してターミナル名を mcs
に設定します)。
sudo screen -S mcs java -Xmx1024M -Xms1024M -jar server.jar nogui
結果(出力の例):
...
[21:06:06] [Server-Worker-1/INFO]: Preparing spawn area: 83%
[21:06:07] [Server-Worker-1/INFO]: Preparing spawn area: 85%
[21:06:07] [Server-Worker-1/INFO]: Preparing spawn area: 86%
[21:06:08] [Server-Worker-1/INFO]: Preparing spawn area: 88%
[21:06:08] [Server-Worker-1/INFO]: Preparing spawn area: 89%
[21:06:09] [Server-Worker-1/INFO]: Preparing spawn area: 91%
[21:06:09] [Server-Worker-1/INFO]: Preparing spawn area: 93%
[21:06:10] [Server-Worker-1/INFO]: Preparing spawn area: 95%
[21:06:10] [Server-Worker-1/INFO]: Preparing spawn area: 98%
[21:06:11] [Server-Worker-1/INFO]: Preparing spawn area: 99%
[21:06:11] [Server thread/INFO]: Time elapsed: 55512 ms
[21:06:11] [Server thread/INFO]: Done (102.484s)! For help, type "help"
screen から接続解除して SSH セッションを閉じる
- screen ターミナルから接続解除するには、Ctrl+A キー、Ctrl+D キーの順に押します。ターミナルは引き続きバックグラウンドで実行されます。ターミナルを再接続するには、次のコマンドを実行します。
sudo screen -r mcs
- 必要に応じて、Ctrl+A キー、Ctrl+D キーの順に押して screen ターミナルを終了します。
- SSH ターミナルを終了するには、次のコマンドを実行します。
exit
これで完了です。ここでは VM の設定とカスタマイズを行い、アプリケーション ソフトウェア(Minecraft サーバー)のインストールと構成を行いました。
タスク 4. クライアント トラフィックを許可する
このタスクでは、クライアントから Minecraft サーバーへの接続を許可するファイアウォール ルールを構成します。この時点でサーバーには外部静的 IP アドレスがありますが、ファイアウォール ルールが適用されていないためトラフィックを受信できません。
Minecraft サーバーはデフォルトで TCP ポート 25565 を使用します。
ファイアウォール ルールを作成する
- Google Cloud コンソールのナビゲーション メニュー(
)で、[VPC ネットワーク] > [ファイアウォール] をクリックします。
- [ファイアウォール ルールを作成] をクリックします。
- 次のように指定し、残りの設定はデフォルトのままにします。
プロパティ |
値(値を入力するか、指定されたオプションを選択) |
名前 |
minecraft-rule |
ターゲット |
指定されたターゲットタグ |
ターゲットタグ |
minecraft-server |
ソースフィルタ |
IPv4 範囲 |
送信元 IPv4 範囲 |
0.0.0.0/0 |
プロトコルとポート |
指定したプロトコルとポート |
-
tcp にはポート 25565 を指定します。
- [作成] をクリックします。
これで、ユーザーが自分の Minecraft クライアントからこのサーバーにアクセスできるようになりました。
サーバーの可用性を確認する
- Cloud コンソールのナビゲーション メニュー(
)で、[VPC ネットワーク] をクリックします。
- 左側のペインで [IP アドレス] をクリックします。
-
mc-server VM の 外部 IP アドレスを見つけてコピーします。
-
Minecraft Server Statusで Minecraft サーバーをテストします。
注: 上記のウェブサイトが動作しない場合は、別のサイトまたは次の Chrome 拡張機能を使用できます。
[進行状況を確認] をクリックして、目標に沿って進行していることを確認します。
クライアント トラフィックを許可する
タスク 5. 定期バックアップをスケジュールする
このタスクでは、Minecraft ワールドデータを Cloud Storage にバックアップするようにシステムを構成します。一般的なアクティビティのひとつに、アプリケーション データのバックアップがあります。
Cloud Storage バケットを作成する
- Google Cloud コンソールのナビゲーション メニュー(
)で、[Compute Engine] > [VM インスタンス] をクリックします。
-
mc-server の [SSH] をクリックします。
- グローバルで一意になるようなバケット名を作成し、環境変数 YOUR_BUCKET_NAME に格納します。プロジェクト ID を一意のバケット名として使用できます。次のコマンドを実行します。
export YOUR_BUCKET_NAME=<バケット名をここに入力>
- echo で確認します。
echo $YOUR_BUCKET_NAME
- Cloud SDK の一部である gcloud ストレージ ツールを使用してバケットを作成するには、次のコマンドを実行します。
gcloud storage buckets create gs://$YOUR_BUCKET_NAME-minecraft-backup
注: このコマンドが失敗した場合、一意のバケット名が作成されていないことが考えられます。その場合は別のバケット名を選択し、環境変数を更新してからもう一度バケットを作成してみてください。
注: この環境変数を永続的なものにするには、次のコマンドを実行して、環境変数をルートの .profile に追加します。
echo YOUR_BUCKET_NAME=$YOUR_BUCKET_NAME >> ~/.profile
バックアップ スクリプトを作成する
- mc-server SSH ターミナルで、ホーム ディレクトリに移動します。
cd /home/minecraft
- スクリプトを作成するには、次のコマンドを実行します。
sudo nano /home/minecraft/backup.sh
- 次のコードをコピーしてファイルに貼り付けます。
#!/bin/bash
screen -r mcs -X stuff '/save-all\n/save-off\n'
/usr/bin/gcloud storage cp -R ${BASH_SOURCE%/*}/world gs://${YOUR_BUCKET_NAME}-minecraft-backup/$(date "+%Y%m%d-%H%M%S")-world
screen -r mcs -X stuff '/save-on\n'
-
Ctrl+O キー、Enter キーの順に押してファイルを保存してから、Ctrl+X キーを押して nano を終了します。
注: このスクリプトはサーバーのワールドデータの現在の状態を保存し、サーバーの自動保存機能を一時停止します。次に、サーバーのワールドデータのディレクトリ(world)をバックアップし、その内容を Cloud Storage バケット内のタイムスタンプ付きのディレクトリ(<timestamp>-world)に配置します。スクリプトがデータのバックアップを完了した後に、Minecraft サーバーの自動保存機能を再開します。
- スクリプトを実行可能にするには、次のコマンドを実行します。
sudo chmod 755 /home/minecraft/backup.sh
バックアップ スクリプトをテストし、cron ジョブをスケジュールする
- mc-server SSH ターミナルで、バックアップ スクリプトを実行します。
. /home/minecraft/backup.sh
- スクリプトが終了したら、Cloud コンソールに戻ります。
- バックアップ ファイルが書き込まれていることを確認するには、ナビゲーション メニュー(
)で [Cloud Storage] > [バケット] をクリックします。
- バックアップ バケット名をクリックします。日時スタンプ名があるフォルダが表示されます。バックアップが正常に動作していることを確認したら、タスクを自動化するための cron ジョブをスケジュールできます。
- mc-server SSH ターミナルで、cron テーブルを編集のために開きます。
sudo crontab -e
- エディタを選択するよう要求されたら、nano に対応する番号を入力して Enter キーを押します。
- cron テーブルの最後に、次の行を貼り付けます。
0 */4 * * * /home/minecraft/backup.sh
注: この行により、cron は 4 時間ごとにバックアップを実行します。
-
Ctrl+O キー、ENTER キーの順に押して cron テーブルを保存してから、Ctrl+X キーを押して nano を終了します。
注: この結果、1 か月に約 300 件のバックアップが Cloud Storage に作成されることになるため、料金がかからないよう定期的な削除が必要となります。Cloud Storage では、オブジェクトの有効期間(TTL)の設定、古いバージョンのアーカイブ、コスト管理を容易にするためのストレージ クラスのダウングレードなど、オブジェクトのライフサイクル管理機能を利用できます。
[進行状況を確認] をクリックして、目標に沿って進行していることを確認します。
定期バックアップをスケジュールする
タスク 6. サーバーのメンテナンス
このタスクでは、サーバーに接続してシャットダウンし、サーバーのメンテナンスを実行します。
SSH 経由でサーバーに接続して停止し、VM をシャットダウンする
- mc-server SSH ターミナルで、次のコマンドを実行します。
sudo screen -r -X stuff '/stop\n'
- Google Cloud コンソールのナビゲーション メニュー(
)で、[Compute Engine] > [VM インスタンス] をクリックします。
- [mc-server] を選択します。
- [停止] をクリックします。
- 確認ダイアログで [停止] をクリックして確定します。
SSH セッションからログアウトされます。
注: インスタンスを再起動するには、インスタンス ページを開き、[起動] をクリックします。Minecraft サーバーを再起動するには、インスタンスとの SSH 接続を確立して永続ディスクを再マウントし、新しい screen ターミナルで Minecraft サーバーを起動します。この手順は、前に行った操作と同じです。起動スクリプトとシャットダウン スクリプトでサーバーのメンテナンスを自動化する
永続ディスクのマウントと screen でのサーバー アプリケーションの起動を手動で行う代わりに、メタデータ スクリプトを使用して起動スクリプトとシャットダウン スクリプトを作成し、これらの作業を自動化できます。
-
mc-server をクリックします。
-
[編集] をクリックします。
-
[メタデータ] で [+ 項目を追加] をクリックし、次の値を指定します。
キー |
値 |
startup-script-url |
https://storage.googleapis.com/cloud-training/archinfra/mcserver/startup.sh |
shutdown-script-url |
https://storage.googleapis.com/cloud-training/archinfra/mcserver/shutdown.sh |
注: [項目を追加] をクリックして shutdown-script-url を追加します。インスタンスを再起動すると、起動スクリプトが自動的に Minecraft ディスクを所定のディレクトリにマウントし、Minecraft サーバーを screen セッションで起動してセッションの接続を解除します。インスタンスを停止すると、シャットダウン スクリプトが Minecraft サーバーをシャットダウンしてから、インスタンスがシャットダウンします。これらのスクリプトは Cloud Storage に保存することをおすすめします。
- [保存] をクリックします。
[進行状況を確認] をクリックして、目標に沿って進んでいることを確認します。
サーバーのメンテナンスを実行する
タスク 7. まとめ
このラボでは、基本ソフトウェア(ヘッドレス JRE)とアプリケーション ソフトウェア(Minecraft ゲームサーバー)をインストールして、カスタマイズされた仮想マシン インスタンスを作成しました。また、高速 SSD データディスクの接続と準備を行って VM をカスタマイズし、アドレスが一定になるように静的外部 IP を予約した後、ゲームサーバーの可用性をオンラインで確認しました。
さらに、バックアップ システムを設定し、サーバーのデータを Cloud Storage バケットにバックアップしてシステムをテストした後、cron を使用してバックアップを自動化しました。最後に、メタデータを使用して、サーバーの起動とシャットダウンを正常に行うためのメンテナンス スクリプトを設定しました。
ラボを終了する
ラボが完了したら、[ラボを終了] をクリックします。ラボで使用したリソースが Google Cloud Skills Boost から削除され、アカウントの情報も消去されます。
ラボの評価を求めるダイアログが表示されたら、星の数を選択してコメントを入力し、[送信] をクリックします。
星の数は、それぞれ次の評価を表します。
- 星 1 つ = 非常に不満
- 星 2 つ = 不満
- 星 3 つ = どちらともいえない
- 星 4 つ = 満足
- 星 5 つ = 非常に満足
フィードバックを送信しない場合は、ダイアログ ボックスを閉じてください。
フィードバックやご提案の送信、修正が必要な箇所をご報告いただく際は、[サポート] タブをご利用ください。
Copyright 2025 Google LLC All rights reserved. Google および Google のロゴは、Google LLC の商標です。その他すべての社名および製品名は、それぞれ該当する企業の商標である可能性があります。