前回の投稿でBedrock Serverを立ててみたのですが、よく考えたらMacの人が参加できないなぁと思ったのでJava版サーバーに切り替えて、GeyserでBedrock版をカバーすることにしました。
遊びで気軽に考えていたのになんだか壮大になってしまった...
環境
- 会社のESXi上に仮想マシン作成
- CPU: 4コア, メモリ: 8GB, HDD: 50GB
- Oracle Linux 8.3
(慣れたRHEL系で。CentOS 8 が先行き不透明なため) - Spigot 1.16
- Geyser + Floodgate
Linux の準備
OSのインストール方法はウェブ上にいっぱいあるので割愛
- SSHは鍵認証のみに
- システム最新化
- アップデートの自動化
- ファイアウォールの設定
- 25565/tcp
- 19132/udp
- 19133/udp
あたりをやっておきましょう。
JDKのインストール
# dnf -y install java-11-openjdk-headless
$ java --version
openjdk 11.0.9.1 2020-11-04 LTS
OpenJDK Runtime Environment 18.9 (build 11.0.9.1+1-LTS)
OpenJDK 64-Bit Server VM 18.9 (build 11.0.9.1+1-LTS, 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をビルド
# su - minecraft
$ mkdir survival
$ cd survival
$ wget https://hub.spigotmc.org/jenkins/job/BuildTools/lastSuccessfulBuild/artifact/target/BuildTools.jar
$ java -jar BuildTools.jar
EULAに同意
$ java -jar spigot-1.16.4.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
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
GeyserのFloodgate wikiのDownloadリンクを選択、リンク先ページの「最新成功ビルドの成果物」から「floodgate-bukkit.jar」をダウンロード
# su - minecraft
$ cd /opt/minecraft/survival/plugins/
$ wget https://ci.opencollab.dev/job/GeyserMC/job/Floodgate/job/master/lastSuccessfulBuild/artifact/bukkit/target/floodgate-bukkit.jar
Spigotを再起動
# systemctl restart minecraft@survival
BedrockユーザーがXbox Liveアカウントのみで接続できるようにする
# vi /opt/minecraft/survival/plugins/Geyser-Spigot/config.yml
:
auth-type: floodgate
:
Bedrockユーザーの名前のプレフィックスを変更
(*だと一部のプラグインでうまく処理できないようなのでASCII文字に変更)
# vi /opt/minecraft/survival/plugins/floodgate-bukkit/config.yml
:
username-prefix: "BE_"
:
Spigotを再起動
# systemctl restart minecraft@survival
まだJava版の動作確認ができていないけど、こんな感じで動くんじゃなかろうか!?