MineCraftのマルチプレイ環境構築
Indigoの最安値スペック(メモリ1GB)にMineCraftをインストールしてみたのですが、
メモリ不足であえなく異常終了してしまいました。
$ docker-compose -f docker-compose-simple.yml up
Creating network "minecraft_default" with the default driver
Pulling mc (itzg/minecraft-server:)...
mc_1 | OpenJDK 64-Bit Server VM warning: INFO: os::commit_memory(0x00000000d5550000, 715849728, 0) failed; error='Not enough space' (errno=12)
mc_1 | #
mc_1 | # There is insufficient memory for the Java Runtime Environment to continue.
mc_1 | # Native memory allocation (mmap) failed to map 715849728 bytes for committing reserved memory.
mc_1 | # An error report file with more information is saved as:
mc_1 | # /data/hs_err_pid458.log
mc_1 | 2022-06-19T08:14:58.526Z WARN mc-server-runner Minecraft server process failed {"exitCode": 1}
mc_1 | 2022-06-19T08:14:58.526Z INFO mc-server-runner Done
そのため、スペックを1つ上げて(メモリ2GB/CPU2v)で環境を作成しなおしました。
もし、まだVPS(Docker環境構築)が出来てない場合は、
VPS WebARENA (Indigo) でDocker環境構築
を参考に環境準備を進めて頂ければと思います。
Docker環境にMineCraftをインストール
まずは参考にさせて頂いたサイトのソースを
少し修正した、以下のファイルをサーバへアップロードします。
- docker-compose.yml :本体
- jupyter/Dockerfile :jupyterlabを立ち上げるためにDockerfile
- jupyter/requirements.txt :py3minepiというRaspberryJuice Modとpythonが通信するためのパッケージ
- raspberryjuice-1.12.1.jar :今回必要なModのRaspberryJuice
raspberryjuice-1.12.1.jarは、Spigotはプラグインを使って遊ぶことのできる
マインクラフトのサーバー
spigot
からダウンロードしてきます。
C:.
│ docker-compose.yml
│
├─jupyter
│ Dockerfile
│ requirements.txt
│
└─plugins
raspberryjuice-1.12.1.jar
サーバへアップロードしたファイルも掲載しておきます。
docker-compose.yml
version: '3'
services:
minecraft-server:
image: "itzg/minecraft-server:latest"
container_name: "mc-pi"
ports:
- "25565:25565"
- "4711:4711"
volumes:
- "./data:/data"
- "./plugins:/plugins"
environment:
EULA: "TRUE"
TYPE: "SPIGOT"
VERSION: "1.8-R0.1-SNAPSHOT-latest"
tty: true
stdin_open: true
jupyter:
build:
context: ./jupyter
environment:
JUPYTER_ENABLE_LAB: 1
ports:
- 8888:8888
volumes:
- ./jupyter:/home/jovyan/work
command: start-notebook.sh --NotebookApp.token='password'
Dockerfile
FROM jupyter/datascience-notebook
COPY requirements.txt /home/jovyan/work/requirements.txt
RUN pip install -r /home/jovyan/work/requirements.txt
requirements.txt
git+https://github.com/py3minepi/py3minepi
MineCraftを起動する
それでは、ファイルを配置した場所に移動し、docker-composeコマンドを実行します。
SSHでの接続方法は、
を参考にしてみてください。
$ docker-compose ps
Name Command State Ports
----------------------------------------------------------------------------------------------------------------------------
mc-pi /start Up (healthy) 0.0.0.0:25565->25565/tcp,:::25565->25565/tcp,
25575/tcp, 0.0.0.0:4711->4711/tcp,:::4711->4711/tcp
minecraft_jupyter_1 tini -g -- start-notebook. ... Up (healthy) 0.0.0.0:8888->8888/tcp,:::8888->8888/tcp
MineCraftで接続してみようとする
Java版の試用版をつかって接続しようと考えていたのですが、
なんと試用版はマルチプレイが出来ませんでした。。。残念。
jupyterLabを使ってみる
「password」を入力するとログインできます。
JupyterLabでpythonのnotebookを作ります。
以下を実行すると、チャットにメッセージが表示され、、、るはずです!
from mcpi.minecraft import Minecraft
mc = Minecraft.create("minecraft-server", 4711)
mc.postToChat("Hello Minecraft!!!")
また、jupyterLabはそれだけれも色々遊ぶことが出来るので、いじってみてください。