はじめに
SteyHome週間で退屈だったので、Minecraftサーバを立てて遊んでみました。
(サーバ建てたのに同期や友達は誰も参加せず、結局ただのお勉強になってしまいました...)
基本は下記のままなので公式ドキュメントで十分じゃい!という方はそちらをどうぞ
Compute Engine での Minecraft サーバーのセットアップ
https://cloud.google.com/solutions/gaming/minecraft-server?hl=ja
また下記を参考にしていますので、そちらも合わせてどうぞ。
【GCP】Google Cloud Platform でMinecraftマルチサーバーを立てる方法
https://qiita.com/onnobu/items/01e45e3d6988cc54a70b
GCP アカウントの準備
GCPの無料枠で作成します。Googleアカウントに紐づいてGCPを利用するので、なければ新しいアカウントを作成しましょう。
GCPを利用する際、クレジットカードの登録を求められるかもしれませんが、勝手に課金されることはないので安心して登録してください。
Google Compute Engineの作成
Google Cloud プラットフォームの画面からGoogleアカウントでログインします。
ログイン後、
ナビゲーションメニュー > コンピューティング - Compute Engine > VMインスタンス を選択します。
名前・リージョン・ゾーン・マシンの構成は任意の物で良いです。
リージョンやマシンの構成で金額が変わりますので、自分のお財布(トライアルの金額)と相談してください。
ブートディスクの変更を選択します。
ここではOSとディスク(HDDとSSD)を設定できます。
OSは任意で良いですが、ブートディスクのサイズは30GBを推奨します(30GBまでは無料枠のはず)
IPアドレスを設定します。
この工程は無理にする必要はありませんが、行わなければGCEを起動するたびにIPアドレスが変わります。
外部IPは予約すると同時に課金が始まり、GCEのインスタンスを削除しても解放されません。自分で管理する必要があるので気をつけましょう!
ネットワーキングのネットワークインターフェイスを選択して、外部IPのIPアドレスを作成します。
名前は任意です。入力したら、予約を選択します。
以上で、一旦の設定は終わりです。
画面下部の作成をクリックします。
作成したインスタンスの設定
作成後の画面で、先ほど作成したインスタンスのSSHのリストからブラウザウィンドウを選択します。
linuxモジュールのupdateを行います。
またwgetを使うので入れておきましょう。
sudo apt-get update
sudo apt-get install wget
sudo apt-get install screen
minecraftのserver.jarの動かすためのJREをインストールします。
sudo apt-get install -y default-jre-headless
Minecraftサーバのインストール
minecraftのサーバをインストールするために、インストールするディレクトリを作成・移動します。
sudo mkdir /home/minecraft
cd /home/minecraft
minecraftのサーバを取得します。ダウンロードのURLでwgetしてください。
最新バージョンのサーバならここから取得できますが、古いバージョンで建てたい場合は備考を参考にしてください。
sudo wget https://launcher.mojang.com/v1/objects/bb2b6b1aefcd70dfd1892149ac3a215f6c636b07/server.jar
サーバの起動を行います。これによってeula.txtが作成されるので、そのファイルを設定して再度起動させます。
sudo java -Xmx1024M -Xms1024M -jar server.jar nogui
[13:31:15] [main/ERROR]: Failed to load properties from file: server.properties
[13:31:15] [main/WARN]: Failed to load eula.txt
[13:31:15] [main/INFO]: You need to agree to the EULA in order to run the server. Go to eula.txt for more info.
nanoエディタやvimエディタで内容を次のように書き換えます。
vim eula.txt
[before]
eula=false
↓
[after]
eula=true
このタイミングで、minecraftディレクトリの所有者を管理者ユーザから一般ユーザに変更しておきます。
sudo su -
chown -R (YourUser) /home/minecraft
exit
再度起動させます。
今度はscreenコマンドを利用して起動させ、sshでの接続が切れた後でもサーバが持続するようにします。
これで起動させなければ、sshのセッションが切れると同時にサーバも終了してしまいます。
ここではmcsという名前のセッションを作っています(公式のmcsですね)
起動後にctrl + A -> d でscreenのセッションから抜けます。
screen -S mcs java -Xmx1024M -Xms1024M -jar server.jar nogui
起動後
ctrl + a key -> d key
再度screenのセッションに入り、サーバを停止する場合は、
現状のセッションを調べて
screen -ls
それめがけて入る
screen -r mcs
止めるのは
stop
Minecraftサーバへの接続設定
Minecraftサーバはデフォルトでポート番号25565で接続します。
GCEで25565ポートへの接続の許可を設定します。
ネットワークタグに任意のタグを作成します。
25565ポートに許可を出すことやminecraftサーバ用であることがわかる名前が望ましいです。
次にナビゲーションメニュー > ネットワーキング > VPCネットワーク > ファイアウォールルール から作成を選択します。
名前は任意、
ターゲットタグは先ほど作成したタグ名、
ソースIPの範囲は0.0.0.0/0、
ポートとプロトコルで、TCP 25565
で入力して作成を選択します。
以上で終了です。
あとはMinecraftのクライアントからIPアドレスとポートを指定すればアクセスできるはずです。
みんなで Minecraftを楽しんでくださいね!
備考
sshのポート変更
sshのポート変更する場合は次の流れです。
まずsshd_configの設定を変更します。
Portを変えることで任意のポート番号にすることができます(デフォルト22)
sudo vim /etc/ssh/sshd_config
#Port 22
Port 30022 <- こんな感じで変える
#AddressFamily any
#ListenAddress 0.0.0.0
#ListenAddress ::
その後、GCEのネットワークタグとファイアウォールルールで次の設定を行います。
- 許可・拒否するネットワークタグの作成
minecraftサーバ用に25565ポートを設定したのと同じ手順で作成 - ファイアウォールルールの作成
拒否の設定だけ下記に記載します。
任意の名前、ソースIPは0.0.0.0/0で、一致した時のアクションを拒否にします。
古いバージョンのserver.jarの入手方法
Minecraftのクライアントから過去のserver.jarを取得できるようです。
起動構成 > 新規作成 > バージョン から
好きなバージョンを選んで、サーバーを選択してください。
ダウンロード後にブラウザのダウンロード履歴からURLが確認できるはずです。
そのURLでwgetを行えば導入できます。
そのほか気になったこと
GCEインスタンスの起動時と終了時にサーバを閉じたり、開いたりするようなスクリプト(startup-script, shutdown-script)を書いたけどうまく動かなかった。
screenコマンドは起動時に使えないのかということが気になった。