マイクラサーバーをGoogle Colab上で動かす

Google ColabはPythonしか動かせないものだと思っていましたが、Ubuntuが採用されているらしくUbuntuがそのまま動くらしいです。
そこで「もしかしてマイクラのサーバーうごくんじゃね。」と思っていろいろしたら普通に動きました。

最初に言っておくこと

Google Colabは完全無料で動きますが、12時間以上動かし続けることができません。
そして正直、Colabでサーバーを起動してもチャンクの読み込みがそんな早くないです。
工夫すれば軽くなるのかもしれませんが実用性はそんなないです。
スーパーフラットだと軽いのでそちらをメインとして使うんだったら良いかもしれません。

必要なもの

  • Google アカウント
  • パソコン
  • マイクラサーバーを構築できる環境
  • マイクラjava版

準備する

マイクラサーバー

事前にマイクラサーバーを構築する

Colab上でマイクラサーバーを構築するのは正直面倒なので事前に構築済みのマイクラサーバーを用意し、それをColab上で動かします。
サーバーの構築は前にしたのでそちらを見てください。
上の記事はChiyogamiサーバーを構築していますが、マイクラサーバーだったらなんでも動きます。(一部除いて)
わかりやすくするためにサーバー本体やserver.propertiesが入っているディレクトリの名前をserverとしておきます。

Google Driveにマイクラサーバーをぶち込む

Google Driveのルート直下にさきほど作ったマイクラサーバーのディレクトリをぶち込んでください。
PC版Google Driveを入れるとファイルの移動がWindowsのエクスプローラーから簡単にできるのでお勧めです。

ngrok

通常、マイクラサーバーを全世界に公開するにはファイアーウォールの設定やポート開放が必要ですが、Colabではそんなことできません。
なので、ngrokというローカルサーバーを全世界に公開できるめちゃ便利なツールがあるのでこれを使います。
他にもCloudflare tunnelという類似サービスもあるようですが、使い方がよく分からなかったので今回はおとなしくngrokを使います。

ログインとトークンのメモ

ngrokの公式サイトに行くと、真ん中に大きくsign up for freeとあるのでそれをクリックします。
アカウントがない人はアカウントを作りましょう。Googleアカウントでもサインアップできます。
ログインするとこんな画面になります。
ページの真ん中にあるトークンをメモしましょう。(ngrok config add-authtokenより後の部分がトークンです)
この部分は人それぞれ違います。人に教えないようにしましょう。

Colab

Colabを起動するといろいろ出てくるので右下らへんにあるノートブックを新規作成をクリックしてください。

そこにコードを打ち込んでいきます。

Google Driveとのリンク

Colabは最初からGoogle Driveにアクセスできるわけではなく、リンクさせるコードをかかなければなりません。難しそうに聞こえますが2行コピペするだけです。
from google.colab import drive
drive.mount('/content/drive')
これを入力して実行するとGoogleのログイン画面が出てくるのでログインします。
そうするとColab上でGoogle Driveにアクセスできるようになります。

OpenJDKのインストール

マイクラサーバーを実行するにはバージョン17以上のJDKが必要です。
ColabにもJDKはインストールされていますが、インストールされているOpenJDKのバージョンが11と古いので新しくインストールします。
!sudo apt-get install openjdk-17-jdk
これを入力して実行するとOpenJDK 17がインストールできます。

ngrokの導入

ngrokを導入するには以下のコマンドを入力します。
これを入力するとngrokがzipファイルとしてダウンロードされ、ダウンロードしたzipファイルが展開されます。
!wget -q -c -nc https://bin.equinox.io/c/4VmDzA7iaHb/ngrok-stable-linux-amd64.zip
!unzip -qq -n ngrok-stable-linux-amd64.zip

次にさっき取得したトークンを登録します。
!./ngrok authtoken さっきコピーしたトークン

実行してみて
Authtoken saved to configuration file: /root/.ngrok2/ngrok.yml
とログに表示されれば成功です。

起動する

マイクラサーバーを起動する前にngrokを起動する必要があります。

!pkill -f ngrok
get_ipython().system_raw('./ngrok tcp  25565 --region jp &')
!sleep 2
import urllib.request, json
with urllib.request.urlopen('http://localhost:4040/api/tunnels') as response:
  data = json.loads(response.read().decode())
(host, port) = data['tunnels'][0]['public_url'][6:].split(':')
print(f"""サーバーアドレス
   {host}:{port}
""")

これを入力するとログに0.tcp.jp.ngrok.io:XXXXXと表示されます。
これをマイクラに入力するサーバーアドレスです。
まだサーバーが起動できていないので接続はできません。

最後にマイクラのサーバーを起動します。
%cd "drive/Mydrive/server"
!java -Xmx8G -Xms8G -jar paper.jar nogui

これを実行するとマイクラのサーバーが起動するはずです。
%cdでGoogle Drive内にあるマイクラサーバーのディレクトリに移動して、
!java -Xmx8G -Xms8G -jar paper.jar noguiでサーバーを実行しています。

Colabはメモリが12.69GBあるらしいですが、ためしに10GB割り当ててみたところ
クラッシュしたので余裕を持たせて8GBにしています。

こんな感じになると動くと思います。



Next Post Previous Post
No Comment
Add Comment
comment url