🎮

ラズパイでMinecraft1.7.10のMODサーバーを建てるの巻

2024/01/13に公開

友達とマルチするためにラズパイでマイクラのサーバーを建てるとき、毎回忘れて一から調べ直しているのでメモも兼ねて。

環境

  • Raspberry Pi 4 Model B / 4GB
  • Raspberry Pi OS Lite 64bit
  • Minecraft 1.7.10 (Forge 10.13.4.1614)

OSをSDカードに焼き、SSHでログインできる状態にしておきます。sudo apt updatesudo apt upgradeも実施しておきましょう。

Javaのインストール☕

前はすんなりいったはずなのですがここで滅茶苦茶苦戦しました。

今回建てたいサーバーはMinecraft 1.7.10のサーバーなので、対応しているJavaバージョンであるJava8をインストールしていきます。

$ sudo apt install openjdk-8-jdk

ですが、

E: Unable to locate package openjdk-8-jdk

となりインストールできません…

リポジトリの追加

どうしようもないので、aptにミラーのリポジトリを追加します。

$ sudo apt-add-repository 'deb http://ftp.de.debian.org/debian sid main'

謎のPythonエラー

今度こそ!と思ってapt-add-repositoryすると今度は以下のようなエラーが出てしまいました。どうやら内部で使われているPythonのエラーの様です。

エラー内容を表示
Traceback (most recent call last):
  File "/usr/bin/add-apt-repository", line 362, in <module>
    sys.exit(0 if addaptrepo.main() else 1)
                  ^^^^^^^^^^^^^^^^^
  File "/usr/bin/add-apt-repository", line 345, in main
    shortcut = handler(source, **shortcut_params)
               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib/python3/dist-packages/softwareproperties/shortcuts.py", line 40, in shortcut_handler
    return handler(shortcut, **kwargs)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib/python3/dist-packages/softwareproperties/ppa.py", line 86, in __init__
    if self.lpppa.publish_debug_symbols:
       ^^^^^^^^^^
  File "/usr/lib/python3/dist-packages/softwareproperties/ppa.py", line 126, in lpppa
    self._lpppa = self.lpteam.getPPAByName(name=self.ppaname)
                  ^^^^^^^^^^^
  File "/usr/lib/python3/dist-packages/softwareproperties/ppa.py", line 113, in lpteam
    self._lpteam = self.lp.people(self.teamname)
                   ^^^^^^^^^^^^^^
AttributeError: 'NoneType' object has no attribute 'people'

最終的に、python3-launchpadlibをインストールすることで解決できました。

$ sudo apt install python3-launchpadlib

Forgeサーバーをインストール🎮

いよいよゲームサーバーのインストールです。Forge公式サイトから1.7.10のInstallerをダウンロードします。

AdFocのSKIPボタンのURLをコピーしてラズパイ上でwgetしてもいいですし、一度PCにダウンロードしてscpで転送してもOKです。

今後別バージョンを運用することも考えて、バージョン用にディレクトリを作ります。

$ mkdir forge_1.7.10

Installerはこのディレクトリの中に入れましょう。
サーバーをインストールします。

$ java -jar forge-1.7.10-10.13.4.1614-1.7.10-installer.jar nogui --in
stallServer

インストールが問題なく完了したら、Installerは削除してしまって大丈夫です。

$ rm forge-1.7.10-10.13.4.1614-1.7.10-installer.jar

一度問題なく起動するか確認します。一回目はEULAに同意していないため自動で終了します。生成されたeula.txtを編集してeula=trueにして上書きしてもう一度起動させましょう。

$ java -Xms3G -Xmx3G -jar forge-1.7.10-10.13.4.1614-1.7.10-universal.jar nogui

MODの導入🧩

modsフォルダにwgetscpで入れればOKです。

ファイアウォールの設定🧱

外部に公開することになるため、ファイアウォールを設定しておきます。
次のコマンドでインストールします。

$ sudo apt install ufw

次のコマンドを順番に入力して以下のことを設定します。192.168.xx.0/24xx部分は環境に応じて変更してください。
設定を間違えるとSSHでアクセスできなくなり、モニターをつなぐ羽目になります。(一回やらかした)

  • すべてのポートを拒否
  • 22番(SSH)は同じLAN内のみ許可
  • Minecraftのサーバーのポート25565番は許可
  • ファイアウォールを有効化
$ sudo ufw default deny
$ sudo ufw allow from 192.168.xx.0/24 to any port 22
$ sudo ufw allow 25565
$ sudo ufw enable

最後に再起動しましょう。

$ sudo reboot

log4jの脆弱性対策📢

公式が設定ファイルを配布してくれているのでダウンロードします。

$ wget https://launcher.mojang.com/v1/objects/dd2b723346a8dcd48e7f4d245f6bf09e98db9696/log4j2_17-111.xml

ポート開放🌎

仕上げにポート開放をしましょう。これをしないとLAN外からはアクセスできません。
開放するポートは25565番です。
手順はルーターによって異なるので[ルーターのメーカー] ポート開放などで検索してください。

僕の環境ではルーターを最近変えてIPv6プラスだったのですが、IPv6では(基本的に)ポート開放ができないのでIPv4のPPPoE接続に設定し直しました。まぁIPv6の恩恵はほとんど感じられていなかったので全然いいんですけど。

完成🎉

以下のコマンドでサーバーを起動しましょう!必要に応じて引数を変えてください👍

java -Xms3G -Xmx3G -Dlog4j.configurationFile=log4j2_17-111.xml -jar forge-1.7.10-10.13.4.1614-1.7.10-universal.jar nogui

お疲れ様でした✨

お好みでやることリスト

  • screenコマンドの導入
  • ワールド等の定期的なバックアップの実施
  • MyDNSなどのDDNSサービスの設定
  • server.propertiesの編集
  • サーバーアイコンの設定

参考サイト

https://stackoverflow.com/questions/77002721/unable-to-install-java-8-on-raspbian-lite
https://www.linuxquestions.org/questions/debian-26/debian-bullseye-sid-add-apt-repository-not-working-python-problem-4175720821/
https://sukiburo.jp/raspberry-pi-firewall/
https://elirlab.com/raspberrypi-setup-ssh-with-ufw/
https://qiita.com/CIB-MC/items/d2a60078fb576a41b430

Discussion