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を確認してください。
コメント
ワールドデータバックアップのコマンドの記載で、本来w_backupであるはずのところがs_backupになっています。
坂さん
コメントありがとうございます。
ご指摘頂いた部分の修正の方させていただきました。
ご指摘ありがとうございました。