「お父さんと 2 人だけでマイクラやりたい!」
GW に娘がそんなこと言い出したので、お父さん、ちょっと頑張ってプライベートサーバーを立ててみたよ!
注意: この方法で立てたサーバーには、Minecraft pocket edition からはアクセスできません。Minecraft pocket edition で子供を一緒に遊びたい方は、こちらの記事を参考にしてください。 【親子でマイクラ PE】自宅 Wi-Fi で同時プレイ! 2 つの iPhone で同じ世界に入って遊ぶ方法 | Minecraft(マインクラフト) | できるネット
下調べ
少し調べていると、Mincraft はサーバーがソフトウェアにて配布されていてこれを実行するとプライベートサーバーになるようです。
これをダウンロードして、自分のローカル PC で動かすとプライベートサーバーが作れるのですが、仕事に行っている間も自宅の PC で Mincraft を動かしているのは抵抗があったので、クラウド上にホスティングすることにしました。
サーバー代あまりかけたくないし、常時動かす必要はないので、こういう場合は「Heroku」一択ですね。
構築手順
基本的にはこのheroku-buildpack-minecraftにある通りに設定すると大丈夫です。
ngrok の token を取得する
ngrokという、ローカル PC にトンネルを作って Internet に接続できるようにするサービスがあるので、無料のアカウントを取得して token を取得します。
git プロジェクトを作成して eula.txt を作成する
新しく git プロジェクトを作成して、中にeula.txt
をおきます。
echo 'eula=true' > eula.txt
git init
git add eula.txt
git commit -m "Add eula.txt"
eula.txt
の中身は次のなっています。
eula=true
Heroku アプリケーションを作成する
Heroku toolbeltをインストールして Heroku アプリケーションを作成します。 途中で buildpack と環境変数(ngrok の token)の指定をします。
heroku create
heroku buildpacks:add heroku/jvm
heroku buildpacks:add https://github.com/jkutner/heroku-buildpack-minecraft
heroku config:set NGROK_API_TOKEN="xxxxx"
git push heroku master
環境変数の指定は GUI の設定ページからも行えます。
接続用アドレスを取得して Mincraft から接続する
Heroku のアプリケーションが正常に作成できた後に、実際に Heroku のプライベートサーバーにアクセスして接続用のアドレスを取得します。
heroku open
プライベートサーバーにアクセスすると、次のようなアドレスが画面上に表示されます。
Server available at: 0.tcp.ngrok.io:XXXXX
これを Mincraft で接続先のサーバーに指定すると、プライベートサーバーにアクセスできるようになります。
セーブデータを S3 に保存する
Mincraft のセーブデータは Heroku の中に保存されます。 しかし、Heroku のサーバーは 24 時間に 1 回再起動してしまうので、その度にセーブデータがなくなってしまいます。そこでセーブデータを S3 へ転送します。
AWS のコンソールで S3 バケットと IAM を作成して、アクセスキーとシークレットキーを取得します。 これを Heroku の環境変数に設定します。
heroku config:set AWS_BUCKET=your-bucket-name
heroku config:set AWS_ACCESS_KEY=xxx
heroku config:set AWS_SECRET_KEY=xxx
AWS の IAM 設定はこのあたりの記事を参考にしてください。 特定の S3 バケットにだけアクセスできる IAM ユーザーを作る | I am mitsuruog
これで 60 秒に一回、セーブデータが転送されるようになりました。
まとめ
Heroku でプライベートサーバーを立てる方法でした。Heroku と AWS を扱ったことがあるイケメンなら、そこまで難しくない手順だと思います。
とはいえプライベートサーバーを立てたあとに、Minecraft に edition の違いがあることを知り、結局自分用の pocker edition を買って遊ぶことになったのですが。。。 娘がもう少し大きくなって PC 使えるようになったら、使いたいと思います w