Google Cloud Engineの無料枠を使ってMineCraft Java版のマルチプレイサーバーを立てる方法

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

どうもこんにちは、如月翔也(@showya_kiss)です。
 今日はこの前ネタを探していてなんとなく思いついた、「Google Cloud Engine(以下GCE)の無料枠を使って、Java版のMineCraftのマルチプレイサーバーを立てる方法」についてガイドをお送りしたいと思います。
 GCEは無料枠だと0.5~2CPU、メモリも1GBなのでMineCraftのマルチプレイサーバーを立てるのにはちょっと力不足(主にメモリ面で)なんですが、Ubuntuを使っていてメモリが足りにない分にはスワップを使えばいいので、まあそれでもかなり貧弱なサーバーですし地形作成なんかは20分30分かかっちゃうんですが、まあ3~4人の身内で遊びたいニーズなら使えなくはない感じです。
 本気でガッツリ遊びたいのであれば同じLAN内でちゃんとしたパソコンにJavaとサーバーを入れて動かす方がいいんですが、その方法だとサーバーのパソコンをいちいち起動しないと遊べないのが難点で、そして自動化なんかをしている場合サーバーを落とさないで誰もログインしていなくても自動化装置自体は動いていてくれていた方が都合が良かったりもするので、今回は貧弱ながらも実用には耐えるレベルのサーバーが立つので、試しに作ってみましょう。

まずGoogle Cloud EngineでVMを作る作業を行う

GCEでサーバーを立てる方法はGoogle Cloud Engineを使って無料でVMインスタンスを立ち上げる方法という記事に書いてあるのですが、書いてから日数が経っており、その間にGCEの画面構成がちょっと変わっている部分があるのでもう一回書き直します。
 もうサーバーを持っている人はこの項目を無視して構いません。また、もしマイクラサーバーを走らせるのであれば他の動作をさせられる余裕はないので、できるならクリーンな状態からVMを立ち上げ直したいです。
 そうする場合、VMを削除してから作り直しましょう。
 GCEでVMサーバーを立てるには以下手順が必要です。

  • https://cloud.google.com/compute?hl=jaを開く
  • 「Compute Engineの無償トライアル」をクリックする
  • メールアドレスとパスワードで認証が行われる。必要なら2段階認証を行う
  • ステップ1/2の画面
     - 国を日本にして続行
  • ステップ2/2の画面
     - 「アカウントの種類」を「ビジネス」から「個人」に変更する
     - クレジットカード情報を入力する(Googleアカウント名義がカード名義と違っても通る)
     - 請求住所を入力してから「続行」をクリックする
  • 新しく画面が開く
     - 「ニーズの説明」の項目で「その他」を選択
     - 「詳細」欄にニーズを記載(例:ブログ開設・個人ユースのアプリ作成など)し、「次へ」をクリック
     - 「検討理由」欄については適切なものを選び、「次へ」をクリック
     - 「何をやりたいですか」については適切なものを選択して「次へ」をクリック
     - 「役職」欄については適切なものを選んで「完了」をクリック
  • 「ようこそ画面」が表示される
     - 画面下「プロダクト」の中にある「VMの作成」をクリック
  • 「Compute Engine API」の画面が表示される
     - 画面中:「有効にする」をクリック
  • 「VMインスタンス」の画面に遷移する

ここまでやったらVM作成画面までたどり着けます。そもそもVMを持っていて消した人はVM作成画面まで自力でたどり着いて下さい。
 では、VMを作成します。次の手順に従って下さい。

  • 「VMインスタンス」画面で「VMインスタンスを作成」ボタンをクリック
  • 切り替わった画面に次を入力
     - 「名前」:サーバー名を好きな名前で入力。英小文字と数字とハイフンだけで作成。
     - 「リージョン」:「us-west1(オレゴン)」を選択
     - 「ゾーン」:変更しない
     - 「マシンの構成」:「汎用」にチェックが入っている状態で「e2」を選択。最初からそうなっている
     - 「マシンタイプ」:「プリセット」が選ばれているので下の「e2-medium(2 vCPU、1コア、4GBメモリ)」が選ばれているボックスをクリック、「e2-micro」に変更
     - 「ブートディスク」までは無視して進め、「ブートディスク」の下の「変更」ボタンを押す
     - 「ブートディスク」画面が右からせり出すので次を選択
      - 「OS」:「Ubuntu」を選択
      - 「バージョン」:「Ununtu22.04LTS」(x84/64の方)を選択
      - 「ブートディスクの種類」:「標準永続ディスク」が選ばれているので変えない
      - 「サイズ」:「30」に書き換える
      - 画面下「選択」を押してせり出してきた画面を消す
     - ファイアウォールまで無視して進め、「ファイアウォール」のチェックボックスは3つともチェックを入れる
     - 「詳細オプション」まで無視して進め、「詳細オプション」をクリックして展開
      - 展開した画面、「ネットワーキング」を展開
      - 「IP転送」は「有効にする」にチェックを入れる
      - 「ネットワークインターフェース」まで無視して進め、「ネットワークインターフェース」の中の「default default」をクリックして展開
       - 「外部IPアドレス」が「エフェメラル」になっているのでクリックして開き、プレミアムティアを持っていればそれを選択、なければ「静的外部IPアドレスを予約」を選び、開いた画面で名前をつけて予約するとプレミアムティアが追加されるのでそれを選択
     - 画面一番下まで行き「作成」を押すとVMが作成される

