ラズパイでMinecraft1.7.10のMODサーバーを建てるの巻
友達とマルチするためにラズパイでマイクラのサーバーを建てるとき、毎回忘れて一から調べ直しているのでメモも兼ねて。
環境
- 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 update
とsudo 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
フォルダにwget
やscp
で入れればOKです。
ファイアウォールの設定🧱
外部に公開することになるため、ファイアウォールを設定しておきます。
次のコマンドでインストールします。
$ sudo apt install ufw
次のコマンドを順番に入力して以下のことを設定します。192.168.xx.0/24
のxx
部分は環境に応じて変更してください。
設定を間違えると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
の編集 - サーバーアイコンの設定
参考サイト
Discussion