【Ubuntu】統合版(bedrock)Minecraftサーバのインストール方法

Ubuntu Server 20.04に統合版minecraftサーバ(bedrock_server)をインストールする手順です。

統合版(bedrockエディション)minecraft

Minecraftにはjava版と統合版(bedrock)があり、統合版(bedrock)は以下のプラットフォームで一緒に遊ぶことができます。

  • Android
  • Amazon Fire
  • iOS
  • Nintendo Switch
  • Oculus
  • PS4/5
  • Windows10版
  • Xbox

今回インストールする統合版(bedrock)Minecraftサーバに接続できるのは、下記のプラットフォームからとなります。

  • Android
  • iOS
  • Windows10版(Javaエディションじゃない方)
  • Amazon Fire 行けるかも…(未確認)

以下のプラットフォームからはプラットフォームの仕様により接続することができません。

  • Nintendo Switch
  • Xbox
  • PS4

これらのプラットフォームもいっしょに遊びたい場合は、マインクラフトマーケットプレイスから「Realms for Bedrock Edition 」または「Realms Plus」のサブスクリションを購入することで、常時稼働のオンラインサーバを作成することができます。

詳しくは下記のURLを参照してください。

https://www.minecraft.net/ja-jp/realms/bedrock

インストール作業の内容

統合版(bedrock)Minecraftサーバのインストールは下記の作業工程で行っていきます。

  • unzipインストール
  • 19132/udpポート開放
  • 動作用ユーザ作成
  • インストール
  • 起動・停止・バックアップスクリプト作成
  • 自動起動設定

インストール環境

インストールは下記の環境で行っていきます。

  • OS Ubuntu Server 20.04 LTS
  • インストールディレクトリ /opt/bedrock
  • 動作用ユーザ bedrockadmin
  • tmuxの仮想端末上で動作

動作用ユーザやインストールディレクトリは好きなもの変更可能です。

変更した場合はこれから説明する手順を適宜読み替えてください。

unzipインストール

ダウンロードする統合版(bedrock)minecraftサーバのデータはzip形式で圧縮されているので、解凍に必要なuzipをインストールします。

$ sudo apt update
$ sudo apt install unzip

19132/udpポート開放

ufwコマンドを使用して統合版(bedrock)Minecraftサーバで使用する19132/udpポートを開放します。

$ sudo ufw allow 19132/udp
$ sudo ufw reload

動作用ユーザ作成

統合版(bedrock)Minecraftサーバを動作させるためのユーザbedrockadminを作成します。

$ sudo adduser bedrockadmin
Adding user `bedrockadmin' ...
Adding new group `bedrockadmin' (1002) ...
Adding new user `bedrockadmin' (1002) with group `bedrockadmin' ...
Creating home directory `/home/bedrockadmin' ...
Copying files from `/etc/skel' ...
New password:       # パスワードを設定
Retype new password: # パスワードの再入力
passwd: password updated successfully
Changing the user information for bedrockadmin
Enter the new value, or press ENTER for the default
        Full Name []:   # Enterキー押下 
        Room Number []: # Enterキー押下 
        Work Phone []:  # Enterキー押下 
        Home Phone []:  # Enterキー押下 
        Other []:       # Enterキー押下 
Is the information correct? [Y/n] y  # yを入力

インストール

作業自体はとても簡単で、インストール用ディレクトリを作成後、統合版(bedrock)Minecraftのデータをダウンロードして解凍するだけです。

インストールディレクトリ作成

インストール用のディレクトリを作成し、ディレクトリの所有者を動作用のユーザに設定します。

$ sudo mkdir /opt/bedrock
$ sudo chown bedrockadmin:bedrockadmin /opt/bedrock/

ダウンロード

ここからの作業は、統合版(bedrock)Minecraftサーバ動作用のユーザで行います。

$ su - bedrockadmin

インストール用のディレクトリに移動し、bedrock_serverのダウンロードを行います。

ダウンロードするためのURLは下記URLにアクセスし、「Ubuntu用 Ubuntuサーバーソフトウェア」のダウンロードボタンを右クリックし、ダウンロード用URLをコピーします。

https://www.minecraft.net/ja-jp/download/server/bedrock

ダウンロード用のURLはバージョンによって違ってくるので、ダウンロード用のウェブページを確認してください。

$ cd /opt/bedrock
$ curl -L -O https://minecraft.azureedge.net/bin-linux/bedrock-server-1.17.11.01.zip

ダウンロードしたzipファイルをbedrock-serverという名前のディレクトリで解凍します。

