【CentOS8】bedrock_serverをインストール

Bedrock_server
記事内に広告が含まれています。

minimalインストールしたCentOS8にbedrock_server(統合版)をインストールする方法です。(SELinuxは無効化しています)

CentOS7環境へのインストールと比べると、あまりにも簡単で拍子抜けしました。

CentOS7環境でのbedrock_serverのインストール方法は下記のページとなります。

【CentOS7】bedrock_serverをインストール

2019.11.18日現在「Nitendo Switch」および「Xbox One」からは「bedrock_server」に接続することは出来なくて、「Android」「iOS」「Windows 10 Edition」(Java Editionじゃないほう)からは接続できるようです。

※「iOS」と「Windows 10 Edition」からは実際に接続できることを確認済み

事前準備

「bedrock_server」をインストールする前の事前準備です。

unzipインストール

「bedrock_server」は「bedrock_server.zip」といったようにzipで圧縮されているので、ダウンロードしてきたものを解凍するために必要な「unzip」をインストールします。

# dnf -y install unzip

tmuxインストール

今回の手順では端末多重化ソフトである「tmux」を使用して、「bedrock_server」を動作させていくためインストールを行います。

# dnf -y install tmux

ユーザ作成

「bedrock_server」を動作させるためのユーザ「bedrock」を作成します。

# adduser bedrock
# passwd bedrock
ユーザー bedrock のパスワードを変更。
新しいパスワード:
新しいパスワードを再入力してください:
passwd: すべての認証トークンが正しく更新できました。

ユーザ名には特に決まりはないので、適当に好きなユーザを作成していただいても問題ありません。

bedrock_server用ポート(19132/udp)開放

「bedrock_server」で使用するUDPの19132番ポートを開放します。

# firewall-cmd --permanent --add-port=19132/udp
success
# firewall-cmd --reload
success

bedrock_serverインストール

Minecraftの公式サイトからbedrock_serverをダウンロードします。

301 Moved Permanently

「マインクラフト エンドユーザーライセンス規約およびプライバシーポリシーに同意します。」にチェックを入れると「ダウンロード」ボタンが表示されるので、ボタンを右クリックし「リンクのアドレスをコピー」を選択し、ダウンロード用のURIをコピーしてください。

「su」コマンドで「bedrcok_server」用のユーザになり、インストールするディレクトリを作成し、そこにzipファイルをダウンロードして「unzip」で解凍するという作業を行います。

今回は「bedrock_server」というディレクトリを作成して、そこにダウンロードしていきます。

# su - bedrock
$ mkdir bedrock_server
$ cd bedrock_server
$ curl -L -O  https://minecraft.azureedge.net/bin-linux/bedrock-server-1.13.2.0.zip
$ unzip bedrock-server-1.13.2.0.zip

解凍したデータの中に「bedrock_server_how_to.html」という、説明書があるので内容を確認しておきましょう。

起動

「bedrock_server」のダウンロードと解凍が完了しましたら、実際に起動をして問題なく動作するのかを確認していきます。

起動方法は、「bedrock_server_how_to.html」にある通り「LD_LIBRARY_PATH=. ./bedrock_server」と実行することで「bedrock_server」を起動させることが出来ます。

$ LD_LIBRARY_PATH=. ./bedrock_server
NO LOG FILE! - setting up server logging...
[2019-11-15 01:21:33 INFO] Starting Server
[2019-11-15 01:21:33 INFO] Version 1.13.2.0
[2019-11-15 01:21:33 INFO] Session ID 3bd46ce5-2706-4dc5-8770-311d6e6488d6
[2019-11-15 01:21:33 INFO] Level Name: Bedrock level
[2019-11-15 01:21:33 INFO] Game mode: 0 Survival
[2019-11-15 01:21:33 INFO] Difficulty: 1 EASY
[2019-11-15 01:21:35 INFO] IPv4 supported, port: 19132
[2019-11-15 01:21:35 INFO] IPv6 supported, port: 19133
[2019-11-15 01:21:35 INFO] IPv4 supported, port: 33795
[2019-11-15 01:21:35 INFO] IPv6 supported, port: 51086
[2019-11-15 01:21:36 INFO] Server started.

