見出し画像

ラズパイ5にコンテナでマイクラMODサーバーを立てる

去年Java MOD鯖で End Remastered 遊んだがエンドポータルを正規ルートで見つけられず結果的にたまたま散策中に見つけクリアしてしまったという点が心残りだったため

今回下記記事を参考にラズパイ5の上にコンテナ化した形でマイクラ Java MOD鯖を立ててみました

ポイント

1番のポイントはラズパイ5だと上記記事とは異なり CPU のアーキテクチャが arm64 のため、それに合わせてベースのイメージを探してビルドする必要があるという点。それ以外は上記記事と似た手順になります。

1.Podman インストール

ラズパイ5に Podman をインストールします

2.Dockerfile作成

ラズパイ5の適当なパスにDockerfileを作ります
今回ラズパイ5でビルドするためベースイメージの platform を linux/arm64 に設定します

FROM --platform=linux/arm64 mcr.microsoft.com/openjdk/jdk:21-mariner AS build

RUN tdnf install -y curl \
    && tdnf clean all \
    && rm -rf /var/cache/tdnf

WORKDIR /root/

RUN curl -OJ https://meta.fabricmc.net/v2/versions/loader/1.20.1/0.15.6/1.0.0/server/jar && \
    java -jar fabric-server-mc.1.20.1-loader.0.15.6-launcher.1.0.0.jar nogui

RUN sed -i -e 's/difficulty=easy/difficulty=hard/g' server.properties && \
    sed -i -e 's/false/true/g' eula.txt

COPY files/mods/ /root/mods
VOLUME /root/world

EXPOSE 25565

ENTRYPOINT [ "java", "-jar", "-Xms6G", "-Xmx6G", "fabric-server-mc.1.20.1-loader.0.15.6-launcher.1.0.0.jar", "nogui" ]

3.MODファイルの準備

ラズパイ5のDockerfile と同じパスに files/mods フォルダを作り 1.20.1サポートの Fabric MOD の jar ファイルを探して格納します 

mkdir -p files/mods

目的の End Remastered [Fabric] は下記よりダウンロードしました

その他 今回下記のような MOD を入れました

cristellib-1.1.5-fabric.jar
duckling-3.0.0-fabric.jar
DungeonsArise-1.20.1-2.1.57-fabric-release.jar
entityculling-fabric-1.6.2-mc1.20.1.jar
expandedstorage-10.3.0-beta.1+1.20.1-fabric.jar
fabric-api-0.92.0+1.20.1.jar
fabric-end-remastered-5.2.3.jar
farmers-delight-fabric-1.4.3.jar
ferritecore-6.0.1-fabric.jar
geckolib-fabric-1.20.1-4.2.1.jar
iris-mc1.20.1-1.6.17.jar
jei-1.20.1-fabric-15.3.0.4.jar
NethersDelight-1.0.0.jar
sodium-fabric-0.5.8+mc1.20.1.jar
TerraBlender-fabric-1.20.1-3.0.1.4.jar
Terralith_1.20.4_v2.4.11.jar
Towns-and-Towers-1.12-Fabric+Forge.jar

4.Worldフォルダ作成

ラズパイ5にマイクラのワールドデータを保存する /mnt/world フォルダを作成し、書き込み権限を与えておきます

sudo mkdir -p /mnt/world
sudo chmod u+w /mnt/world

5.コンテナビルド

ラズパイ5のDokcerfile のあるパスに移動し、下記コマンドでコンテナをビルドします

podman build -t minecraft/fabric-minecraft:latest .

6.コンテナ起動

ラズパイ5で下記コマンドでビルドしたコンテナを起動します

podman run -d -p 25565:25565 --volume=/mnt/world:/root/world --name minecraft localhost/minecraft/fabric-minecraft:latest

Minecraftクライアントを起動し、サーバーにアクセスできればひとまずOKです

7.自動起動&定期バックアップ

下記コマンドで自動起動設定します

podman generate systemd --new --files --name minecraft

sudo cp container-minecraft.service /etc/systemd/system

systemctl daemon-reload
systemctl enable container-minecraft.service

定期バックアップデータを保存するフォルダを下記コマンドで作っておきます

sudo mkdir -p /mnt/backups
sudo chmod u+w /mnt/backups

下記バックアップスクリプトを /usr/local/bin/backup_world.sh に保存します

#!/bin/bash

## Manage backup files
cd /mnt/backups
while [ $(ls /mnt/backups | wc -l) -gt 12 ]
do
  rm $(ls /mnt/backups | head -1)
done

## Backup
tar -czf /mnt/backups/world_$(date "+%Y-%m-%d-%H-%M").tar.gz /mnt/world

cron に登録します

crontab -e
*/5 * * * * /usr/local/bin/backup_world.sh > /dev/null 2>&1

おわり

あとはラズパイ5上でマルチプレイ時にどの程度サクサク動くか、描画に問題がないかなどは遊びながら確かめる必要がありそうです。

ぜひみなさまもMOD鯖立てて End Remastered で遊んでみてください。

いいなと思ったら応援しよう!

この記事が参加している募集