はじめに
MinecraftのJava版ソロワールドのデータを、GCPのCompute Engineを使用してマルチサーバーを立ち上げ、そちらに移す作業を行いました。
今回は鯖立てに至った経緯から、サーバーを立てて実際にワールドに参加するところまでの流れについてまとめていきたいと思います。
目的
もともとシングルプレイのワールドで遊んでおり、友人とマルチプレイをしようとなった際、そのワールドを使い都度LANに公開
からポート番号の設定を行い公開し、別途ポート開放を行っていたのですが、その作業を毎回するのが面倒だと感じ最初からサーバーとして立てておけば毎回作業する必要もなくなると考えました。
その際、自宅鯖では常時PCを起動しておかなければいけないなどの問題から、クラウドの勉強を兼ねてGCPでサーバーを立てることにしました。
1.アカウント登録
以下のサイトからGCPのアカウント登録を行います。
ニーズの説明を選択し利用規約に同意して続行を選択し、電話番号・クレジットカード情報などを入力して完了を押すとGCPが利用可能になります。
2.仮想マシンの作成
ダッシュボード画面左上に表示されるハンバーガーメニューよりCompute Engine
のVMインスタンス
を選択します。
VMインスタンスの画面が表示されるので、インスタンスを作成
を選択します。
インスタンスの作成画面になるので、設定を行います。
基本的な構成はお財布などと相談し、それぞれのお好みで設定してください。
今回私はできるだけ安くなるよう、リージョンには一番料金のかからないus-west4(ラスベガス)
を選択し、マシンの構成も安価のE2
とし、マシンタイプもサーバーに大人数が入るわけではないので、基本のe2-medium
としました。
また、可溶性ポリシーのVMプロビジョニングモデルを、標準
からスポット
に変更しておくことでさらに価格を抑えることができるためおすすめです。
ブートディスクなどの設定もお好みでいいと思います。
ファイアウォールはHTTP/HTTPSどちらのトラフィックも許可しておきましょう。
デフォルトの設定ではVMを起動するたびにIPアドレスが変更されてしまうので、IPアドレスの設定もしておきましょう。
最下部の詳細オプション
を展開し、さらにその中のネットワーキング
を展開します。そしたら、その中のネットワークインターフェース
を開き、プライマリ内部IPv4アドレス
の中にある静的内部IPV4アドレスを予約
を選択します。
そこで任意の名前をつけて予約
を選択することで、静的アドレスを設定できます。
ここまで出来たら下の作成
をクリックしインスタンスを作成します。
3.作成したインスタンスの設定
3-1.サーバーの作成
インスタンスの作成後SSHを選択し、接続を行います。
接続が完了したらパッケージのアップデートとアップグレードを行います。
sudo apt update && sudo apt upgrade
次にサーバーを立てるためのserver.jarを動かすためのJREをインストールします。
sudo apt install -y default-jre-headless
それができたらminecraftのサーバーをインストールするために、ディレクトリを作成し移動します。
mkdir minecraft
cd minecraft
ディレクトリを移動したら以下のURLから。最新バージョンのserver.jarをダウンロードするURLをコピーして下記のコマンドを実行しダウンロードします。
今回であればバージョン1.20.4
をダウンロードしています。
curl -OL https://piston-data.mojang.com/v1/objects/8dd1a28015f51b1803213892b50b7b4fc76e594d/server.jar
ダウンロードができたらサーバーを一度起動します。
java -Xmx1024M -Xms1024M -jar server.jar nogui
これにより作成されるeula.txtをnanoやvimなどのエディタで開き、その中のeula=false
をeula=true
に書き換えます。
vi eula.txt
再度サーバーを起動するとワールドなどのデータが作成されます。
これでサーバーの作成は一旦完了です。
新規ワールドでプレイしたい場合、インスタンスの設定はここまでで大丈夫です。
3-2.シングルプレイのワールドを移動
ここからは、既存ワールドをローカルからインスタンスへの移動を行います。
事前にローカル上のシングルプレイで利用しているワールドのデータを、zipファイルに圧縮しておきます。
SSH接続をしている画面上部にあるファイルをアップロード
をクリックし、ファイルを選択
で先ほど作成したzipファイルを選択し、ファイルをアップロード
をクリックします。
アップロードが完了すると/home/user(ユーザー名)
にzipファイルが追加されていると思います。そしたら、ディレクトリminecraft内にあるworldフォルダを削除し、zipファイルをminecraftディレクトリに移動させます。
cd minecraft
sudo rm -rf world
cd ..
sudo mv world.zip minecraft
移動が完了したらzipファイル解凍のためにunzipをインストールします。
sudo apt install -y unzip
インストールが完了したらmincraft内に移動し解凍し、解凍したフォルダ名をworldに変更してください。
これによりワールドデータの移動が完了です。
cd minecraft
sudo unzip world.zip
sudo mv ファイル名 world
4.ファイアウォールの設定
作成したインスタンスに外部から接続できるように、minecraftサーバーで使用するポートを開放します。
VPCインスタンス
のファイアウォール
を選択します。
新しくルールを追加するためにファイアウォールルールを作成
をクリックします。
名前は各々任意のわかりやすいものにします。
下へスクロールし、ターゲットタグ
に分かりやすいような任意のタグ名を付け、送信元IPv4範囲
に「0.0.0.0/0」を設定して、プロトコルとポート
にminecraftのデフォルト値のtcp:25565
を設定します。
以上の設定を行ったら作成
をクリックすることでルールが作成されます。
次に、このファイアウォールルールを仮想マシンに適用します。
VMインスタンス
に戻り適用する仮想マシンを指定し、編集
をクリックします。
ネットワークタグ
の設定部分にターゲットタグで設定したものと同じタグを設定して保存します。
これでアクセスができるようになったはずです。
5.minecraftに接続
5-1.screenコマンドを使用しサーバーの起動
SSH接続でサーバーを起動した後、接続が切れた後でもサーバーが持続できるように、screen
コマンドを使用してサーバーを起動します。
screen -S minecraft java -Xmx1024M -Xms1024M -jar server.jar nogui
起動後:ctrl + a -> d
現状のセッションを確認する場合は
screen -ls
起動している内部に入る場合
screen -r minecraft
などのコマンドを使ってください。
これでサーバーが立ち上がったはずです。
5-2.サーバーに接続
マルチプレイ
からサーバーを追加
をクリックし、サーバーアドレスに今回構築した仮想マシンのIPアドレスを入力し、完了をクリックします。
追加したサーバーへ接続可能になっていれば成功です。
まとめ
今回GCPを使用してminecraftに接続するまでを行い、クラウドコンピューティングの基礎的な何となくの知識は得ることができたのではないかと感じました。
スペック等がどれくらい負荷をかけても大丈夫なのかなどのことは、追々行っていこうと思います。
参考にさせていただいた記事