tailscaleで管理者とユーザーを分離する

ラズパイ5のluantiサーバーの管理者とユーザーは少なくとも別のメールアカウントにしないと、サーバー含めた管理者エリアへのアクセスができてしまうので現実運用に即した多少のアップデート

つまり管理者エリアとユーザエリアはメールアカウントを別にして、ユーザアカウントの管理画面には最悪アクセスできても管理者エリアの管理画面へのアクセスは禁止する設定

ユーザデバイスは以下のuser@gmail.com(仮想のアドレスです)の配下に登録、管理者デバイスはadmin@gmail.comの配下に登録します

	"groups": {
		"group:admin":   ["admin@gmail.com"],
		"group:players": ["admin@gmail.com", "user@gmail.com"],
	},
	// Define the tags which can be applied to devices and by which users.
	// "tagOwners": {
	//  	"tag:example": ["autogroup:admin"],
	// },
	"tagOwners": {
		"tag:luanti-server": ["group:admin"],
	},
	// Define grants that govern access for users, groups, autogroups, tags,
	// Tailscale IP addresses, and subnet ranges.

	"acls": [
		{
			"action": "accept",
			"src":    ["group:players"],
			"dst": [
				"tag:luanti-server:30000-30010",
				"tag:luanti-server:22",
        "tag:luanti-server:5900",
				"tag:luanti-server:5901",
			],
		},
	],

user@gmail.com側のドメインではACL設定はできないので、user@gmail.com側の相互ユーザ分離はできないですが、それは通常のWi-Fi環境下と大差はないだろうから現実的運用では、管理者エリアとユーザエリアを分離だけでも相当にセキュアだろうと思う

P.S. 2026/2/21

"tag:luanti-server:5900",
"tag:luanti-server:5901",

5900 portも通過許容に変更、そうしないとVNCがtailscale経由では通らない

 

P.S. 2026/2/23

tailscaleの管理者機能で、

tailscaleのアカウント切り替えは、一台のクライアントで登録は一個だけに限定されるからログアウトして再登録する必要がある、VMwareで例えばLinux動かしとけば、実質二台のPCとして使えるから2個のtailscaleアカウントを一台で持つことができる

 

admin

 

Luantiの遠隔サーバー化

ラズパイ5なら軽量なLuantiサーバーなら動かせるのですが、リモートでどうやるかだったのですが、VPNを使えば良いと

ラズパイ5(Luanti service)- VPN ~~~~~~~ VPN – client

<VPN : tailscale>

VPNは今は第二世代とでもいうべき時代で、WireGuardと言われる最新のVPNプロトコルを使った無償で使えるVPN製品(カーネル空間動作で高速、軽量、最新の暗号化技術でセキュア)が注目で中でもtailscaleは広く使われているようです

特徴は中央集権型のサービスで、アカウントログオンしてクラウド側にデバイスを登録すると、登録したデバイス間でセキュアな通信が確保され、さらにMagicDNSという仕組みでそれぞれの登録デバイスにDNS情報が転送されるので、その情報を使って登録デバイス間の接続にはIPアドレスの意識さえ不要という優れもの

# tailscale起動、以下のコマンドでログイン画面のURLが出てくるからブラウザログイン
$ sudo tailscale up

# 以降の起動時には自動起動するように、以下を実行する
$ sudo systemctl enable minetest-server

# IPアドレスラズパイ側の確認(Magic DNS使うからIPアドレスを触る必要はない)
$ tailscale ip -4
100.83.206.1

% tailscale status

100.88.161.30  macbookpro  login_account@  macOS  -
100.83.206.1   rasp5       login_account@  linux  -

クライアントにはtailscaleのサイトからプラットフォーム対応のpkgを引っ張ってきてインストールして、起動時に同時にラズパイログオンアカウントと同じアカウントでログインすればマシンが追加されます、その後に例えばsshならば、

$ ssh usr@rasp5

でログオンできます、rasp5はMagic DNSの登録名です

Luantiならば、

こんな感じでアクセス

公開にあたってのセキュリティ運用対応、VPNそのものは信頼度高いのでtailscaleのログイン情報の保護に尽きる

1. 管理者アカウントを1個に固定

→ 「新しい端末を追加できるのは管理者だけ」

2. デバイス承認をON(超重要)

管理画面 → Settings → Device approval

これONにすると:

新しい端末がログインしても
管理者が承認しないと通信不可

3. キーは使わない(人力ログインのみ)

Tailscale自体は:

パスワードを持たない設計

全部:
Google / GitHub / Microsoft
の認証に丸投げ。

4. 不要端末の自動削除

Settings → Key Expiry

180日(default)に設定。

5. Subnet / Exit Node は使わない

デフォルトはOFFになってる

6. デフォルトユーザーpiのパスワードは安全性の高いものに安全性の高いものに変える

 