正常に起動できたら「Server started.」と表示されます。

動作確認

minecraft(bedrock版)のクライアントから接続できるか確認してください。

bedrock_serverの停止

接続できることが確認できたら「stop」と入力して一度「bedrock_server」を停止させます。

[2019-11-15 01:25:36 INFO] Player connected: tamohiko, xuid: xxxxxxxxxxxxxxxx
[2019-11-15 01:26:27 INFO] Player disconnected: tamohiko, xuid: xxxxxxxxxxxxxxxx
stop   <---- stopと入力
Quit correctly

自動起動設定

「bedrock_server」の自動起動用設定を行っていきます。

メンテナンス用のスクリプト作成

「bedrock_server」の起動や停止を行うためのスクリプトを作成していきます。

今回は起動と停止以外にもバックアップ機能もつけてあります。

$ vi bedrock_script.sh

スクリプト内で設定している変数の説明です。

環境にあわせて変更する箇所があれば適宜変更してください。

変数 設定内容
USERNAME bedrock_server実行ユーザ設定
SESSION_NAME tumxのセッションに指定する名前を設定
BEDROCK_PATH bedrock_serverがインストールされているディレクトリを設定
LD_LIBRARY_PATH LD_LIBRARY_PATHを設定
SERVICE 実行するbedrock_serverを設定
BK_DIR バックアップしたデータを保管するディレクトリ
BK_TIME バックアップを取得した日時
FULL_BK_NAME 完全バックアップで取得したデータにつける名前
SIMPLE_BK_NAME 簡易バックアップで取得したデータにつける名前
BK_FILE 簡易バックアップ対象データ
BK_GEN バックアップしたデータの保管数

作成するスクリプトは下記のようになります。

[shell]
#!/bin/bash
#
# bedrock_server start/stop/backup script
#

# bedrock_server 実行ユーザ
USERNAME='bedrock'

# session名
SESSION_NAME='bedrock'

# bedrock_serverインストールディレクトリ
BEDROCK_PATH='/home/bedrock/bedrock_server'

# LD_LIBRARY_PATH設定
LD_LIBRARY_PATH="$BEDROCK_PATH"

# 実行する bedrock_server
SERVICE="$BEDROCK_PATH/bedrock_server"

## バックアップ用設定
# バックアップ格納ディレクトリ
BK_DIR="/home/$USERNAME/bedrock_backup"

# バックアップ取得時間
BK_TIME=`date +%Y%m%d-%H%M%S`

# 完全バックアップデータ名
FULL_BK_NAME="$BK_DIR/bedrock_full_backup_${BK_TIME}.tar.gz"

# 簡易パックアップデータ名
SIMPLE_BK_NAME="$BK_DIR/bedrock_simple_backup_${BK_TIME}.tar"

# 簡易バックアップ対象データ
BK_FILE="$BEDROCK_PATH/worlds \
$BEDROCK_PATH/valid_known_packs.json \
$BEDROCK_PATH/permissions.json \
$BEDROCK_PATH/server.properties \
$BEDROCK_PATH/whitelist.json"

# バックアップデータ保存数
BK_GEN="3"

cd $BEDROCK_PATH

if [ ! -d $BK_DIR ]; then
mkdir $BK_DIR
fi

ME=`whoami`

if [ $ME != $USERNAME ]; then
echo "Please run the $USERNAME user."
exit
fi

# 開始処理
start() {
if pgrep -u $USERNAME -f $SERVICE > /dev/null; then
echo "$SERVICE is already running!"
else
echo "Starting $SERVICE..."
tmux new-session -d -s $SESSION_NAME
tmux send-keys -t $SESSION_NAME:0 "LD_LIBRARY_PATH=$LD_LIBRARY_PATH $SERVICE" C-m
fi
}

# 停止処理
stop() {
if pgrep -u $USERNAME -f $SERVICE > /dev/null; then
echo "Stopping $SERVICE"
tmux send-keys -t $SESSION_NAME:0 "say SERVER SHUTTING DOWN IN 10 SECONDS. Saving map..." C-m
sleep 10
tmux send-keys -t $SESSION_NAME:0 "stop" C-m
sleep 10
echo "Stopped bedrock_server"
else
echo "$SERVICE is not running!"
exit
fi
while :
do
if
pgrep -u $USERNAME -f $SERVICE > /dev/null; then
echo "Stopping $SERVICE"
sleep 10
else
tmux kill-session -t $SESSION_NAME
echo "Stoped $SERVICE"
break
fi
done
}

