search
LoginSignup
1

More than 1 year has passed since last update.

posted at

updated at

Organization

そうだ Minecraftサーバー 作ろう (Oracle Linux + Spigot + Geyser)

前回の投稿で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.txt
:
eula=true

メモリ使用量をサーバーのスペックに合わせる

# vi /opt/minecraft/survival/server.conf
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
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
config.yml
  :
  auth-type: floodgate
  :

Bedrockユーザーの名前のプレフィックスを変更
(*だと一部のプラグインでうまく処理できないようなのでASCII文字に変更)

# vi /opt/minecraft/survival/plugins/floodgate-bukkit/config.yml
config.yml
  :
username-prefix: "BE_"

  :

Spigotを再起動

# systemctl restart minecraft@survival

まだJava版の動作確認ができていないけど、こんな感じで動くんじゃなかろうか!?

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
What you can do with signing up
1