見出し画像

GCP(Googleクラウド)でJava版マイクラサーバーを構築する 1.21対応

 Java版マイクラサーバーの構築手順を紹介します。この手順の特徴は、

  • プレイ時のみサーバーを起動するため、クラウド利用料を抑えて運用できます。(1か月数百円程度)
    →特定のフレンドと1日数時間程度プレイする人に向いています。

  • 自宅サーバーと異なり、ポート開放やHamachiのインストールなどが不要です。
    →参加者はIPアドレスを指定するだけで簡単にプレイできます。

 統合版のマルチプレイの方法は全く異なりますので、この記事の対象ではありません。

前提

  • GCPへ登録を完了していること。

  • GCPで課金が有効になっていること。
    ※利用が初めての人は300ドルの無料枠があります。

VMの準備

 ・VMインスタンスを新規作成します。

 名前は何でもOKです。
 リージョンは国内(東京もしくは大阪)を選びます。海外サーバーリージョンは安価ですが遅延が多いためおすすめしません。

 マシンタイプはいったん"e2-medium"としておきます。2~3人で小規模なワールドであればこれで十分ですが、参加人数が増えたりワールドが大きくなったりしたときは、後から簡単に変更できます

 ブートディスクのタイプは、"変更"をクリックして"標準永続ディスク"に変更すると若干の料金の節約ができます。容量は後から増やすこともできますので、10GBのままでOKです。

 "HTTPトラフィックを許可する"にチェックを入れておきます。

以上の設定でVMインスタンスを"作成"します。

マイクラサーバーの初期セットアップ

 作成したサーバーにSSH接続します。

 以下のスクリプトをまるごとコピー&ペーストして実行します。
 ※EULA(利用規約)に同意してから実行してください。

# パッケージを更新します
sudo apt update

# minecraftというフォルダを新規作成して、作業ディレクトリを移動します
mkdir minecraft
cd minecraft

# Java 21をダウンロード、インストールします
wget https://download.oracle.com/java/21/latest/jdk-21_linux-x64_bin.deb
sudo dpkg -i jdk-21_linux-x64_bin.deb

# Minecraft server 1.21をダウンロードします
wget https://piston-data.mojang.com/v1/objects/450698d1863ab5180c25d7c804ef0fe6369dd1ba/server.jar

# EULA(利用規約)に同意します
echo "eula=true" > eula.txt

# サーバーを実行します(テスト)
java -Xmx2048M -Xms2048M -jar server.jar nogui
まるごとスクリプトを張り付けてEnterキーで実行する

(参考)もし1.21より新しいバージョンで構築したいときは、https://www.minecraft.net/ja-jp/download/serverから最新のダウンロードリンクをコピーして、スクリプト13行目のダウンロードリンクを差し替えてから実行してください。

以下のように" Done (XXXXs)! For help, type "help""というメッセージが表示されればマイクラサーバーが開始しています。

 このSSH画面は閉じずに次のファイアウォールの設定に進んでください。もし画面を閉じるとマイクラサーバーが停止してしまいます。

ファイアウォールルールの作成

 外部からマイクラサーバーのポート25565にアクセスするためにはファイアウォール許可の設定が必要です。

  外部IPアドレスの横に表示されている"nic0"をクリックします。

 ネットワーク"default"をクリックします。

 ファイアウォールのタブを開き、"ファイアウォールルールを追加"をクリックします。

 以下の設定を入力して"作成"してください。

  • 名前:何でもOKです

  • ターゲットタグ:"minecraft"

  • 送信元IPv4範囲:"0.0.0.0/0"

  • プロトコルとポート:TCP 25565

ファイアウォールルールの適用

 VMインスタンスの画面に戻り、インスタンス名をクリックして、"編集"をクリックします。

 少し下にスクロールしたところにある、ネットワーク タグの設定に、先ほど作成したファイアウォールルールである"minecraft"を追加します。

 画面下に表示されている"保存"をクリックします。

 以上で構築は完了です。次に接続テストをしてみます。

接続方法

 VMインスタンスに表示されている外部IPアドレスをメモしておきます。

 マインクラフトを起動して、"マルチプレイ"→"ダイレクト接続"を選択して、先ほどメモしたIPアドレスを入力して"サーバーに接続"をクリックします。

 以上でひとまず構築は完了です。