# 簡易バックアップ処理
s_backup() {
if pgrep -u $USERNAME -f $SERVICE > /dev/null; then
echo "Backup start minecraft data..."
tmux send-keys -t $SESSION_NAME:0 "save hold" C-m
sleep 10
tmux send-keys -t $SESSION_NAME:0 "save query " C-m
tar cfv $SIMPLE_BK_NAME $BK_FILE
sleep 10
tmux send-keys -t $SESSION_NAME:0 "save resume" C-m
echo "bedrock_server backup compleate!"
gzip -f $SIMPLE_BK_NAME
find $BK_DIR -name "bedrock_simple_backup_*.tar.gz" -type f -mtime +$BK_GEN -exec rm {} \;
else
echo "Backup start ..."
gzip -f $HOUR_BK_NAME
find $BK_DIR -name "bedrock_simple_backup_*.tar.gz" -type f -mtime +$BK_GEN -exec rm {} \;
fi
}

# 完全バックアップ処理
f_backup() {
if pgrep -u $USERNAME -f $SERVICE > /dev/null; then
echo "Full backup start minecraft data..."
tmux send-keys -t $SESSION_NAME:0 "say SERVER SHUTTING DOWN IN 10 SECONDS. Saving map..." C-m
sleep 10
tmux send-keys -t $SESSION_NAME:0 "save-all" C-m
tmux send-keys -t $SESSION_NAME:0 "stop" C-m
while :
do
if
pgrep -u $USERNAME -f $SERVICE > /dev/null; then
echo "Stopping $SERVICE"
sleep 10
else
echo "Stopped bedrock_server"
echo "Full Backup start ..."
tar cfvz $FULL_BK_NAME $BEDROCK_PATH
echo "Full Backup compleate!"
find $BK_DIR -name "bedrock_full_backup_*.tar.gz" -type f -mtime +$BK_GEN -exec rm {} \;
break
fi
done
echo "Starting $SERVICE..."
tmux send-keys -t $SESSION_NAME:0 "$SERVICE" C-m
else
echo "Full Backup start ..."
tar cfvz $FULL_BK_NAME $BEDROCK_PATH
echo "Full Backup compleate!"
find $BK_DIR -name "bedrock_full_backup_*.tar.gz" -type f -mtime +$BK_GEN -exec rm {} \;
fi
}

# 起動状態確認処理
status() {
if pgrep -u $USERNAME -f $SERVICE > /dev/null; then
echo "$SERVICE is already running!"
exit
else
echo "$SERVICE is not running!"
exit
fi
}

case "$1" in
start)
start
;;
stop)
stop
;;
s_backup)
s_backup
;;
f_backup)
f_backup
;;
status)
status
;;
*)
echo $"Usage: $0 {start|stop|s_backup|f_backup|status}"
esac
[/shell]

使用方法

スクリプトを実行する際に「start」「stop」「s_backup」「f_backup」「status」を引数として指定します。

bedrock_script.sh 引数

それぞれの引数説明です。

引数 動作 説明
start サーバ起動 bedrock_serverを起動します
stop サーバ停止 bedrock_serverを停止します
s_backup 簡易バックアップ サーバを起動したままバックアップを実行するため、BK_FILEで指定したデータのみのバックアップとなります
f_backup フルバックアップ bedrock_serverを停止後、インストールディレクトリ丸ごとバックアップをとります
status 起動状況確認 bedrock_serverの起動状況を確認します

パーミッション設定

bedrock_server用のユーザのみが実行できるように、スクリプトのパーミッションを「744」に設定します。

$ chmod 744 bedrock_script.sh

スクリプト動作確認

作成したスクリプトで「bedrock_server」の起動および停止の動作確認を行っていきます。

起動確認

スクリプトを実行して、正常に「bedrock_server」が起動するか確認していきます。

スクリプトを実行すると「SESSION_NAME」で設定した名前で「tmux」のセッションが作成され、そこで「bedrock_server」が起動されます。

