GCPで統合版Minecraftサーバを建てた話

# はじめに
GCP(Google Cloud Platform)上で ubuntu のサーバを借りて、統合版 Minecraft サーバを建てたときのメモです。
ubuntu のサーバを既に持っている方は、後半の統合版 Minecraft サーバを建てるところから読んでも構いません。
今回は無料で Minecraft サーバが建つところまでを目標とし、快適に遊べるかどうかは考えていません。「n1-standard-1」というスペックであれば、まぁ一人で遊ぶ分には問題なさそうです。
（私はGCP の AlwaysFree（一生無料）というメニューでもついでに試してみましたがスペックが低すぎて遊べませんでした。たぶんメモリ不足だと思います。）

#1. GCP を始める
##1.1. 無料トライアルの開始
GCP は Google が提供しているクラウドのサービス群のことです。誰でも自由に使えます。GCP には12か月の無料期間、または 300$ の無料枠があるので、どちらかを使い切るまでは基本無料です。
ただし、支払い情報を登録しないと先には進めないよ。
詳細は既に色々なところで解説されているので端折って、画像ベースで説明していきます。

まずはブラウザで GCP などと検索してトップページからアクセスすると、利用規約の同意を求められたので、適当に読んだら同意して進んでください。そしておもむろに無料トライアルに登録します。
![Windows 10パソコンのスクリーンショットを撮る6つの方法 _ できるネット - Google Chrome 2020_03_12 1_03_52.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/172479/b223307a-83a3-784d-2539-35c63a7750cf.png)
![Windows 10パソコンのスクリーンショットを撮る6つの方法 _ できるネット - Google Chrome 2020_03_12 1_04_27.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/172479/632a46cf-6952-17e9-a8aa-9fffff8255f7.png)
![Windows 10パソコンのスクリーンショットを撮る6つの方法 _ できるネット - Google Chrome 2020_03_12 1_05_10.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/172479/887e2830-076a-297e-a21f-c99ede87a3ab.png)
![Windows 10パソコンのスクリーンショットを撮る6つの方法 _ できるネット - Google Chrome 2020_03_12 1_06_34.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/172479/3eaaa54f-d3b7-fb3d-1e7f-2069493c2283.png)
![Windows 10パソコンのスクリーンショットを撮る6つの方法 _ できるネット - Google Chrome 2020_03_12 1_06_50.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/172479/efec4c9d-58e1-92a0-e1c9-7c0c0cb0dcdb.png)

## 1.2. ubuntu サーバを建てる
統合版 Minecraft サーバには ubuntu という OS 用のパッケージが用意されているので、ubuntu サーバを建てます。
画面左上の「My First Project」から、これから作るプロジェクト全体のダッシュボードにアクセスできるよ。プロジェクトが１つも無い場合は新規にプロジェクトを１つ作りましょう。
私は既存プロジェクトの名前だけ変更しました。
![Windows 10パソコンのスクリーンショットを撮る6つの方法 _ できるネット - Google Chrome 2020_03_12 1_08_23.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/172479/818ae5ef-da8f-f7f7-063d-8266c8374c35.png)
![Windows 10パソコンのスクリーンショットを撮る6つの方法 _ できるネット - Google Chrome 2020_03_12 1_12_55.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/172479/76ab0122-1790-4509-bbb1-1dfad1d291a0.png)
次は左のメニューから「Compute Engine」>「VMインスタンス」>「インスタンスを作成」を選択してサーバを建てます。VM は日本語でいうと仮想マシンのことで、実物の無いパソコンのようなものです。インスタンスというのは、VM に名前を付けて実際に使える状態にしたもののことです。
![ホーム – Minecraft-Test – Google Cloud Platform - Google Chrome 2020_03_19 22_19_46.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/172479/8e03ca94-fed7-b620-6e71-43211abdc64a.png)
まずはサーバに名前を付けて、サーバを建てる地域を選択するよ。地域はどこでも良いですが、私は AlwaysFree というサービスが利用できる北米のオレゴンを選択しました。
１年間の無料枠でも良いから実際に遊べる Minecraft サーバを建てるには、とりあえず東京とかにしておいた方が遅延が小さいので良いかもしれません。n1-standard-1 のスペックであれば自分がログインして遊ぶ分には問題無さそうでした。ユーザが増えてきたらメモリをどんどん増やしていきましょう。
右側に現在のスペックだとコストがどれくらいになるのか表示されているので、それを意識してスペックを選択しましょう。後からでも自由に変更できます。
AlwaysFree の場合は f1-micro、標準永続ディスク 30GB までは使えるみたいです。
![Windows 10パソコンのスクリーンショットを撮る6つの方法 _ できるネット - Google Chrome 2020_03_12 1_46_50.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/172479/ce79aede-ce80-1421-3a06-1a7785212bec.png)
ブートディスクは ubuntu 19.10 を選択します。
![Windows 10パソコンのスクリーンショットを撮る6つの方法 _ できるネット - Google Chrome 2020_03_12 1_46_55.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/172479/cfb5a4e0-651e-3a30-13d4-f8f88b4b3e4f.png)
作成ボタンを押すと、ubuntu サーバが出来上がります。下の画像の赤枠で表示されている「外部IP」がこれから接続する Minecraft サーバの IP アドレスになります。表示されていないときはサーバを起動すると表示されます。
![Windows 10パソコンのスクリーンショットを撮る6つの方法 _ できるネット - Google Chrome 2020_03_12 1_47_45.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/172479/d6d24d12-a3b9-4b3d-7654-0dd0201b4309.png)
## 1.3.ファイアウォールの設定
次はサーバのファイアウォールを設定します。不正アクセスされないための防壁のことです。
左上から GCP のトップページに戻り、左のメニューから「ファイアウォールルール」を探してください。
Minecraft は udp/19132 というポートを使います。画像の通りに設定してください。名前は自分が分かりやすければ良いです。
「ターゲットタグ」の名前も適当で良いですが、後から使うので覚えておいてください。
「ソースIPの範囲」という項目は一般公開する場合には設定不要ですが、自分で練習する場合には家のインターネット用の IP アドレスを入力します。
自分の家の IP は例えば下記サイトで調べられます。
[CMAN] https://www.cman.jp/network/support/go_access.cgi

