2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

minecraftサーバー(Spigot)備忘録

Last updated at Posted at 2021-08-09

はじめに

minecraftサーバーを長らく運用しているものの、いろいろなことを常に覚えているわけではないので、備忘録がてら書いていこうと思います。
まずは基本的な構築について記して、なにかあれば追記したいと思います。

環境

検証環境も含めて色々な環境で運用していましたが、2021年8月現在運用中の環境の2台のみを記載します。

サーバー1

  • Web ARENA Indigo 8GB 6vCPU 160GBインスタンス
  • CentOS Linux release 7.9.2009.
  • spigot 1.16.2

image.png

  • 導入Plugin
プラグイン名 簡単な説明
Vault 前提プラグイン
InvSort チェストやインベントリをソートしてくれる
EnchantableBlocks かまどにエンチャントできる
SetHomes ホームを設定してテレポートできる
dynmap ブラウザでマップ表示する
WorldEdit ブロック設置、消去、コピーなどのエディット機能
DiscordSRV サーバーの状態などをディスコードBOTに通知させる
WorldGuard ブロックを保護する
CoreProtect ログ記録プラグイン

サーバー2(検証用)

  • 自作PC
  • Windows Server 2019 Standerd(使用版) or Ubuntu(必要なときに検証したいOSを入れて検証しています。)
  • Spigot 1.17.1

image.png

  • 導入Plugin
プラグイン名 説明
GoTo テレポートするプラグイン
floodgate 統合版(BE版)のアカウントでログインできるようにする
Vault 前提プラグイン
ChestSort チェストをソートしてくれる
EnchantableBlocks かまどにエンチャントできる
dynmap ブラウザでマップ表示する
WorldEdit ブロック設置、消去、コピーなどのエディット機能
Geyser-Spigot 統合版(BE版)クライアントからJava版サーバーに通信をさせる
WorldGuard ブロックを保護する
CoreProtect ログ記録プラグイン

その他検証用の仮想環境もありますが、しょっちゅう消したり作ったりするので割愛します。

構築について

  • 基本的にLinux(Ubuntu)での構築を考えます。

1.17よりJava16が必要になったのでインストールします。

sudo apt install openjdk-16-jdk
  • 以下のコマンドでバージョンを確認できます。
java -version

Spigotをビルドします。

  • ビルドをするためgitをインストールします。
sudo apt install git

BuildToolsをダウンロードして実行させます。

上記URLよりダウンロードします。wgetでとってくれば良いと思います。

  • BuildTools.jsをダウンロードしたら以下のコマンドで実行します。
java -jar BuildTools.jar --rev latest

時間がかかりますが終了すると「spigot-1.17.1.jar」が生成されるので、マイクラサーバーを展開したいディレクトリに移動します。

Spigotの起動

マイクラサーバーのディレクトリに移動し、基本的に以下のコマンドで実行できます。

java -jar spigot-1.17.1.jar

初回実行時にエラーになりますが、eula.txtが生成されるので、eula=Falseをeula=trueにして保存します。
その後再度実行させます。

基本的には以上でSpigotの起動はできます。

バックグラウンドで実行させる

このままだと起動はするのですが、フォアグラウンドのためめっちゃ使いづらいです。
順当にバックグラウンドにしてしまうとサーバーから直接コマンドでの操作ができません。
そのため、私はscreenを使用しています。
バックグラウンドでシステム起動と同時に実行させ、必要なときにサーバー画面に移れるようにしています。
以下のコマンドでインストールします。

sudo apt install screen

インストールさたか念の為確認します。

screen --version
Screen version 4.01.00devel (GNU) 2-May-06

軽いシェルスクリプトを書きます。

start.sh
screen -AmdS mc java -Xms5120M -Xmx5120M -server -jar spigot-x.xx.x.jar

crontabに起動時にシェルスクリプトを読み込むように書きます。

@reboot sh /home/minecraft/server/spigot-x.xx.x/start.sh

もしも手動で停止させた場合、起動するときはstart.shを実行するようにしています。

Screenの簡単な使い方

スクリーンを表示させる

Screen -r <スクリーン名>

切り替えたスクリーンから前のスクリーンに戻る

"Ctrl+A" を押したあと "D" で直前のスクリーンに戻る

バックアップについて

前は自動でバックアップをするプラグインがあったのですが、1.16以降をサポートしなくなって動作しなくなりました。
いまは不定期に手動でバックアップをかけています。その手順を書いておきます。