Operator(管理者)権限の付与

 Tabキーを長押しして、自分のユーザー名をメモしておきます。

 SSH画面で"op [ユーザー名]"を入力してEnterを押します。(例えばユーザー名がabc1234のときは"op abc1234"と入力します。

 すると、"サーバー管理者権限を付与しました"というメッセージが表示され、マイクラ内で管理者権限のコマンドが使えるようになります。

マイクラサーバーを停止するとき

 マイクラ内で"/stop"と入力してコマンドを実行すると、マイクラサーバーが停止します。 

 もしくはSSH画面で"stop"と入力してもマイクラサーバーを停止させることができます。(SSH画面でコマンドを入力するときは"/"スラッシュは不要です)

VMをシャットダウンするとき

 SSH画面で以下のコマンドを実行すると、VMをシャットダウンできます。※データの消失を避けるために、先にマイクラサーバーを停止してください。
※コマンド実行からシャットダウンまで1分ほど時間がかかります。
※VMの起動時間に応じて料金が加算されるので、サーバーを利用していないときは極力シャットダウンすることをおすすめします。

sudo shutdown now

サーバーの開始方法(初回以降)

 VMインスタンスを"開始/再開"します。

 "SSH"をクリックします。

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

# 作業ディレクトリを移動します
cd minecraft

# サーバーを実行します
java -Xmx2048M -Xms2048M -jar server.jar nogui

 IPアドレスはVMを起動するたびに変わってしまいますので、VM起動後に再度確認してください。

 またプレイ中はSSH画面を閉じないでください。閉じてしまうとマイクラサーバーが終了してしまいます。

応用編

 以上の手順でマイクラサーバーを運用できますが、お気づきの通りいくつか不便な点がありますので改善していきます。
※この作業を開始する前に、マイクラサーバーを停止してVMもシャットダウンしてください。

1. VM起動時にマイクラサーバーを自動実行、マイクラサーバー停止時に連動してVMをシャットダウンする

 ・マイクラサーバーを開始するたびにSSHを開きコマンドを入力
 ・プレイ中にSSH画面を開きっぱなし
 ・プレイ終了後にコマンドを入力してVMをシャットダウン
 これらを毎回行うのは非常に面倒なので、以下の手順に沿ってVM起動時にマイクラサーバーを自動実行、そしてマイクラサーバー停止時に連動してVMをシャットダウンすることができます

 インスタンス名をクリックして、"編集"をクリックします。

 下までスクロールして、"自動化"の"起動スクリプト"に、以下のスクリプトを記述します。

cd /home/abc1234/minecraft
java -Xmx2048M -Xms2048M -jar server.jar nogui
shutdown now

 ただし、abc1234の部分は各自のGoogleIDに置き換えてください。GoogleIDとは、普段Googleにログインするときに入力しているIDです。

 画面一番下にある"保存"をクリックします。

 以上の手順で、VM起動時にマイクラサーバーを自動実行、そしてマイクラサーバー停止時に連動してVMをシャットダウンすることができます。つまり、もはやSSHを開いて操作する必要が全くないです。これはいいですね😊。
※ちなみにVMの起動はスマホアプリ版のGCPからも可能です。

 実際にテストしてみます。VMを起動してマイクラサーバーが立ち上がるまで1分ほど待機してからサーバーに接続したところ、自動でマイクラサーバーが立ち上がりました。

 そして、"/stop"コマンドでマイクラサーバーを停止してから1分ほどすると、自動でVMが停止しました。

2. IPアドレスを固定する(非推奨)

 サーバー起動するたびにIPアドレスが変わってしまうと、参加者に毎回知らせないといけないため、不都合な場合もあると思います。
 以下の手順でIPアドレスを固定できますが、料金が毎月1500円ほど追加でかかり割高なので設定しないことをお勧めします

インスタンス名をクリックして、"編集"をクリックします。

中盤までスクロールして、"ネットワーク インターフェース"の矢印マークを押して中身を展開します。

"外部IPv4アドレス"(エフェメラル)をクリックして、"静的外部IPアドレスを予約"をクリックします。

 適当に名前をつけて"予約"します。

 固定IPアドレスが割り当てられます。そのままページ一番下の"保存"をクリックして完了です。

 なお、固定IPアドレスを割り当てたVMインスタンスを削除した場合は、固定IPアドレスは自動で解放されず、課金が発生し続けますので注意が必要です。

次回予告

 今回作成したサーバーに、以下の機能を追加したいと思います。

  • データの自動バックアップ

  • ブラウザ経由でバックアップのダウンロード

 質問等ありましたらお気軽にコメントでお問い合わせください。


この記事が気に入ったらサポートをしてみませんか?