この手順でVMの作成は終了です。IPアドレスは静的に持っているので外部からアクセスするIPアドレスは変わりません。必要に応じて自分の持っているドメインのサブドメインをそのIPアドレスに向けてあげると後で楽ができるでしょう。
 作成にはしばらく時間がかかるので、完了まで待ちます。

先にGoogle Cloud EngineのファイアウォールでMineCraftのポートを開放しておく

VMが作成されると「VMインスタンス」の画面にVM名が表示され、右側にIPアドレスがあり、さらに横にハンバーガーメニュー(・が縦に3個並んだメニュー)が表示されます。
 それをクリックして「ネットワークの詳細の表示」をクリックします。
 切り替わった画面左、「ファイアウォール」をクリックし、切り替わった右側画面で「ファイアウォールルールを作成」をクリックします。
 開いた画面で「名前」は自由に、「トラフィックの方向」は「上り」、「ターゲット」は「ネットワーク上のすべてのインスタンス」、「送信元IPv4範囲」には「0.0.0.0/0」、「プロトコルとサポート」は「指定したプロトコルとポート」を選んで「TCP」にチェックを入れ「ポート」には「25565」を入力して画面下の「作成」ボタンを押します。
 続いて「ファイアウォールルールを作成」をクリックし、開いた画面で「名前」は自由に、「トラフィックの方向」は「下り」、「ターゲット」は「ネットワーク上のすべてのインスタンス」、「送信元IPv4範囲」には「0.0.0.0/0」、「プロトコルとサポート」は「指定したプロトコルとポート」を選んで「TCP」にチェックを入れ「ポート」には「25565」を入力して画面下の「作成」ボタンを押します。
 これでファイアウォール設定はできたので画面左上の「Google Cloud」のアイコンをクリックして画面を切り替え、次に「Compute Engine」をクリックしてVMの画面に戻ってきます。

Google Cloud EngineのVMにアクセスして、まずスワップを設定する

戻ってきた画面で、「VMインスタンス」の画面にVM名が表示され、右側にIPアドレスがあり、さらに横に「SSH」の表示が出ます。
 このSSHを押して出た画面でこれから作業していきます。SSHを押すと新しい画面が表示され、「承認」画面がでるので「Authorize」をクリックするとしばらくしてSSHの画面が表示されます。
 表示を確認したら次のコマンドを順番に行います。

sudo su

sudo fallocate -l 8G /swapfile

chmod 600 /swapfile

sudo mkswap /swapfile

sudo swapon /swapfile

これでスワップファイルが8GB設定されたので、スワップを使うので結構遅いですが、それでもメモリを仮想的に8GB使えるようになります。
 これだけの設定だとVMを再起動するとスワップが消えるので、次のコマンドを実行して開いたファイルの最後に「/swapfile none swap sw 0 0」を追加して保存する事で毎回起動時にスワップが有効になります。
 次コマンドを実行した後、まず「a」キーを押して追記モードにし、矢印キーでファイルの最後まで移動し、リターンで改行した後「/swapfile none swap sw 0 0」を貼り付けるなり書き込むなりした後「ESC」キーを押してから「:wq」を入力してエンターしたら上書き保存されます。
 実行コマンドは次です。

sudo vi /etc/fstab

書き込みが終わったら画面がSSHに戻ってくるので、スーパーユーザーから抜けるのに次コマンドを打ちます。

exit

MineCraftのJava版を動かすのに必要な環境を整える

スワップが8GB予約できたのでMineCraftのJava版のサーバーが動くだけの環境ができたので、次はMineCraftのJava版を動かすのに必要なJavaをインストールします。
 MineCraftで使うJavaは17ではなくて16じゃないと動かないので、次のコマンドを順次実行します。

sudo add-apt-repository ppa:linuxuprising/java -y

結構待たされます。

sudo apt update

わりと早く終わります。

sudo apt install openjdk-16-jre -y

