【#2】Minecraft BE(統合版) 自作サーバー構築奮闘記 ~マイクラサーバー化編~
2022.04.20
CATEGORY : Linux
あんみんどうふです。
前回に引き続きマイクラサーバー構築の備忘録を書き綴ります。
前回の投稿はこちら。
サーバー側のポート開放
今回は簡単なファイアウォール「ufw」を使います。
まずufwがインストールされているかをチェックするため、以下を実行します。
バージョン情報が表示されたらインストールされています。
1 2 3 | $ ufw version ufw 0.36 Copyright 2008-2015 Canonical Ltd. |
表示されない場合はインストールされていないので、以下を実行してインストールします。
1 $ sudo apt install ufw -y
ufw statusで現在の状態をチェックします(root権限が必要なのでsudoを付けます)。
デフォルトの場合無効化されているはずです。
1 2 | $ sudo ufw status Status: inactive # 無効 |
この状態だとサーバーのポート開放は行われていないことになります。
次に開放するポート番号を登録します。
「ufw allow (ポート番号)/(プロトコル)」で実行すると登録できます。
(プロトコルは省略するとTCP・UDP両方を許可できます。)
統合版のマイクラはポート番号がデフォルトで「19132」で設定されており、プロトコルは「UDP」を使用しています。
他の番号を使うことも可能ですが、今回はこれに合わせて開放します。
1 2 3 | $ sudo ufw allow 19132/udp Rules updated Rules updated (v6) |
間違えた場合は「ufw delete allow (対象のポート)」で消せます。
123 $ sudo ufw delete allow XXXRules updatedRules updated (v6)
登録したらufwを有効化します。
1 2 | $ sudo ufw enable Firewall is active and enabled on system startup |
登録・有効化できているかチェックします。
「Status: active」と表示されていれば有効化されており、登録したポートが一覧に表示されていれば正しく登録できています。
1 2 3 4 5 6 7 | $ sudo ufw status Status: active To Action From -- ------ ---- 19132/udp ALLOW Anywhere 19132/udp (v6) ALLOW Anywhere (v6) |
Minecraftサーバーのインストール
ここでようやくマイクラの登場です。本体をサーバーに入れます。
下準備
zipファイルを展開できるようにするため「unzip」をインストールします。
1 | $ sudo apt install unzip -y |
次にインストール場所を予め作成しておきます。
今回は「/opt/bedrock」に作成します。
1 2 3 4 | # optにbedrockディレクトリを作成 $ sudo mkdir /opt/bedrock # /opt/bedrockの所有者をユーザー「bedrock」に変更 $ sudo chown bedrock:bedrock /opt/bedrock |
Minecraftサーバーのダウンロード
公式サイトへアクセスし、右側の「UBUNTU用」を選びます。
ユーザーライセンスとプライバシーポリシーの同意を求められるので同意し、「ダウンロード」を右クリックしてURLをコピーします。
コピーしたURLをメモ帳などにペーストし、それに合わせてサーバー側で入力します。タイプミスに注意。
1 2 3 | $ cd /opt/bedrock # 2022年4月現在のURL $ curl -L -O https://minecraft.azureedge.net/bin-linux/bedrock-server-1.18.12.01.zip |
実行するとbedrockディレクトリ直下に「bedrock-server-(バージョン).zip」がダウンロードされます。
ダウンロード後、unzipで展開します。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | $ unzip bedrock-server-1.18.12.01.zip $ ls -1 # 確認 allowlist.json bedrock-server-(バージョン).zip bedrock_server bedrock_server_how_to.html bedrock_server_symbols.debug behavior_packs definitions permissions.json release-notes.txt resource_packs server.properties structures |
以降zipファイルは使わないので削除して構いません。
1 $ rm /opt/bedrock/bedrock-server-1.18.12.01.zip
起動
インストールしたディレクトリで以下のように「bedrock_server」を実行します。
公式サイトにもある通り、基本的には「LD_LIBRARY_PATH=. ./bedrock_server」で起動します。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | $ cd /opt/bedrock $ LD_LIBRARY_PATH=. ./bedrock_server NO LOG FILE! - setting up server logging... [YYYY-MM-DD hh:mm:ss:mmm INFO] Starting Server [YYYY-MM-DD hh:mm:ss:mmm INFO] Version 1.18.12.01 [YYYY-MM-DD hh:mm:ss:mmm INFO] Session ID XXXXXXXX-XXXX-XXXX-XXXXXXXXXXXX [YYYY-MM-DD hh:mm:ss:mmm INFO] Lebel Name: Bedrock level [YYYY-MM-DD hh:mm:ss:mmm INFO] Game mode: 0 Survival [YYYY-MM-DD hh:mm:ss:mmm INFO] Difficulty: 1 EASY [YYYY-MM-DD hh:mm:ss:mmm INFO] opening worlds/Bedrock level/db [YYYY-MM-DD hh:mm:ss:mmm INFO] IPv4 supported, port: 19132 [YYYY-MM-DD hh:mm:ss:mmm INFO] IPv6 supported, port: 19133 [YYYY-MM-DD hh:mm:ss:mmm INFO] Server started. [YYYY-MM-DD hh:mm:ss:mmm INFO] IPv4 supported, port: 40728 [YYYY-MM-DD hh:mm:ss:mmm INFO] IPv6 supported, port: 52284 |
このように表示されたら起動完了です。今ここにマイクラサーバーが立ち上がりました。
同ネットワークに接続している場合はMinecraftからローカル接続が行えるので、こちらも試します。
Minecraftを起動し、「プレイ」→「サーバー」の下にある「サーバーを追加」を選びます。
アドレスにサーバーのIPアドレス、ポートに「19132」を入力し、「遊ぶ」を選ぶと接続できます。
サーバー名は適当にわかりやすい名前にします。私は「local」にしました。
正常に接続できるとワールドに入ることができます。
同時に、サーバー側でプレイヤーの名前とxuidがログに表示されます。
1 2 3 4 | # サーバーへ接続 [YYYY-MM-DD hh:mm:dd:mmm INFO] Player connected: username, xuid: xxxxxxxxxxxxxxxx # サーバーから切断 [YYYY-MM-DD hh:mm:dd:mmm INFO] Player disconnected: username, xuid: xxxxxxxxxxxxxxxx |
サーバーを停止させる場合はstopと入力します。
1 2 3 4 | stop [YYYY-MM-DD hh:mm:dd:mmm INFO] Server stop requested. [YYYY-MM-DD hh:mm:dd:mmm INFO] Stopping server... Quit correctly |
ユーザーの権限変更
自身を管理者として設定するとワールドの設定変更やプレイヤーの権限変更、キック(プレイヤーの追放)等ができるようになるので設定します。
プレイヤーの権限は「permissions.json」にて設定できます。
1 | $ vi /opt/bedrock/permissions.json |
json形式で以下のように入力すると有効になります。
xuidはサーバー接続時にログへ出力されるので、それと同じものを入力します。
1 2 3 4 5 6 | [ { "xuid" : "1234567890123456", # xuid "permission" : "operator" # 権限(operator = 管理者) } ] |
ワールドの設定
デフォルトのままだと場合によっては最大人数が足りない、難易度を統一できない、荒らし対策が甘い等いろいろと不便に感じることがあります。
こういった設定は「server.properties」を編集することで変更できます。
1 | $ vi /opt/bedrock/server.properties |
以下が各項目の説明です。
基本的には名前、ゲームモード、難易度、人数、放置できる時間以外変える必要はないと思います。
server-name
サーバーの名前です。
ゲーム内では接続する際の画面に表示されます。
デフォルトは「Dedicated Server」です。
gamemode
ゲームモードを指定します。
survival(サバイバル)、creative(クリエイティブ)、adventure(アドベンチャー)の3種類から選べます。
デフォルトは「survival」です。
force-gamemode
参加プレイヤーにワールドの難易度をデフォルトで固定させるかどうかを選べます。
trueにするとserver.propertiesで設定したデフォルトの難易度で固定されます。
デフォルトは「false」です。
difficulty
ワールドのデフォルト難易度を設定します。
peaceful(ピースフル)、easy(イージー)、normal(ノーマル)、hard(ハード)の4種類から選べます。
デフォルトは「easy」です。
allow-cheats
チートコマンドを許可するか選べます。trueで許可、falseで禁止。
デフォルトは「false」です。
max-players
ワールドの最大同時接続数を指定できます。
サーバーのスペック(主にCPU・メモリ)に合わせた人数にすることを推奨します。
参考に私の場合は、CPUがIntel Xeon E3-1270、メモリが8GBの状態で最大8人同時接続していましたが問題なく動いていました。
デフォルトは「10」です。
online-mode
Xbox Liveで認証されたアカウントのみが接続できるようにします。
falseにすると不正にMinecraftを手に入れたユーザーが参加できるようになってしまうので、特別な理由がない限りはtrueのままが望ましいです。
デフォルトは「10」です。
allow-list
trueにすると「allowlist.json」に登録されたユーザーのみが参加できるようにします。いわゆるホワイトリストです。
allowlist.jsonにjson形式で以下のように入力すると有効になります。
permissions.jsonと異なり、xuidは未入力でもnameを書いていれば接続時に自動で入力されるようです。
1 2 3 4 5 6 7 | [ { "ignoresPlayerLimit" : false, # 最大参加人数に含むかどうか "name" : "username", # Xbox Live ゲーマータグを入力 "xuid" : "1234567890123456" # xuidを入力 (未入力でもOK) } ] |
デフォルトは「false」です。
server-port
IPv4接続のポート番号を指定します。
デフォルトは「19132」です。
server-portv6
IPv6接続のポート番号を指定します。
デフォルトは「19133」です。
view-distance
表示する最大チャンク数を指定します。
デフォルトは「32」です。
tick-distance
プレイヤーを中心にどこまでのチャンクをロードするかを指定します。
デフォルトは「4」です。
player-idle-timeout
操作が無い場合サーバーから自動的にキックする時間を分単位で指定できます。0に設定すると無制限になります。
トラップを作って放置する場合は0にしましょう。
デフォルトは「30」です。
max-threads
サーバーが使用する最大スレッド数です。スペックに合わせた設定にする必要があります。0にすると無制限に使用します。
デフォルトは「8」です。
lebel-name
ワールドの名前です。保存されるワールドのディレクトリ名や各ログに出力されるワールド名として使用されます。
ゲーム内では「設定」のワールド名に表示されます。
デフォルトは「Bedrock lebel」です。
lebel-seed
ワールドのseed値を指定します。
デフォルトは空欄です。
default-player-permission-lebel
プレイヤーの権限のデフォルト値を設定します。
visitor・・・攻撃や建築・破壊など何もできず、移動のみ。
member・・・通常のプレイヤー。
operator・・・管理者。ワールドの設定や権限変更が行える。
デフォルトは「member」です。
texturepack-required
trueにするとテクスチャパックの使用を強制します。
デフォルトは「false」です。
content-log-file-enabled
trueにするとエラー発生時にログファイルを出力します。
デフォルトは「false」です。
compression-threshold
ネットワークペイロードの最小値を指定します。
デフォルトは「1」です。
server-authoritative-movement
プレイヤーの位置がゲーム内とサーバー内で差異がある場合にどちらに合わせるかを指定します。
client-auth・・・ゲーム側に合わせる
server-auth・・・サーバー側に合わせる
server-auth-with-remind・・・サーバー側に合わせる+ロールバック
デフォルトは「server-auth」です。
player-movement-score-threshold
プレイヤーの異常な動作を検知する閾値を指定します。
デフォルトは「20」です。
player-movement-action-direction-threshold
プレイヤーの視線や攻撃方向に差異があると検知する閾値を指定します。
デフォルトは「0.85」です。
player-movement-distance-threshold
「server-authoritative-movement」で位置に差異があると検知する閾値を指定します。
デフォルトは「0.3」です。
player-movement-duration-threshold-in-ms
「server-authoritative-movement」で位置に差異がある場合、修正する時間の間隔をミリ秒単位で指定します。
デフォルトは「500」です。
correct-player-movement
「server-authoritative-movement」の位置の差異を修正するかどうかを指定します。統合版サーバー自体が現状開発段階のものなので、falseにすることが推奨されています。
デフォルトは「false」です。
server-authoritative-block-breaking
よくわかりませんが、原文を読む感じではブロックの破壊をゲーム側に合わせて処理する設定のようです。
デフォルトは「false」です。
<原文>
If true, the server will compute block mining operations in sync with the client so it can verify that the client should be able to break blocks when it thinks it can.
これにてサーバーは完成です。
残すはサーバーの公開、いわゆる”ポート開放“のみです・・・が、ルーターやモデム・光回線の環境によって大きく左右されるので、次が一番の鬼門となります。
次回は最終回です。