Ubuntu 18.04 LTS上にSpigotMCを用いてMinecraftサーバーを構築します.
2020/11/11 記事内に原因不明の改行バグが起きています……。
環境
以下の環境でサーバー構築を行います.
項目 | 内容 |
---|---|
OS | Ubuntu 18.04 LTS |
Java | OpenJDK 8 |
Minecraft | 1.15.1 |
SpigotMC | BuildTools #105 |
今回は/srv/minecraft/
(以下minecraft/
)にサーバーを構築します.
# 管理権限が必要
sudo mkdir /srv/minecraft cd /srv/minecraft
必要物のダウンロードとインストール
JavaのインストールとSpigotMCのビルドを行います.
Javaのインストール
以下のコマンドでJDKをインストールします.
$ sudo apt install openjdk-8-jdk-headless
インストールの確認を取られた場合はY
で次へ進みます.
SpigotMCのビルド
以下のコマンドでBuildTools.jar
をダウンロードします.
$ curl -o BuildTools.jar https://hub.spigotmc.org/jenkins/job/BuildTools/105/artifact/target/BuildTools.jar
ダウンロードが終わったら以下のコマンドでビルドします.
# 前準備としてgitの設定を変更
git config --global --unset core.autocrlf
# Minecraft 1.15.1用のサーバーをビルド java -jar BuildTools.jar --rev 1.15.1
# jarのリネーム
$ mv spigot-1.15.1.jar spigot.jar
暫く待つとビルドが完了して,諸々のファイルやディレクトリとspigot-1.15.1.jar
がBuildTools.jar
と同じディレクトリに生成されます.
サーバー起動用スクリプトの作成
minecraft/start.sh
にサーバーを起動するためのスクリプトを記述します. -Xmx12G
でサーバーが使用出来るメモリの最大容量を12GBに設定しています.
#!/bin/sh
java -Xmx12G -XX:+UseConcMarkSweepGC -jar spigot.jar
以下のコマンドで先ほど作ったスクリプトを実行出来るようにします.
# 実行権限を付与
chmod +x start.sh
# 一度起動しておく ./start.sh
初回起動時はEULAへの同意を求められます. minecraft/eula.txt
を開いて最後の行のeula=false
をeula=true
に変更します.
SpigotMCのサービス化
先ほど作成したスクリプトをサービス化してPC起動時に一緒に起動するようにします.
$ cd /lib/systemd/system
$ sudo vi minecraft.service
サービス情報として以下を記述します. User=
とGroup=
は専用のユーザーやグループが用意されている場合は書き換えます.
[Unit]
Description=Minecraft Server
[Service]
Type=simple
WorkingDirectory=/srv/minecraft/
ExecStart=/srv/minecraft/start.sh
User=root
Group=root
Restart=always
[Install]
WantedBy=multi-user.target
# 現在のMinecraftサービスの状態を確認
sudo systemctl list-unit-files --type=service | grep minecraft.service
# Minecraftサービスの有効化 sudo systemctl enable minecraft
SpigotMCサービスの開始
以下のコマンドで起動と状態の確認を行います.
# 起動
sudo systemctl start minecraft
# 状態の確認 sudo systemctl status minecraft
起動している事が確認出来たら作業は完了です. デフォルトでは25565番のTCPポートにサーバーが開かれているので,接続テストを行います.
終了する場合やサービスを削除する場合は以下のコマンドで終了します.
# 終了
sudo systemctl stop minecraft
# Minecraftサービスの無効化 sudo systemctl disable minecraft
ポート開放
外部に開放する場合はポート開放が必要になります.