How to configure to play a server of the Minecraft Bedrock Edition on TrueNAS SCALE's Apps with operator privileges?
流れとしては、アクセス制限を有効化して、
自分のユーザータグにのみアクセス許可を設定した状態でサーバーにログインすると、
アクセスリスト(allowlist.json)に自分のユーザータグに対応したxuidが記録されるので、その xuid を Apps の設定画面で Operator として登録する(permissions.json に記録される)
という感じです。
(あと、使いたい機能によっては Allow Chrats をチェックする必要もある)
TrueNAS SCALE で Minecraft サーバー(Bedrock版)を構築する
でとりあえずサーバーは稼働するものの、アクセスするとMember(星マーク)の権限しかない。
Apps の設定画面内に Operators / Administrators という項目があって、ここに設定すればいいんだろうけど、ユーザータグを記述するのではなく、xuid で指定する必要があるらしい。
XUID = Xbox User Id
のことらしい。
他の資料を調べてみると、
サーバーコンソールにINするとサーバーログにユーザーのログインログアウト時に表示される
契約しているVPSの管理画面で確認できる
など。
また、Java版とは異なる値らしく、Java版の確認方法でUUIDを確認してもダメ。
(Apps というか、利用している Docker のイメージのコンソールがなんか変みたいなので、これが修正されれば View Logs で一撃で確認できるようになるかもしれないけど)
あと、きりしまのゲーマータグがスペースを含んでいるせいで受け付けてくれないフォームがいっぱいあったので、スペースの含まれないゲーマータグを使用している人はフツーに調べられるのかもしれない。また、以降の手順はすでにゲーマータグからスペースをなくしたものを使用しているので、やはりスペースの含まれるゲーマータグの人は実行できないかもしれない可能性は、ある。
そんな中、
【conoha】マイクラ統合版 マルチサーバー設定 OP権限 つけ方|下町とーさんの不登校とマインクラフト
の手順が
TrueNAS SCALE の Apps で建てた Minecraft Bedrock Edtition でも通用したので、
記録しておきます。
バージョン違いだと構成とか違ったりするっぽいので一応現環境を記録しておきます。
環境(2025年2月時点)
TrueNAS SCALE 24.10.2
上にApps でインストールした
Minecraft Bedrock Edition
App Version:
2024.11.0
Version:
1.0.3
Minecraft Bedrock Editionのバージョンは
1.21.60.10
設定ファイルの編集準備
設定ファイルへのアクセス方法を確立する部分はいろいろあると思いますが、
今回はデータを永続化するために先の手順のように専用のデータセット
/tank/minecraft
をマウントしているので、こちらをSMB共有して、GUI では設定できない盲目は Windows パソコンから直接設定ファイルを参照したり編集したりして済ませます。
(サーバー立ててから設定変更で後からマウントし直したりはできない模様。設定していなかった場合は別環境を設定してください。Operator の指定は現在の環境にもできるはずなので、別環境で調べて、現環境に設定してもいいかもしれません。xuidはアカウントに紐ついているので、別のサーバーでも同じ値で同じユーザーを示すはずです。また、データを永続化するためにマウントしているけど、別のデータセットとマウントし直すことで複数のワールドデータを切り換えることもできます。もっともワールドデータを切り換えるならAppsのインスタンスを複数設定して、停止したり起動したりした方が運用しやすいでしょうが)
データセットのアクセス権設定を雑に済ませるために、
TrueNAS 上の Windows パソコンからアクセスするユーザーの
Auxiality Groups に Apps を追加しておきます。
Credentials > Users
自分ユーザーをクリックして Edit
builtin_users の右側の余白部分に apps と入力すると候補が絞られるのでクリック。
白抜きになって×が表示されたらOK。
一番下の
Save
データセットのパーミッションは
Datasets で
対象のデータセットをクリック
Permissions の Edit をクリック
User apps
Group 568 (appsのこと)
Access の
Group の Write をチェックする。
Shares の
Windows (SMB) Shares で Add
mineccraft 用のデータ設定を指定。
画像では、 /mnt/tank/minecraft
他はデフォルトのまま
Save
Restart SMB Service
書いてある項目に該当する変更ではないので
No でもOKだが
Restart Service
をクリックしても別に問題ない。
Configure ACL
今回はシンプルなアクセス権で設定しているので
No (いわゆる旧式のLinux風のアクセス権管理のまま)
minecraft の Apps の /data に相当するフォルダが共有されました。
Windows パソコンからは、
[Win]+[R](ファイル名を指定して実行)から
\\TrueNASのIPアドレス
などでアクセスする。
サーバーの設定ファイルの編集
設定変更するため、稼働している Apps の四角をクリックして停止。
赤く Stopped となれば停止しました。
Windows パソコンから Minecraft フォルダにアクセスして
server.properties を右クリックしてメモ帳で開きます。
今回の目的のために、
allow-cheats=false
を
allow-cheats=true
にして、
allow-list=false
となっている行を見つけ
allow-list=true
に変更して保存します。
(Windows 11のメモ帳だとタブの×で閉じる)
次に
allowlist.json
というファイルをメモ帳で開き、
初期状態では
[]
となっている部分に
[{"ignoresPlayerLimit":false,"name":"(ユーザータグ)"}]
と指定して保存します。
(このユーザータグは""でくくられているので半角スペース付きで指定できるのでは、と。きりしまはもう変えてしまったので未確認。面倒なので1行で記述していますが、適切な記法に従っていれば改行とか半角スペースやタブの有無は無視されるはず。それよりも記号とかが半角記号でなくなっている場合、左右の対応が崩れてしまう場合などに注意)
サーバーにクライアントからいったんアクセスする
Minecraft サーバー起動。
緑色の Running になったら、
Minecraft Bedrock Edition でアクセスしてみましょう。
サーバータブで対象のサーバーの現在のPingが表示されたら
サーバーに接続。
無事ゲームが始まったらそのままセーブして終了。
(現時点ではまだ星印=member です)
記録されたXUIDを確認・権限設定
再び Minecraft サーバーを停止します。
Application Info の Edit をクリック
先ほどの共有フォルダの
allowlist.json を開き直すと、
自分のユーザータグの右側に
,"xuid":"****************"
という数字16桁が追記されているのが確認できると思います。
これが自分のMicrosoft アカウントにひもつけられているXUIDになります。
(サーバーが変わっても同じユーザーは同じ値なので別の確認用サーバーでやって調べた値を本番用サーバーに設定する、という方法もあるでしょう)
Operators の Add をクリックして
Op
の欄に上記数字16桁を入力して
一番下までスクロールして
Update
あと、
アクセス制限を解除するため、
server.properties
の
allow-list=true
にしたのを
allow-list=false
に戻して保存する。
実際にサーバーに接続して確認
サーバーを起動します。
Minecraft クライアントでアクセスすると、無事王冠マーク(=operator)がつくのが確認できると思います。
ちゃんと
permissions.json
に内容が記述されているのが確認できると思います。
[
{
"permission": "operator",
"xuid": "****************"
}
]
以上。
Apps の GUI で完了するには、
Allow List Users が
Name と UUID とセットで指定しなければならないので、
最初にユーザー名だけの指定で取得する、っていうことができない。
なお、間違ってXUIDではなくUUIDで一度指定しまったりすると、ここの登録を×で消しても
allowlist.json
の記述から消えなかったりしてちょっと限界を感じました。
ということでやってる内容の割には長い手順になってしまいましたが、
(冒頭の作業の流れで全てですし)
これで自分のXUIDが判明すれば
以降建てるサーバーでは、
Operators
のところに自分のXUIDを指定するだけ
となります。
外部サイトでXUIDを調べる
後で確認して
How to find XUID/UUID for bedrock players!
で示されている
https://www.cxkes.me/xbox/xuid
で
XUID (DEC):
に同じ値が表示されるのは確認した。
(ここに自分のゲーマータグを入力するのはどうか、という点は未確認)
ここで調べたXUIDをAppsのOperatorsの欄に入力するのが手っとり早いかもしれないですが…。
統合版のオペレーダー権限でやりたいこと
で、これで何がしたいのかというと
/gamerule showcoordinates true
で座標を表示したいだけという。
Bedrock版・統合版は、
Java版と比べて自由度が低いので。
時間変えるのとかも上手じゃない人とプレイする最序盤はいいかも?
あと、
ConoHaで建てた統合版のサーバーでもOperator権限がこれでつけられるかな
(今はJava版にしちゃったけど)
サーバー消してBrdrock版・統合版のサーバーを立て直してやってみたところ、
セキュリティグループで IPv4v6-SSH を追加して、
Minecraft マネージャーで SSH を起動して、
RLoginでSSH接続して、
SFTPファイルの転送を使って、
/opt/minecraft_be_server
のファイルをダウンロードして編集してアップロードして、
という作業でOperator権限でアクセスできるのを確認しました。
XUIDも上で確認したものと同一でしたので、
ぶっちゃけ、上で作成された
permissions.json
をアップロードする、という乱暴な方法もイケそうです。
一応、軽くスクリーンショット撮りながら確認してみた。
ConoHa 上の Minecraft Bedrock Edition に Operator 権限で接続する
(あと、 TrueNAS SCALE の Apps 上で作成した permissions.json をいきなりアップロードしてもみたけどそれでもうまくいった)