$ sh -x ./bedrock_script.sh start

「-x」オプションをつけてスクリプトを実行することで実行状況が表示されるので、正常に動作しない場合の問題切り分けに役立ててください。

「tmux」のセッションが作成されているかは「tmux ls」コマンドで確認することができます。

$ tmux ls
bedrock: 1 windows (created Sun Nov 17 09:07:56 2019) [80x24]

このように「bedrock」セッションが作成されていることが分かります。

仮想端末へ接続(Attach)

「tmux a」と実行することでセッションに接続(Attach)することができるので、正常に「bedrock_server」が起動しているかどうか確認してください。

$ tmux a

「Server started」と表示されて、コマンド入力待ちになっていれば正常に起動されています。

LD_LIBRARY_PATH=/home/bedrock/bedrock_server /home/bedrock/bedrock_server/bedrock_server
$ LD_LIBRARY_PATH=/home/bedrock/bedrock_server /home/bedrock/bedrock_server/bedrock_server
NO LOG FILE! - setting up server logging...
[2019-11-17 09:07:56 INFO] Starting Server
[2019-11-17 09:07:56 INFO] Version 1.13.2.0
[2019-11-17 09:07:56 INFO] Session ID 58ab7ea3-2894-40d9-9b59-ae1a84c9eaa3
[2019-11-17 09:07:56 INFO] Level Name: Bedrock level
[2019-11-17 09:07:56 INFO] Game mode: 0 Survival
[2019-11-17 09:07:56 INFO] Difficulty: 1 EASY
[2019-11-17 09:07:59 INFO] IPv4 supported, port: 19132
[2019-11-17 09:07:59 INFO] IPv6 supported, port: 19133
[2019-11-17 09:07:59 INFO] IPv4 supported, port: 38895
[2019-11-17 09:07:59 INFO] IPv6 supported, port: 35883
[2019-11-17 09:08:00 INFO] Server started.
仮想端末から抜ける(Detach)

正常に起動していることが確認できましたら、「Ctrl」+「b」を押下した後に「d」を押下して現在接続しているセッションから抜けて(Detach)ください。

セッションから抜ける(Detach)と[detached]と表示されます。

$ tmux a
[detached (from session bedrock)]  <--- セッションから切断後に表示される

停止確認

正常に起動することが確認できましたら、停止機能の動作確認を行っていきます。

$ sh -x ./bedrock_script.sh stop

正常に停止すると起動時に作成されたセッションがなくなります。

$ tmux ls
no server running on /tmp/tmux-1001/default

「no server running」と表示されているので、何もセッションが起動していないことが分かります。

systemd登録用ファイル作成

自動起動の設定を「systemd」に登録するためのファイル「etc/systemd/system/bedrock_server.service」を作成します。

ファイルの作成は「su」コマンドでrootユーザになって行っていきます。

$ su -
# vi /etc/systemd/system/bedrock_server.service

設定説明

「bedrock_server」を動作させるユーザやスクリプトのパスを変更している場合は、下記の部分を適宜読み替えて設定ファイルを作成してください。

変数 説明
User bedrock_server実行ユーザ
ExecStart bedrock_server 起動コマンド
ExecStop bedrock_server 停止コマンド

作成するファイルの内容化下記の通りとなります。

[Unit]
Description=Minecraft Bedrock Server
After=network.target local-fs.target

[Service]
Type=forking
User=bedrock
ExecStart=/home/bedrock/bedrock_server/bedrock_script.sh start
ExecStop=/home/bedrock/bedrock_server/bedrock_script.sh stop

[Install]
WantedBy=multi-user.target

自動起動設定

systemd登録用のファイルの作成が終わりましたら、「systemctl enable」コマンドで自動起動の登録を行います。

# systemctl enable bedrock_server.service

動作確認

自動起動の設定が終わりましたら、実際にサーバを再起動して「bedrock_server」が自動的に起動してくるか確認をしてください。

問題なく起動してくればインストール作業は完了となります。

自動起動しない場合

自動起動がうまくいかない場合は「systemctl status bedrock_server」とかでログを表示させてみると、上手く動作しない原因がわかるかもしれません。

コメント

タイトルとURLをコピーしました