$ unzip bedrock-server-1.17.11.01.zip -d bedrock-server

bedrock_server起動

解凍したディレクトリ内にあるbedrock_serverというファイルを「LD_LIBRARY_PATH=. ./bedrock_server」という形で実行することで、統合版(bedrock)Minecraftサーバを起動することができます。

$ cd bedrock-server
$ LD_LIBRARY_PATH=. ./bedrock_server
NO LOG FILE! - setting up server logging...
[2021-08-03 11:24:05 INFO] Starting Server
[2021-08-03 11:24:05 INFO] Version 1.17.10.04
[2021-08-03 11:24:05 INFO] Session ID 9e06301a-5d2e-4b6f-bf6d-6bcbc968a5e0
[2021-08-03 11:24:05 INFO] Level Name: Bedrock level
[2021-08-03 11:24:05 INFO] Game mode: 0 Survival
[2021-08-03 11:24:05 INFO] Difficulty: 1 EASY
[INFO] opening worlds/Bedrock level/db
[INFO] IPv4 supported, port: 19132
[INFO] IPv6 supported, port: 19133
[INFO] IPv4 supported, port: 56457
[INFO] IPv6 supported, port: 34996
[INFO] Server started.

無事起動できましたら、Server Started.と表示されます。

接続確認

Minecraftクライアントからサーバに接続出来るかの確認を行ってください。

問題無く接続できたらstopコマンドでbedrockサーバを一旦停止させてください。

[INFO] Player connected: tamohiko, xuid: xxxxxxxxxxxxxxx
[INFO] Player disconnected: tamohiko, xuid: xxxxxxxxxxxxxxx
stop   # stopと入力
[INFO] Server stop requested.
[INFO] Stopping server...
Quit correctly

起動・停止・バックアップスクリプト作成

起動・停止・バックアップを行うためのスクリプトを作成します。

$ vi bedrock_script.sh

作成するスクリプトで設定する変数についての説明です。

変数 説明
USERNAME bedrock_server動作ユーザ
SESSION_NAME tmuxで作成するセッション名
BEDROCK_PATH インストールディレクトリ
LD_LIBRARY_PATH LD_LIBRARY_PATH設定
SERVICE 実行するbedrock_serverファイル
BK_DIR バックアップデータ格納ディレクトリ
BK_TIME バックアップ取得日時
FULL_BK_NAME 完全バックアップデータ名
WORLD_BK_NAME ワールドデータのバックアップデータ名
WORLD_DIR バックアップ対象ワールドデータディレクトリ
BK_GEN バックアップデータ保存する日数
#!/bin/bash
#
# bedrock_server start/stop/backup script
#
 
# bedrock_server 実行ユーザ
USERNAME='bedrockadmin'
 
# session名
SESSION_NAME='bedrock'
 
# bedrock_serverインストールディレクトリ
BEDROCK_PATH='/opt/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"
 
# ワールドデータパックアップデータ名
WORLD_BK_NAME="$BK_DIR/bedrock_world_backup_${BK_TIME}.tar"
 
# 取得対象ワールドデータディレクトリ
WORLD_DIR="$BEDROCK_PATH/worlds"
 
# バックアップデータ保存数
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
}
 
# ワールドバックアップ処理
w_backup() {
  if pgrep -u $USERNAME -f $SERVICE > /dev/null; then
    echo "Backup start minecraft world 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 $WORLD_BK_NAME $WORLD_DIR
    sleep 10
    tmux send-keys -t $SESSION_NAME:0 "save resume" C-m
    echo "bedrock_server world data backup compleate!"
    gzip -f $WORLD_BK_NAME
    find $BK_DIR -name "bedrock_world_backup_*.tar.gz" -type f -mtime +$BK_GEN -exec rm {} \;
  else
    echo "Backup start ..."
    gzip -f $WORLD_BK_NAME
    find $BK_DIR -name "bedrock_world_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 "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
    ;;
  w_backup)
    w_backup
    ;;
  f_backup)
    f_backup
    ;;
  status)
    status
    ;;
  *)
    echo  $"Usage: $0 {start|stop|w_backup|f_backup|status}"
esac

作成したスクリプトに実行権限を設定します。

$ chmod 744 bedrock_script.sh

スクリプト使用方法

スクリプトの実行は動作用ユーザ(bedrockadmin)で行う必要があります。

  • 起動 bedrock_script.sh start
  • 停止 bedrock_script.sh stop
  • ワールドデータバックアップ bedrock_script.sh w_backup
  • 完全バックアップ bedrock_script.sh f_backup
  • 起動状態確認 bedrock_script.sh status

