minecraft
Docker
gcpja
GoogleCloudPlatform
gcp

エンジニアのための、圧倒的最安Minecraftサーバ構築(月々たったの600円!)

More than 3 years have passed since last update.

始めに値段を書きます

たったの月々600円でMinecraftのサーバを常時起動出来ます(※現状の価格です。)


  • Docker (option)

  • Google Cloud Platform (f1-micro instance)

https://cloud.google.com/compute/pricing

f1-micro instance は、月間常時起動した場合 $0.006/hour(EU/asia)。

31*24=744時間で$4.464、ディスクの値段等を含めると$5程なので、$1=120円として600円程度です。

Diskは10GBの標準ディスクとして計算。(SSDだと結構値段が変わって来るので気を付けてください。10GB当たり150円程度UP)。Minecraftのワールドデータはどんなに大きくても1GBくらいだろうと思ったので、このサイズにしました。足りなくなったら後で拡張する事も可能ですし


f1-micro じゃ動かなくね?

そう思われるかも知れません。(と言うか動きません)

そこで出てくるのが「cuberite」!!


cuberiteとは?

C++で書かれた、公式のMinecraftサーバの完全互換(を謳っている)サーバです。

動作させてみた感じ、f1-micro インスタンス上でメモリ使用量は VIRT が600MB、RESが80MB程度。(swapを2GB程度確保しています)CPUは誰も居なければほぼ0%なので割と健全です(何人かログインした状態でのメモリ使用量は後で記載しようと思います)

公式のMinecraftサーバも試してみましたが、CPUが100%に張り付き、メモリもスワップしまくりで、A single server tick took 60.99 seconds (should be max 0.05) (1チックの処理に60秒以上掛かった)として、サーバがクラッシュしてしまい、全く使い物になりませんでした。

cuberiteでは、既存のワールドデータを読み込ませた場合そのまま使う事が出来たので、既に別の形でサーバを立ち上げていた場合でも、問題無く移行は可能のようです。

(まだ使い始めたばかりなので、複数人プレイ等で障害が頻発するような場合があれば追記したいと思います。)


cuberiteの導入方法

公式サイトでバイナリを配布しているので、これを使用する事も可能です。(32bit / 64bit 両方あります)

ただ一つ、気を付けないといけない点があり、glibc 2.15 以上が必要です。

CentOS 6.x系だと glibc 2.12 になってしまうので入れる事が出来ません。(恐らくCentOS 7系以降だと入れられると思います)Ubuntuだと12系がダメで、14以降かな・・・

新しくインスタンスを立ち上げる際のOSとして、「慣れているから」と言う理由で、これら古い系統のOSを選択してしまうと、動作しない悲しい思いをしてしまうので気を付けてください・・・。


それでも古いOSを使いたかったら?

Dockerを使う、と言う手があります。と言うか僕がそうでした。(既にCentOS 6.7で立ててしまっていたので・・・)ので一応書いておきます。

最初は、自分でDockerfileを書く気満々でしたが、検索したら既に誰かが書いてくれていました。のでこれをそのまま使いました。

$ sudo docker run -i -p 25565:25565 --name mc sftech/minecraft-server

のようにして起動しましょう。コンテナ大好きコンテナ中毒者さんにもおすすめです。:thumbsup:


最後に忘れずにやるべき事

ファイヤウォールルールとして、tcp:25565 を解放しておく事を忘れずに・・・!

firewall.png

インスタンスのタグに設定をして

firewall2.png

保存も忘れずに。


追記

Cuberite はまだまだ不完全な部分もあるようです。

既存のワールドを移行する際には、元のワールドデータを予めバックアップしておくことをおすすめします。