まりぴよこのブログ

日々の日記。技術ネタでまとまりきってないものの記録、伝わる文章の書き方を練習とか。

GCPでマイクラサーバー

外にマイクラサーバー立てよう、と思ってどこでやるかなーと探してたところ、 Google Cloud Platformで立てられるチュートリアルが公式から出てる、という情報をゲットして、やってみた。

Setting up a Minecraft server on Google Compute Engine  |  Solutions  |  Google Cloud Platform

ちなみにGCP初心者です。

以下内容はほぼ↑の公式チュートリアルまんまだけど、ちょっとアレンジしたところ(スペックケチるとか、フォーマットのコマンドがなくなってたのに対応とか)がある。

1. GCPプロジェクトを作る

まずはGoogle Cloud Platformのプロジェクトを作る。 いろんなGCPのサービスを入れるための入れ物のような感じ。 xxx_minecraft とでもして、マイクラ関連のプロジェクトだとわかるようにしとくと良い。 プロジェクト名はユニークでないとダメなので、xxxの部分でオリジナル感を出す。

2. Compute Engine instance を作る

マイクラサーバーを実行してくれるVMを作る。 チュートリアル通りに進むのであれば、 mc-server と名付ける。 (私のようにGCPに慣れていない人ならGCP各サービスの名前がごちゃごちゃになって、何の設定してるのかわからなくなると思うので、チュートリアル通りに名付けるのが吉)

指定するスペックは以下の通り。 (ここでちょっとチュートリアル逸脱して、zoneとか勝手に近いのにしてみた)

  • インスタンス名 : mc-server
  • ゾーン : asia-east1-a
  • マシンタイプ : g1-small (1.7 GB memory)
  • ブートディスク : Debian GNU/Linux 8 (jessie) (10GB) - デフォルトまま
  • タグ : minecraft-server とつける

変更点

  • ゾーンを東アジアにしてみた(台湾らしい)
  • マシンタイプをケチって1個下にしてみた
    • 4,5人でプレイしてみたけど全然大丈夫
    • 最初一番下の f1-micro (0.6 GB memory) にしてみたら、さすがに3人接続目くらいで落ちたので作り直した・・
  • ブートディスク SSDにしろとか書いてあったけど、デフォルトのままにしてみた(特に問題なし)

タグについて

VMにタグが付けられる。 VM作ってると下の方に出てくる「設定」リンクをクリックすると出てくる、詳細オプション。

後でネットワーク設定に使うので忘れずに設定すること。

チュートリアルで、さらっと

Tag your instance

Later in the tutorial, you'll use this tag to create a firewall rule that will allow external Minecraft clients to access your server.

後でファイアウォールの設定に使うよ、と書いてある。 (ここをさらりと読み飛ばしていて、ファイアウォール設定に手間取った・・)

タグ設定は大事なので、ちゃんと設定しとく。

えいっとVMを立ち上げる。(しばし待つ)

後でとか言って忘れるのでネットワークの設定やっとく

Google Cloud Platform の左上ロゴから、ツールとサービスをクリック

  • 「ネットワーキング」を選ぶ
  • 「ネットワーク」から default を選ぶ
  • ファイアウォール ルールを追加」ボタンをクリック

以下の詳細でルールを追加する

  • 名前: minecraft-rule
  • ソースフィルタ: すべてのソースから許可 0.0.0.0/0
  • 許可対象プロトコルとポート: tcp:25565
  • ターゲットタグ: minecraft-server

VM のタグで指定した minecraft-serverファイアウォールルールのタグを一致させる。

参考URL Google Compute Engineのファイヤーウォールを理解する #gcpja | Developers.IO

ディスクを追加する

VMのブートディスクとは別にディスクを追加しておく。 マイクラサーバーの本体はこちらにインストールしておくと、後々VMを入れ替えたりするような時に役立つ。

マシンタイプをケチって最小にしたら、マシンタイプは後で変更できなくて、VMインスタンス作り直しになり、 ディスク別にしておいてよかったーと思った ww