画面が一回切り替わり、「Oracle No Fee」みたいな画面が出るので、Tabを押して「OK」を赤くしてリターンします。
 続いて「Configring Oracle-java17-installer」の画面になるので、矢印キー右を押して「Yes」を選んでエンターします。
 かなり待たされた後セットアップが終わり、SSHの画面に制御が戻ってくるので、これでJavaのセットアップは終了です。

MinecraftのJava版サーバーの最新プログラムをダウンロードしてくる

ではVMにMineCraftのJava版の最新バージョンのサーバープログラムをダウンロードしてきましょう。
 これはSSHではなくブラウザでhttps://www.minecraft.net/ja-jp/download/serverにアクセスし、画面内の「Download minecraft_server.1.20.4.jar」の「minecraft_server.1.20.4.jar」の文字を右クリックして「リンクのアドレスをコピー」しておきます。
 それからSSHの画面に戻って「wget」を入力し、半角スペースをあけてから今コピーしてきたリンクを貼り付けてエンターします。
 するとデータがダウンロードされます。

MineCraftのサーバーを起動する

Wgetでサーバープログラムがダウンロードされたら、一度次のコマンドを打ってMineCraftのサーバーを起動します。これは最終的にエラーを吐いて落ちますが、設定ファイルを作るのに必要なので一回実行して下さい。

java -Xmx1024M -Xms1024M -jar server.jar nogui

エラーを吐いて落ちたら、次のコマンドを打ってエディタを開き、「eula=false」の部分を「eula=true」に書き換えて上書き保存します。
 コマンドを打った後「a」キーで入力モードにし、「false」まで移動してからバックスペースでfalseを消し、「true」を打ち込んだ後に「ESC」を1回押してから「:wq」を押してエンターで上書き保存できます。
 コマンドはこれです。

sudo vi eula.txt

上書き保存が終わったら、以下コマンドを打ってMineCraftサーバーを起動します。
 screenコマンドを使う事でSSHを閉じた後でも動くようになっています。

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

サーバーが貧弱なので、一度起動するのに物凄く時間がかかります。
 特に地形作成が延々0パーセントを表示し続けてかなりイライラすると思うのですが、初回起動は30分くらい見ておくと良いと思います。もしかしたらそれ以上かかるかもしれません。
 また、サーバーが万が一落ちた場合、上記コマンドを再度実行する事でもう一度起動できます。二回目以降の起動は地形作成が入らないので15分くらいで立ち上がると思います。
 screenコマンドで永続化して動かしているので、SSH画面を閉じない状態でクラッシュするとSSHからアクセスできないのですが、その場合「CTRL+a」を押してから「CTRL+d」を押すとSSH画面に戻ってくるので、そこからもう一度上記コマンドを打つと良いと思います。

MineCraftから接続を試す

サーバーが立ち上がったら、MineCraftから接続を確認します。
 普通にMineCraftを立ち上げ、プレイで「マルチプレイ」を選択、「サーバーを追加」して追加画面を開き、「サーバーアドレス」にVMの静的外部IPアドレスを入力して「完了」を押し、表示されるサーバーをクリックしてプレイ開始すればオーケーです。反応が遅いので、何回か「更新」しないとサーバーが見えないかも知れません。また、静的外部IPをサブドメイン形式でDNSに登録している場合、IPアドレスではなくドメイン名で入力しても使えます。
 ドメイン名で登録しておくと出先とか別PCで接続する時に便利なので、設定できる人はやっておくといいかも知れませんね。

この手順で立てたサーバーは1人で遊ぶ分にはそんなにプレイに問題は感じないですし、3~4人くらいなら同時プレイが行ける感じなのではないでしょうか。

まあ無料の範囲でのお遊びなので、身内でちょっとあそびたい、くらいの気持ちの時に良いと思います。
 一応Google Cloud Engineの無料の範囲で作っているので、規約が変わらない限り永遠に無料で遊べるサーバーなので、マップにあきたらVMごと消して新しいマップを作ってもいいですし、適当に遊べるおもちゃとして試してみてはいかがでしょうか?

この記事を書いた人 Wrote this article

如月翔也 男性

如月翔也です。ガジェットとAppleが大好きな中年男です。ガジェットがお好きな方、Appleがお好きな方、トラブルでお困りの方はぜひブログをごらん下さい。コメントを貰うと非常に喜ぶのでお気軽にコメントをお願いします。  詳細なプロフィールは「https://saigetudo.com」を御覧ください!


Warning: Undefined array key "url" in /home/c2855771/public_html/techblog.show-ya.blue/wp-content/plugins/donorbox-donation-form/donorbox_embed_campaign.php on line 168