スクリプトを作ります。
私はこちらのページを参考にスクリプトを修正しました。

mcserver-backup.sh
# !/bin/bash
SERVICE='spigot-x.xx.x.jar'
OPTION='-p 25565'
USERNAME='minecraft'
SCNAME='mc'
MC_PATH='/home/minecraft/minecraft'
MC_DIRECTORY='spigot'
BK_PATH='/home/minecraft/minecraft/backup'

BK_TIME=`date +%Y%m%d-%H%M%S`
BK_NAME="$BK_PATH/mc_backup_full_${BK_TIME}.tar.bz2"
BK_GEN="3"

XMX="5120M"
XMS="5120M"

cd $MC_PATH

ME=`whoami`

if [ $ME == $USERNAME ] ; then
    if pgrep -u $USERNAME -f $SERVICE > /dev/null
    then
        echo "Full backup start minecraft data..."
        screen -p 0 -S $SCNAME -X eval 'stuff "say まもなくサーバーのバックアップを開始します。1分後にサーバーが停止します。"\015'
        sleep 30
        screen -p 0 -S $SCNAME -X eval 'stuff "say まもなくサーバーのバックアップを開始します。30秒後にサーバーが停止します。"\015'
        sleep 20
        screen -p 0 -S $SCNAME -X eval 'stuff "say まもなくサーバーのバックアップを開始します。10秒後にサーバーが停止します。"\015'
        sleep 10
        screen -p 0 -S $SCNAME -X eval 'stuff "save-all"\015'
        screen -p 0 -S $SCNAME -X eval 'stuff "stop"\015'
        sleep 40
        echo "Stopped minecraft_server"
        echo "Full Backup start ..."
        tar -jcvf $BK_NAME $MC_DIRECTORY
        sleep 10
        echo "Full Backup compleate!"
        # 三日以前のファイルは削除する
        #find $BK_PATH -name "mc_backup_full*.tar.bz2" -type f -mtime +$BK_GEN -exec rm {} \;
        echo "Starting $SERVICE..."
        #screen -AmdS $SCNAME java -Xmx$XMX -Xms$XMS -jar $SERVICE nogui
        screen -AmdS $SCNAME java -Xms$XMX -Xmx$XMS -XX:+UseG1GC -XX:MaxGCPauseMillis=50 -server -jar $SERVICE $OPTION
    else
        echo "$SERVICE was not runnning."
        echo "Full Backup start ..."
        tar -jcvf $BK_NAME $MC_DIRECTORY
        sleep 10
        echo "Full Backup compleate!"
        # 三日以前のファイルは削除する
        #find $BK_PATH -name "mc_backup_full*.tar.bz2" -type f -mtime +$BK_GEN -exec rm {} \;
        echo "Starting $SERVICE..."
        #screen -AmdS $SCNAME java -Xmx$XMX -Xms$XMS -jar $SERVICE nogui
        screen -AmdS $SCNAME java -Xms$XMX -Xmx$XMS -XX:+UseG1GC -XX:MaxGCPauseMillis=50 -server -jar $SERVICE $OPTION
    fi
else
    echo "Please run the $USERNAME user."
fi

bzip2でフルバックアップしています。おおよそ10GBぐらいになります。
SpigotのJava起動パラメーター(-XX:+UseG1GCなど)は意味がわかっていません。正直なくても動くので"-Xms$XMX -Xmx$XMS"だけ指定してあげればいいのかな・・?とは思っています。

  1. コミュニティなどがあればそこにメンテの旨を書き込みます。
  2. 用意したスクリプトを実行します。
  3. 自動で終了してバックアップされ、立ち上がります。(超長い)
  4. 手動で外部のレンタルサーバーへsftpでアップロードします。

古いバックアップは手動で削除します。サーバー内5つぐらい保持していて、それ以上は消しています。

リソースパックについて

Server.propatiesに記載するリソースパックURLとSHA1について

resource-pack=(ここにリソースパックのURLを入れる)
resource-pack-sha1=(SHA1のハッシュ値を入れる)

ハッシュ値とは?

ファイルの同一性を確認するための値です。
Windowsの場合コマンドプロンプトで計算可能

certutil -hashfile (リソースパック)
2
1
0

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
  3. You can use dark theme
What you can do with signing up
2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?