![Windows 10パソコンのスクリーンショットを撮る6つの方法 _ できるネット - Google Chrome 2020_03_12 1_56_13.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/172479/654127a8-5173-5bda-502d-ad745b83ea3d.png)
![Windows 10パソコンのスクリーンショットを撮る6つの方法 _ できるネット - Google Chrome 2020_03_12 2_17_28.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/172479/3090243a-cbcf-801d-c420-0f84347f3550.png)
![Windows 10パソコンのスクリーンショットを撮る6つの方法 _ できるネット - Google Chrome 2020_03_12 2_17_40.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/172479/8cea8190-9776-94e1-df8c-af6958f88dec.png)
ファイアウォールルールを作ったら、先ほど作成した「VMインスタンス」にルールを適用していきます。
左メニューの「Compute Engine」から先ほど作った VM インスタンスの編集画面にアクセスして、ネットワークタグの箇所に、先ほど「ファイアウォールルール」で名付けた「ターゲットタグ」を入力します。
![Windows 10パソコンのスクリーンショットを撮る6つの方法 _ できるネット - Google Chrome 2020_03_12 2_18_59.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/172479/c5025116-4962-5c4e-bbe3-1826ad6de5b3.png)

適用したら、「Compute Engine」の画面からサーバを起動します。
![ホーム – Minecraft-Test – Google Cloud Platform - Google Chrome 2020_03_20 0_01_25.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/172479/93dcca6f-53a4-d76a-1430-dd4aae06008a.png)

# 2. 統合版 Minecraft サーバの構築
## 2.1. インストール
ubuntu サーバをコマンドで操作するためにサーバに SSH で接続します。SSH というのはセキュアなコマンド操作のことです。
GCP の場合はブラウザからでも接続できます。
![Compute Engine - Minecraft-Test - Google Cloud Platform - Google Chrome 2020_03_20 0_08_38.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/172479/956019ac-c444-4e3b-e1d0-e18dab33713e.png)

ここからはコマンド操作です。もう少しだけ頑張りましょう。コピペできるようにコマンドを用意しておきました。
とりあえず操作しやすいように root ユーザのパスワードを設定しておきましょう。
![sudo.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/172479/f2183e4e-d6ca-7e3c-2da2-2acd3e2e53d4.png)
スーパーユーザー（特権ユーザ）としてルートユーザのパスワードを設定する。という意味です。

```shell
sudo passwd root
```

パスワードの入力を２回求められます。パスワードを設定したら su と入力して root ユーザでログインします。

```shell
su
```

root ユーザでログインしたら mkdir コマンドでサーバをインストールするディレクトリを作ります。作ったら cd コマンドで移動します。

```shell
mkdir /minecraft
cd /minecraft
```
![wget.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/172479/279ddd66-6d5d-bf54-dce7-8b45c32f98a3.png)
その後、統合版サーバをダウンロードします。

```shell
wget https://minecraft.azureedge.net/bin-linux/bedrock-server-1.14.32.1.zip
```

サーバのダウンロードURLは下記サイトのダウンロードボタン右クリックからメモっておいて下さい。
[MINECRAFT] https://www.minecraft.net/ja-jp/download/server/bedrock/
![link.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/172479/ad863e1a-20c8-10fa-0d2e-cec5acfc62c6.png)

ダウンロードが完了したらファイルを解凍します。
初期の ubuntu では解凍コマンドが使えないかもしれないので、以下の２つを先に実行しておいてください。

```shell
apt update
apt-get install zip unzip
```

問題なければ解凍します。

```shell
unzip bedrock-server-1.14.32.1.zip
```
![unzip.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/172479/fdfe8b99-222f-ade5-6435-135a505bfd60.png)

これでインストール完了です。

## 2.2. Minecraft サーバの起動
作ったディレクトリに移動してサーバ起動のコマンドを入力します。サーバを起動するための専用ユーザを作っておいても良いですが、今回はそのまま root ユーザで起動します。

```shell
cd /minecraft
LD_LIBRARY_PATH=. ./bedrock_server
```
![start.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/172479/335d35cd-d3f5-3087-1b16-55f096975bac.png)

## 2.3. Minecraftサーバへの接続
GCP の VM インスタンスの画面に表示されていた「外部IP」を統合版 Minecraft クライアントに入力して、サーバに接続できます。
![接続.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/172479/b3419491-6839-3f70-df2a-f49832568413.png)

特に問題なくサーバに接続できたら、GCP のファイアウォールルールから自分のIPアドレスで制限した箇所を外せば、他の人も接続できるようになります。
統合版サーバの server.properties ファイルを編集すれば、マイクラサーバの各種設定を変更できるので、その辺りは他のサイトを参考にしてみて下さい。

## 2.4. Minecraftサーバの停止
ubuntu のサーバを起動した画面で stop と入力すれば良いです。

```shell
stop
```

停止したら GCP の画面からインスタンスも停止して無駄な課金が発生しないようにしておきましょう。
![停止.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/172479/df7d69e3-149b-7fac-b002-952c0fb7b207.png)


以上です。ね？簡単だったでしょ？
次回はサーバのバックグラウンド実行やTwitter、Line、Discord連携などを書くかもしれません。
![login.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/172479/3c3e35a8-5dd3-3e1f-23f5-84deb2ae54ee.png)