<Debain版のLunatic serverのインストール>

snap版では不都合あったので、ヘッドレス版(Debian公式の minetest-server デーモン)を入れる

% sudo apt install minetest-server

# サービスの自動起動enableと一時的な起動
% sudo systemctl enable minetest-server
% sudo systemctl start minetest-server

 

<ユーザーの追加と別ワールドの作成>

・指針:ユーザーは当然限定アクセスだけでroot権限は与えない

・ワールド:プレイ用の30000(dafult)ポート以外に編集や個人用のワールドは例えば30001ポートで起動するようにして環境は分離する

・手順:ユーザーluanti1を作ってサーバー起動

$ sudo adduser luanti1
$ su - luanti1

$ mkdir -p ~/.minetest/worlds/test		// 編集用のdirectory(test)を作る
$ /usr/lib/minetest/minetestserver   --world ~/.minetest/worlds/luanti1   --port 30001   --quiet   --logfile ""

複数のlunatiサーバー立ち上げても、元が軽量だからラズパイ5では今のところ余裕です

 

admin

Luantiサーバーのインストールとsnap

Wi-Fi内でローカルで使うためのLuantiサーバー、色々やってみたけど結局行き着いたのはラズパイ5

① wsl2:一見筋が良さそうだけど、Windowsのセキュリティを乗り越えられない、つまりportが通らない

② USB SSDでLinux:これだとWindows関係なくなるから筋は良さそうなのだけど、HP NoteBookのUEFIのガードが固くてUSB SSDのbootができない、bootableと認識していないということ

③ MacのVMware FusionのUbuntuで立ち上げる:これはMacBookのローカルからだと仲間と認識してもらえるけど、外部からは同様の問題がある、Fusion Proだと同じネットワーク内のアドレス取得されるから良さそうだけど、結局***.localは使えないよね

④ ラズパイ5:これがおそらく一番素直、つまり仮想マシン配下に構築すると必ずネットワークが通すための工夫が必要だけど、専用機なら何ら問題ないしmDNSも使えるから固定I Pである必要もない

<ラズパイ5でのインスト手順>

ここでsnapが出てくる、aptではLunatiが結構古いバージョンだったりするらしくて、最新版を取得するならばsnapを使う、ソースコンパイルという手段もあるけど結構手間ではある

$ sudo apt update
$ sudo apt install snapd

snapとはLinuxにおける新たなパッケージ管理ツール(アプリ単位の隔離で依存関係を全部まとめることでosから切り離されるからaptでインストールできないアプリもインストールできる)、サイズと起動時間がネックかなFlatpakがデスクトップアプリでsnapはサーバーサイドアプリという棲み分けかな、起動時間とか問題なること少ないし
https://www.choge-blog.com/programming/ubuntu-snap/

$ sudo reboot

snapdの最新版をsnapでインストールする
$ sudo snap install snapd

$ sudo snap install luanti

snapのラズパイ用のLuantiはクライアントとサーバーが兼用らしい

$ luantiで起動して作成ずみのworldをDLしてデフォルトに設定する

$ cat ~/snap/luanti/common/.minetest/minetest.conf 
server_announce = false
maintab_LAST = online
enable_damage = true
creative_mode = false
mainmenu_last_selected_world = 1
default_game = minetest 


$ mkdir -p ~/snap/luanti/common/.minetest/games/
$ cd ~/snap/luanti/common/.minetest/games/
$ git clone https://github.com/luanti-org/minetest_game.git minetest

起動
$ luanti --server --worldname test --gameid minetest --port 30000

2025-12-24 19:33:28: WARNING[Main]: system-wide share not found at "/usr/share/luanti"
2025-12-24 19:33:28: WARNING[Main]: system-wide share found at "/snap/luanti/11/usr/bin/../share/luanti"
2025-12-24 19:33:28: [Main]: Using world specified by --worldname on the command line
2025-12-24 19:33:28: [Main]: Using game specified by --gameid on the command line
 _                   _   _ 
| |_   _  __ _ _ __ | |_(_)
| | | | |/ _` | '_ \| __| |
| | |_| | (_| | | | | |_| |
|_|\__,_|\__,_|_| |_|\__|_|  ___ 5.14.0
2025-12-24 19:33:28: ACTION[Main]: World at [/home/pi/snap/luanti/common/.minetest/worlds/test]
2025-12-24 19:33:28: ACTION[Main]: Server for gameid="minetest" listening on [::]:30000.

クライアントの画面

snapは起動時間が長くなるというけど、サーバーなら起動しちまえば終わりだから問題にはならない、sdカード使ってるけど特にレスポンスが遅いとも感じない

あとサイズが大きくなる件は、これは媒体次第だけど今時それほどクリティカルな話ではない

 

admin