見出し画像

【完全無料】 Java版マイクラサーバーをサクッと建てる

Java版のマイクラサーバーをColab上にサクッと作る。(早ければ数分)

こちらの記事では、「アドレスを固定」かつ「常時稼働」させたいがために、ごにょごにょとやっているが、数十分だけサクッと遊びたい人は、Colabでサクッとサーバーを建てることができる。

ngrokの登録

Authtokenだけ手に入れば、それ以降の作業は不要。

Colab

import requests
!sudo apt-get update
!sudo apt install -y openjdk-17-jdk
!mkdir -p "/content/drive/My Drive/Minecraft-server"
%cd "/content/drive/My Drive/Minecraft-server"
URL = "https://maven.fabricmc.net/net/fabricmc/fabric-installer/1.0.1/fabric-installer-1.0.1.jar"
r = requests.get(URL)
if r.status_code == 200:
    with open('/content/drive/My Drive/Minecraft-server/server.jar', 'wb') as f:
        f.write(r.content)
!java -jar server.jar server -mcversion 1.20.4 -downloadMinecraft
!echo "eula=true" >> eula.txt
import threading
import time
import requests
!curl -s https://ngrok-agent.s3.amazonaws.com/ngrok.asc | \
  sudo gpg --dearmor -o /etc/apt/keyrings/ngrok.gpg && \
  echo "deb [signed-by=/etc/apt/keyrings/ngrok.gpg] https://ngrok-agent.s3.amazonaws.com buster main" | \
  sudo tee /etc/apt/sources.list.d/ngrok.list && \
  sudo apt update && sudo apt install ngrok
!ngrok config add-authtoken <ngrokのtoken>
def ngrok():
    !ngrok tcp 25565 --region jp
threading.Thread(target=ngrok).start()
time.sleep(2)
ngrok_url = requests.get('http://localhost:4040/api/tunnels').json()['tunnels'][0]['public_url']
print(f"外部からアクセス可能なURL: {ngrok_url}")
%cd "/content/drive/My Drive/Minecraft-server"
!java -Xms10G -Xmx10G -jar server.jar nogui

colabにこのコードを貼り付け、
<ngrokのtoken>のところをさっきの Authtoken に書き換え、実行。
GoogleDriveの許可を求める画面が出るので許可する。

ぶわーっとログが出るが、
途中で「外部からアクセス可能なURL: tcp://〜」というログが出るので、「〜」の部分をひかえる。(おそらく「0.tcp.jp.ngrok.io:数字」)

[Server thread/INFO]: Done (12.682s)! For help, type "help"
のようなログが出たら起動完了。マイクラ(このコードの場合、バージョンは1.20.4)を起動し、マルチプレイのダイレクト接続から「0.tcp.jp.ngrok.io:数字」を入れると入れる。

「ランタイムの接続解除」でColabを終了する。

ちなみに URL = の行と、1.20.4 のところを書き換えれば好きなサーバーを入れることができる。(公式だとかForgeだとか……)

Colabを終了したとしても、ワールドはDriveに保存されているので、2回目以降は次のコードで起動できる。

from google.colab import drive
drive.mount('/content/drive')
!sudo apt-get update
!sudo apt install -y openjdk-17-jdk
import threading
import time
import requests
!curl -s https://ngrok-agent.s3.amazonaws.com/ngrok.asc | \
  sudo gpg --dearmor -o /etc/apt/keyrings/ngrok.gpg && \
  echo "deb [signed-by=/etc/apt/keyrings/ngrok.gpg] https://ngrok-agent.s3.amazonaws.com buster main" | \
  sudo tee /etc/apt/sources.list.d/ngrok.list && \
  sudo apt update && sudo apt install ngrok
!ngrok config add-authtoken <ngrokのtoken>
def ngrok():
    !ngrok tcp 25565 --region jp
threading.Thread(target=ngrok).start()
time.sleep(2)
ngrok_url = requests.get('http://localhost:4040/api/tunnels').json()['tunnels'][0]['public_url']
print(f"外部からアクセス可能なURL: {ngrok_url}")
%cd "/content/drive/My Drive/Minecraft-server"
!java -Xms10G -Xmx10G -jar server.jar nogui

起動前にMinecraft-serverフォルダ内のserver.propertiesを弄れば、サーバーの設定を変えられる。

設定できる内容はこちらを参考。

ops.jsonを編集することで管理者権限を与えることもできる。

こちらを参考。

終わりに

そもそも、そこそこのスペックのPCが家にあるなら、Colabなんかに頼らずそれで動かせば良い。

記事のヘッダーはBSLという影modを入れたときの画像。良い。

この記事が気に入ったらサポートをしてみませんか?