昨年の投稿でMinecraftサーバーを立ててみたのですが、結局あまり使われず(笑)、ほぼ僕がたまにログインして遊ぶくらいのサーバーになってしまっています。
Minecraft 1.18 がリリースされたのでアップデートを行ってみたのですが、JavaやFloodgateのバージョンが少し変わったので、昨年の記事をリライトしてみました。
環境
- CPU: 4コア, メモリ: 8GB, HDD: 50GB
- Oracle Linux 8.5
- Spigot
- Geyser
- Floodgate
Linux の準備
OSのインストール方法はウェブ上にいっぱいあるので割愛
- SSHは鍵認証のみに
- システム最新化
- アップデートの自動化
- ファイアウォールの設定
- 25565/tcp
- 19132/udp
- 19133/udp
あたりをやっておきましょう。
JDKのインストール
# dnf -y install java-17-openjdk-headless
$ java --version
openjdk 17.0.1 2021-10-19
OpenJDK Runtime Environment 21.9 (build 17.0.1+12)
OpenJDK 64-Bit Server VM 21.9 (build 17.0.1+12, mixed mode, sharing)
Spigotのインストール
あとで必要になるので、先にサーバー実行ユーザーを作成を作成しておきましょう。
# mkdir /opt/minecraft
# groupadd minecraft
# useradd --system --shell /bin/bash --home /opt/minecraft -g minecraft minecraft
# chown minecraft:minecraft /opt/minecraft
SpigotのWikiを参考にビルドします。
ビルドに必要なアプリケーションをインストールしておきます。
# dnf -y install git wget
Spigotをビルド
(Spigotの安定版は1.17のようなので、1.18をビルドしたい場合は --rev パラメータでバージョンを指定します)
# su - minecraft
$ mkdir survival
$ cd survival
$ wget https://hub.spigotmc.org/jenkins/job/BuildTools/lastSuccessfulBuild/artifact/target/BuildTools.jar
$ java -jar BuildTools.jar --rev 1.18
EULAに同意
$ java -jar spigot-1.18.jar
$ vi eula.txt
eula=false を eula=true へ変更
:
eula=true
メモリ使用量をサーバーのスペックに合わせておきます。
# vi /opt/minecraft/survival/server.conf
MCMINMEM=512M
MCMAXMEM=7168M
これでとりあえず最低限起動する状態になりました。
続いて、Tutorials/Server startup scriptを参考に起動スクリプトを作成します。
Spigotを仮想端末内で実行するために screen をインストールします。
# dnf -y install https://dl.fedoraproject.org/pub/epel/epel-release-latest-8.noarch.rpm
# dnf -y install screen
systemdスクリプトをダウンロード
# wget -O /etc/systemd/system/minecraft@.service https://raw.githubusercontent.com/agowa338/MinecraftSystemdUnit/master/minecraft%40.service
RHEL8系は /run/screen のパーミッションを変更しないといけないらしいので、ダウンロードしたスクリプトを修正します。
# vi /etc/systemd/system/minecraft@.service
:
# Uncomment this to fix screen on RHEL 8
ExecStartPre=+/bin/sh -c 'chmod 777 /run/screen'
:
自動実行を有効化します。
# systemctl enable minecraft@survival
ひとまずここまでの動作確認で一度起動してみましょう。
# systemctl enable minecraft@survival
# systemctl stop minecraft@survival
/opt/minecraft/survival/logs/latest.log を確認してエラーになっていないか確認しましょう。
Geyser・Floodgateのインストール
GeyserMCのサイトのDownloadボタンを選択、リンク先ページの「最新成功ビルドの成果物」から「Geyser-Spigot.jar」をダウンロードします。
# su - minecraft
$ cd /opt/minecraft/survival/plugins/
$ wget https://ci.opencollab.dev//job/GeyserMC/job/Geyser/job/master/lastSuccessfulBuild/artifact/bootstrap/spigot/target/Geyser-Spigot.jar
FloodgateのGithub Wikiの「Downloads are available here.」リンクを選択、リンク先ページの「最新成功ビルドの成果物」から「floodgate-spigot.jar」をダウンロードします。
# su - minecraft
$ cd /opt/minecraft/survival/plugins/
$ wget https://ci.opencollab.dev/job/GeyserMC/job/Floodgate/job/master/lastSuccessfulBuild/artifact/spigot/target/floodgate-spigot.jar
一度サーバーを起動してプラグインのデフォルト設定ファイルを生成させます。
# systemctl start minecraft@survival
BedrockユーザーがXbox Liveアカウントのみで接続できるように設定します。
# vi /opt/minecraft/survival/plugins/Geyser-Spigot/config.yml
:
auth-type: floodgate
:
Spigotを再起動して準備完了です。
# systemctl restart minecraft@survival
JavaエディションBedrockエディションから接続できるか試してみましょう。
Floodgateがバージョン2になってから、Bedrockエディションのユーザースキンが表示されるようになったようなのですが、自分が軽く試してみた限りは表示されないようです。設定の問題かもしれませんが、スキンアップロードで時間がかかるというようなことも記載されているので、少し様子見でしょうかね。