楽してMinecraftサーバを立てたい!
久々に友人からMinecraftやろうと誘われたので、Minecraftサーバーを建てることに。
僕がネットワークのネの字もわからなかったその昔、友人たちとそれぞれの家のPCからMinecraftのマルチプレイをやりたいといった時は、まずMinecraft入れて、Hamachi (VPN.net – Hamachi by LogMeIn)入れて・・・と結構準備が面倒だった記憶がありました。
今作るならGCPにサーバー置いて、どこかからマイクラコンテナ拾ってきてdockerで動かしたら一瞬で作れそうと考えたのでやってみました。
ホスト作成
GCPのダッシュボードより、「Compute Engine」→「VMインスタンス」→「新規作成」
以降はお好みではありますが、今回下記のとおりに指定。
・リージョン:「asia-northeasia1(東京)」(金額が少し上がりますが、なるべく遅延を減らしたいため)
・ゾーン :「asia-northeast1-a」
・CPU :「1」
・メモリ :「3.75GB」
・OS :「CentOS7」
・HDD :「100GB」
上記条件で起動したままの状態だと月額約4,000円です。
(普段は停止しておき、遊ぶ時だけ起動すればそこまでかかりません。)
Docker インストール
VMが起動したらsshでログインし、dockerのインストールを行います。
一つ一つ環境設定するが面倒だったので、公式のスクリプトを使用して一気にインストールしてしまいます。
# curl -fsSL https://get.docker.com -o get-docker.sh # sudo sh get-docker.sh
詳細はこちら:
Get Docker Engine - Community for CentOS | Docker Documentation
インストールが完了したか確認。
# docker -v Docker version 19.03.0, build aeac9490dc
正しくインストールできたら、dockerを起動と自動起動の設定を行います。
# systemctl start docker # systemctl enable docker
Minecraftコンテナインストール
Minecraftサーバのコンテナを作ってくださっている方はやはりいるようで、今回は下記のコンテナをお借りします。
立ち上げ
# docker run -e EULA=TRUE -d -p 25565:25565 --name mc --restart=always itzg/minecraft-server
メモ
「-e EULA=TRUE」
Minecraftの開発元のMojangが定めるエンドユーザーライセンス条項へ同意するかどうかについて。
詳細:
Mojang Account
「-p 25565:25565 」
ホストとコンテナのポート番号の紐付けを設定。
Minecraftが利用しているデフォルトのポート番号は25565なので、変更したい場合は「-p 25575:25565」と設定。(クライアント側でもポートの変更が必要)
「--restart=always」
dockerプロセスが再起動した際、自動的にコンテナを立ち上げるようにする設定。
起動確認
# docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES bc5e2196a9a5 itzg/minecraft-server "/start" 17 hours ago Up 17 hours (healthy) 0.0.0.0:25565->25565/tcp, 25575/tcp mc
ネットワーク設定
GCPのVMは再起動するたびにグローバル側のIPが変わってしまうため、固定とする必要があります。
対象の「VMインスタンス詳細」→「編集」→「ネットワーク・インターフェース」の項目より、外部IPに名前をつけて予約します。
また、ネットワークタグの項目に「minecraft」というタグをつけます。(後のfirewallの項目で利用します)
firewall設定
サイドバーより「ネットワーキング」→「VPCネットワーキング」→「ファイアーウォールルール」に移ります。
「ファイアーウォールルールを新規作成」より、下記のようなルールを作成します。
・優先度:1000以下 (500くらい)
・トラフィックの方向:「上り」
・アクション:「許可」
・ターゲット:「指定されたターゲットタグ」
・ターゲットタグ:「minecraft」
・ソースフィルタ:プレイする人のグローバルIP
・プロトコルとポート:「tcp:25565」
プレイ
Mnicraftを起動し、「マルチプレイ」→「サーバの登録」より、先程作成したVMのIPアドレスを登録。
無事プレイすることができました。
時間があったら
・サーバー監視
・Slackへのログ通知
・k8sでオートスケーリング
までやってみたいですねー。