今回は RaspberryPi 4でMinecraftサーバーを作ってみました。
RaspberryPi 4で、Minecraft Java版のサーバーを作ることで、無線LANアクセスポイント化すれば何処でもMinecraftをグループで楽しむことができます。
モバイルバッテリーでRaspberryPi4を動かせば、インターネットにつながなくても課金がなくてもグループでオリジナルの世界で遊ぶことができます。
当然 MOD を入れたオリジナルのサーバーを作ることもできます。
Minecraftには、統合版もありますが、統合版のサーバー(アルファ版)が正式には非公開となったことと、MODをインストールしたかったこともあり、今回はJava版での構築になります。
Table of Contents
Minecraft Serverの環境
Minecraftサーバーは、RaspberryPi3B+などでも動作しますが、CPUパワーなどを考えて RaspberryPi4 でサーバーを作ります。
使用した環境は次の通り。
- RaspberryPi4 4GB
- Rasbian 32-bit
- microSD 128GB
RaspberryPi4は、発熱も多いので大きな冷却ケースを使うのが良いです。
本格的に使うのであれば、RaspberryPi4 Ubuntu Server 20.04 LTS 64-bitに変更して、無線LANをアクセスポイント化するとグループで無線LANで何処でも楽しむことができます。
事前にパッケージを最新にしておきます。
1 2 | sudo apt update sudo apt upgrade |
今回は、Minecraft サーバーを /opt/minecraft/1.16.5/ ディレクトリに作っていきます。
minecraft サーバーを一般ユーザーで動作させるため、minecraftユーザーを追加します。
1 2 3 | sudo useradd -m -r -d /opt/minecraft minecraft sudo mkdir /opt/minecraft/1.16.5 sudo chown -Rf minecraft:minecraft /opt/minecraft/1.16.5 |
Minecraft Serverのインストール
RaspberryPi4の準備ができたら Minecraft サーバーを作っていきます。
Javaのインストール
Minecraft サーバー Java版を動かすために OpenJDKをインストールします。
今回インストールしたバージョンは、Rasbianでサポートされている Open-JDK 11
1 2 | sudo apt install openjdk-11-jre* openjdk-11-jdk* sudo apt install wget screen |
Minecraft サーバーの入手
Minecraftサーバーの最新版は、次のURLからダウンロードできます。
今回は、Minecraft forge(MOD)が 1.16.5に対応していたので、公開時点で最新の 1.16.5 のサーバ-を使用しました。
1 2 3 | cd /opt/minecraft/1.16.5/ sudo wget -O minecraftserver.jar https://launcher.mojang.com/v1/objects/1b557e7b033b583cd9f66746b7a9ab1ec1673ced/server.jar |
過去のバージョンが必要なときには、次のURLから指定のバージョンのサーバー(jar)を入手できます。
EULAの設定
Minecraftサーバーを使用するには EULA(End User License Agreement)に許諾する必要があります。
以下のテキストファイルを作成して許諾します。
1 | sudo bash -c "echo eula = true> /opt/minecraft/1.16.5/eula.txt" |
テスト起動
forgeのインストールなどの前に、動作するかテストします。
追加の設定をしていませんので シード値は自動選択で バニラ状態で起動します。
1 2 | cd /opt/minecraft/1.16.5/ sudo java -Xmx1024M -Xms1024M -jar /opt/minecraft/1.16.5/minecraftserver.jar nogui |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 | pi@raspberrypi:/opt/minecraft/1.16.5 $ sudo java -Xmx2048M -Xms2048M -jar /opt/minecraft/1.16.5/minecraftserver.jar nogui [06:00:01] [main/INFO]: Environment: authHost='https://authserver.mojang.com', accountsHost='https://api.mojang.com', sessionHost='https://sessionserver.mojang.com', servicesHost='https://api.minecraftservices.com', name='PROD' [06:00:04] [main/WARN]: Ambiguity between arguments [teleport, destination] and [teleport, targets] with inputs: [Player, 0123, @e, dd12be42-52a9-4a91-a8a1-11c01849e498] [06:00:04] [main/WARN]: Ambiguity between arguments [teleport, location] and [teleport, destination] with inputs: [0.1 -0.5 .9, 0 0 0] [06:00:04] [main/WARN]: Ambiguity between arguments [teleport, location] and [teleport, targets] with inputs: [0.1 -0.5 .9, 0 0 0] [06:00:04] [main/WARN]: Ambiguity between arguments [teleport, targets] and [teleport, destination] with inputs: [Player, 0123, dd12be42-52a9-4a91-a8a1-11c01849e498] [06:00:04] [main/WARN]: Ambiguity between arguments [teleport, targets, location] and [teleport, targets, destination] with inputs: [0.1 -0.5 .9, 0 0 0] [06:00:04] [main/INFO]: Reloading ResourceManager: Default [06:00:09] [Worker-Main-6/INFO]: Loaded 7 recipes [06:00:12] [Worker-Main-6/INFO]: Loaded 927 advancements [06:00:19] [Server thread/INFO]: Starting minecraft server version 1.16.5 [06:00:19] [Server thread/INFO]: Loading properties [06:00:19] [Server thread/INFO]: Default game type: SURVIVAL ... [06:01:21] [Worker-Main-4/INFO]: Preparing spawn area: 87% [06:01:21] [Worker-Main-5/INFO]: Preparing spawn area: 92% [06:01:22] [Worker-Main-6/INFO]: Preparing spawn area: 92% [06:01:22] [Server thread/INFO]: Preparing spawn area: 92% [06:01:23] [Server thread/INFO]: Preparing spawn area: 96% [06:01:23] [Server thread/INFO]: Preparing spawn area: 96% [06:01:23] [Server thread/INFO]: Time elapsed: 61659 ms [06:01:23] [Server thread/INFO]: Done (61.980s)! For help, type "help" [06:01:26] [Server thread/WARN]: Can't keep up! Is the server overloaded? Running 2090ms or 41 ticks behind [06:01:54] [Server thread/WARN]: Can't keep up! Is the server overloaded? Running 13156ms or 263 ticks behind |
起動した後は、ディレクトリに ワールドデータやログなどのファイルが自動的に作成されます。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | pi@raspberrypi:/opt/minecraft/1.16.5 $ pwd /opt/minecraft/1.16.5 pi@raspberrypi:/opt/minecraft/1.16.5 $ ls -l 合計 37112 -rw-r--r-- 1 root root 2 6月 8 06:06 banned-ips.json -rw-r--r-- 1 root root 2 6月 8 06:06 banned-players.json -rw-r--r-- 1 root root 12 6月 8 05:55 eula.txt drwxr-xr-x 2 root root 4096 6月 8 06:05 logs -rw-r--r-- 1 root root 37962360 1月 15 01:09 minecraftserver.jar -rw-r--r-- 1 root root 2 6月 8 06:06 ops.json -rw-r--r-- 1 root root 1084 6月 8 06:05 server.properties -rw-r--r-- 1 root root 108 6月 8 06:08 usercache.json -rw-r--r-- 1 root root 2 6月 8 05:56 whitelist.json drwxr-xr-x 11 root root 4096 6月 8 06:18 world |
ワールドを作り直したいときには、minecraftserver.jar と eula.txt 以外を削除すれば綺麗な環境からワールドを作り直せます。
バニラで遊びたい人は、ここまででインストールは終わりになります。
最後の「自動起動の設定」をすれば、RaspberryPi4の電源をいれると自動的にMinecraftサーバーが立ち上がるようになります。
forge server(MOD対応サーバー)の置き換え
Minecraftサーバーをバニラで起動できましたので、MOD対応のサーバーに入れ替えていきます。
1 2 3 | cd /opt/minecraft/1.16.5 sudo wget -O forge-installer.jar https://maven.minecraftforge.net/net/minecraftforge/forge/1.16.5-36.1.0/forge-1.16.5-36.1.0-installer.jar sudo java -jar forge-installer.jar nogui --installServer |
forge-1.16.5-36.1.0.jar ができあがっていることを確認します。
上手く forge対応の Minecraft Serverの jarができあがったら、今までの minecraftserver.jar と置き換えます。
1 2 | sudo cp minecraftserver.jar minecraftserver-1.16.5-vanilla.jar sudo cp forge-1.16.5-36.1.0.jar minecraftserver.jar |
後はバニラと同じようにminecraftserver.jarを起動するだけで forge対応のサーバーが起動します。
試しに「豆腐craft Reloaded」のワールドMODを入れてみました。
「豆腐craft Reloaded」は、1.16.5に対応した TofuCraft のMODです。
ローカルのMinecraftにも forgeをインストールして、TofuCraftが起動することを確認。
確認した TofuCraftの jar をサーバーのmodディレクトリにコピーして再起動します。
草を刈ったら大豆がでてきたので、TofuCraftもサーバーで動いているようです。
自動起動の設定
バニラやforge対応のサーバでの起動が確認できたら、自動起動の設定をします。
1 | sudo nano /etc/systemd/system/minecraft.service |
minecraft.service の内容は次の通り。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 | [Unit] Description=Minecraft Server: %i After=network.target [Service] WorkingDirectory=/opt/minecraft/%i User=minecraft Group=minecraft Restart=always ExecStart=/usr/bin/screen -DmS mc-%i /usr/bin/java -Xmx2G -jar minecraftserver.jar nogui ExecStop=/usr/bin/screen -p 0 -S mc-%i -X eval 'stuff "say SERVER SHUTTING DOWN IN 5 SECONDS. SAVING ALL MAPS..."5' ExecStop=/bin/sleep 5 ExecStop=/usr/bin/screen -p 0 -S mc-%i -X eval 'stuff "save-all"5' ExecStop=/usr/bin/screen -p 0 -S mc-%i -X eval 'stuff "stop"5' [Install] WantedBy=multi-user.target |
これでRaspberryPi4 Rasbianが起動したときのスクリプトが完成しました。
次のコマンドを実行して、起動時に自動的に立ち上げるようにします。
1 2 3 | sudo systemctl daemon-reload sudo systemctl enable minecraft@1.16.5 sudo systemctl start minecraft@1.16.5 |
どこでも遊べるMinecraftサーバー
これで何処でも手軽に遊べる Minecraftサーバーができあがりました。
今のところ 有線LANでの接続ですので、無線LANをアクセスポイントにしてノートPCなどから簡単に接続できるようにすれば、もっと便利になりそうです。