ディスクを作成のスペック

  • 名前 : minecraft-disk
  • ディスクタイプ : SSD永続ディスク
  • ゾーン : asia-east1-a
  • ソースの種類 : なし (空のディスク)
  • サイズ (GB): 50

チュートリアル通り、ディスクタイプはSSDに変更する。 ゾーンだけVMと合わせてみる。(近い方がいいだろう) IO多いはずなので、従っといたほうが良いと思う。

IP

VM立ち上げると自動でIP振られるので、これは特にいらないと思う。

ディスクのマウントとフォーマット

VMインスタンスから、さっき作ったVMを選択

VM名(mc-server)横に SSH ボタンがあるのでクリック

ウェブコンソールでSSHログインする

ディスクのフォーマット&マウント

VM と diskをアタッチ

VMから外部ディスクが使えるように、アタッチする。 最初Webのコントロールパネルからできたような気がするんだけど、改めて見たら選び方がわからなくなってしまったので、ローカルマシンのコンソールからやる方法を記載してみる。

チュートリアルでは、

Click Create to create the new disk. When you create the instance, the disk will be attached automatically. とあるので、ディスク作成時に自動でアタッチされるらしい。。

以下はもし自動でアタッチされなかった場合の手順。

gcloud SDK インストール

cloud.google.com

インストーラーでよしなにインストールする

gcloud 設定

Auth

Google Accountにログインできるようにする

$ gcloud auth login

コンソールから↑コマンドを叩くと、ブラウザが起動して、Google Accountにログインするか聞かれる。 許可を与える。

確認

$ gcloud auth list

Project 設定

$ gcloud config set project PROJECT_ID

PROJECT_ID には最初に設定したGCPプロジェクト名を入力 (xxx_minecraftのとこ)

attach disk

Adding or Resizing Persistent Disks  |  Compute Engine Documentation  |  Google Cloud Platform

$ gcloud compute instances attach-disk minecraft-hr-n --disk minecraft-disk --zone asia-east1-a

アタッチ完了。

もちろん逆もできる。

detach disk

$ gcloud compute instances detach-disk mc-server --device-name minecraft-disk --zone asia-east1-a

ローカルマシンでの作業ここまで。

アタッチしたディスクをフォーマットする

ここからまたWebのコンソールからSSHログインしてコマンドを実行する。

ディスクを初期化してよい場合のみ実行。 (ディスク上にあるデータはまっさらになってしまうので、注意)

チュートリアルのディスクフォーマットコマンドは廃止されたらしいので、以下の情報を元に実行

参考URL :

user@mc-server: sudo mkfs.ext4 -F -E lazy_itable_init=0,lazy_journal_init=0,discard /dev/disk/by-id/google-minecraft-disk 

注意点!

SSHログインしたコンソールで

user@mc-server: /dev/disk/by-id/[TAB]

by-idの後タブキーを打つことで、自分のとこのディスクIDがわかる。 外部ディスクのディスクタイプをSSDに変更している場合、 scsi- のような感じで始まるディスクがそれ。

マウントする

マウントするディレクトリを作成

user@mc-server: sudo mkdir -p /mnt/disks/minecraft

マウントする(by-id以下はさっきフォーマットしたときに指定したDiskID)

user@mc-server: sudo mount -o discard,defaults /dev/disk/by-id/google-minecraft-disk /mnt/disks/minecraft

ここまでできればあと一息!

JRE インストール

パッケージのアップデート

user@mc-server: sudo apt-get update

JRE インストール

user@mc-server: sudo apt-get install -y default-jre-headless

マイクラサーバーのダウンロード&インストール

マウントしたディスクに移動

user@mc-server: cd /mnt/disks/minecraft

マイクラサーバーの使いたいバージョンをダウンロードする

minecraft.net

jar の url をコピー wgetでダウンロード

user@mc-server: wget https://s3.amazonaws.com/.....

マイクラサーバー起動

user@mc-server: java -Xms1024M -Xmx1024M -d64 -jar minecraft_server.jar nogui

ていうかこの辺からは普通のマイクラサーバー起動時の設定なので、省略!

eula.txtの設定やら、server.properties やら、screenでssh切っても大丈夫にするなど。

Happy Minecraft life :)