Edited at

Cloud Foundry v2上でminecraftを動かしてアクセスする方法を調査

More than 3 years have passed since last update.


Cloud Foundry v2上でminecraftを動かしてアクセスする方法を調査

今回はCloud Foundry 情報発信強化週間のネタに何か面白いのがないかと思っていた所

そういえば以前buildpack調査している際にheroku向けのbuildpackでminecraftを対象にしたものがあったな?

という記憶を頼りに、PaaSでminecraftを動かす方法としてどんな手法が取られているかを確認してみることにしました。


Cloud Foundry 向けの様々なアプローチ

Cloud Foundryでminecraftを動かそうという人類の夢は

既に他の方がv1の頃に以下の記事で挑戦されているのですが

【小ネタ】Cloud FoundryでMinecraft Serverを動かす!?

Cloud Foundry v2になって

herokuと同じbuildpackの仕組みが用意されているので

heroku向けに作られているminecraftのbuildpackであれば可能性が高いと推測し調査を行い、今回短い時間で調べた限りでは2つのアプローチが存在していました。


タイプ1

Cloud Foundryのbuildpackとして準備


タイプ2

Cloud Foundryのアプリケーションとしてpushしbuildpackはjavaのものを使う

今回はそれぞれのタイプと手法についてどのようなものかを記載し

実際に動かすことが可能かについても後日可能な限り加筆していきたいと思います


アプローチ例


jkutner/heroku-buildpack-minecraft


タイプ1

紹介記事


特長


  • 作成者はherokuの人らしい

  • eula.txtだけを最初に準備『eula=true』という内容を書いておく


  • NGROKというサービスを使ってコンテナの内部のminecraftサーバへの接続を実現

  • データの永続化はS3を利用


    • 永続化について調べてみるとs3cmdをbuildpackのコンパイルフェーズでaptで入れ、アプリ起動時に60秒間隔でwhileを使ってs3とsyncさせている様子




jacobwgillespie/heroku-minecraft


タイプ1


特長


  • herokuのmulti-buildpack(複数のbuildpack利用する用)を使っている

  • データの永続化はS3を利用

  • websocketを通す為にnodeアプリのhmwtcというアプリを利用


タイプ2


JamesClonk/cf-minecraft-app


特長


  • データの永続化を対応させる為にS3に対応させている

  • eula.txtは内包済み

  • cfと名前の最初に入っているので期待大でしたがTODO/Problemsにweb socket通らないので解決が必要というような内容が書かれていた

  • 以前Qiitaに投稿した『Cloudn PaaS v2(CloudFoundry)の Service(PostgreSQL & MySQL)に接続』のchiselを応用すれば動く可能性あり?


まとめ

今回の調査結果からも特長として現れたように

Cloud Foundryやheroku上でminecraftを動かすには以下の部分がポイントとなります


  • Cloud Foundryやherokuではアプリのコンテナがアプリ停止などで消える為,永続化についてはS3等の手法を使う必要がある為、minecraftでも同様に対処が必要

  • Cloud Foundryおよびheroku上のアプリに通常アクセスする際はhttpやhttpsおよびwebsocket経由になるため何らかのproxy手段が必要