起動

引数としてstartを指定することで、SESSION_NAMEで指定した名前のセッションがtmuxで作成され、その中でbedrock_serverが実行されます。

$ /opt/bedrock/bedrock-server/bedrock_script.sh start
tmuxセッションへの接続(アタッチ)

tmuxのセッションに接続(アタッチ)する場合は、統合版(bedrock)Minecraftサーバ動作用のユーザで下記コマンドを実行します。

tmux ls コマンドで起動しているtmuxのセッションを表示させます。

$ tmux ls
bedrock: 1 windows (created Sat Aug  7 15:03:55 2021)

minecraftサーバ起動しているセッションを指定して接続します。

$ tmux a -t bedrock

bedrock_serverが動作している仮想端末に接続することが出来ます。

[2021-08-07 15:03:56 INFO] Game mode: 0 Survival
[2021-08-07 15:03:56 INFO] Difficulty: 1 EASY
[INFO] opening worlds/Bedrock level/db
[INFO] IPv4 supported, port: 19132
[INFO] IPv6 supported, port: 19133
[INFO] IPv4 supported, port: 38314
[INFO] IPv6 supported, port: 44492
[INFO] Server started.  
tmuxセッションから切断(デタッチ)

セッションから抜けたい(デタッチ)場合は「Ctrl」+「b」キーを押下した後に「d」キーを押下します。

セッションから抜けることができたら、コンソールには[detached]と表示されます。

[detached (from session bedrock)]

停止

引数としてstopを指定することで、bedrock_serverを停止させることができます。

$ /opt/bedrock/bedrock-server/bedrock_script.sh stop

停止後はtmuxで作成したセッションも自動的に削除されます。

ワールドデータバックアップ

引数としてw_backupを指定することで、bedrcok_serverを停止せずワールドデータのバックアップを行うことができます。

WORLD_DIRで指定したワールドデータのディレクトリが、BK_DIRで指定したディレクトリにWORLD_BK_NAMEで指定された名前で保存されます。

$ /opt/bedrock/bedrock-server/bedrock_script.sh w_backup

バックアップを行う際はbedrock_serverが起動している必要があります。

完全バックアップ

引数としてf_backupを指定することで、bedrock_serverを停止後にインストールディレクトリを丸ごとBK_DIRで指定したディレクトリにバックアップします。

バックアップデータはFULL_BK_NAMEで指定された名前で保存されます。

$ /opt/bedrock/bedrock-server/bedrock_script.sh f_backup

バックアップを行う際はbedrock_serverが起動している必要があります。

起動状態確認

引数としてstatusを指定することで、bedrock_serverが起動しているかの確認を行えます。

$ /opt/bedrock/bedrock-server/bedrock_script.sh status

スクリプト動作確認

スクリプトが完成しましたら、実際にスクリプトを実行し各機能の動作テストを行ってください。

自動起動設定

サーバ起動時に自動的に統合版(bedrock)Minecraftサーバが起動するようにします。

systemd登録用ファイル作成

systemdに登録するための設定ファイルを作成します。

ここからの作業はsudoができるユーザで行います。

$ su - sudoができるユーザ
$ sudo vi /etc/systemd/system/bedrock_minecraft.service

設定内容

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

[Service]
Type=forking
User=bedrockadmin
ExecStart=/opt/bedrock/bedrock-server/bedrock_script.sh start
ExecStop=/opt/bedrock/bedrock-server/bedrock_script.sh stop

[Install]
WantedBy=multi-user.target

systemctコマンドで自動起動の設定を行います。

$ sudo systemctl enable bedrock_minecraft.service

動作確認

サーバを再起動して自動起動するか確認をしてください。

$ sudo reboot

サーバ再起動後にbedrock_serverが自動起動していればインストール作業は完了となります。

ゲーム内容の設定

インストール作業が完了しましたら、以下のファイルを編集してサーバの設定を行いましょう。

  • server.properties ゲーム設定
  • permissions.json ユーザの権限設定
  • whitelist.json 接続可能ユーザの指定

各ファイルの設定方法はインストールディレクトリ内にあるbedrock_server_how_to.htmlを確認してください。

コメント

  1. より:

    ワールドデータバックアップのコマンドの記載で、本来w_backupであるはずのところがs_backupになっています。

    • tamohiko より:

      坂さん
      コメントありがとうございます。

      ご指摘頂いた部分の修正の方させていただきました。
      ご指摘ありがとうございました。

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