Resoniteヘッドレスをブラウザで簡単管理!「MarkN Resonite Headless Controller(MRHC)」
こんにちは、「まーくん。(MarkN)」です。 Resoniteのヘッドレスサーバー、セットアップとかアップデート面倒だし、CUIで操作するの分かりづらいですよね
そこで開発したのが、今回紹介する「MarkN Resonite Headless Controller」(略して MRHC)です。 この記事では、このツールの紹介と、事前準備・インストール方法、そして具体的な機能について解説します。
MRHC とは?
一言でいうと、「ResoniteのヘッドレスサーバーをLAN内のWebブラウザから操作・管理するためのツール」です。

専門的な知識がなくても、クリック操作でサーバーの起動・停止や状態確認、セッションの運営ができます。特長は次の3つです。
- ランタイム不要の単一バイナリ: 余計なインストールは不要で、ダウンロードして実行するだけで動きます。
- Resonite本体を自動ダウンロード: MRHCが自分のフォルダ内にResonite本体を自動で取得します。Steamクライアントを別途インストールする必要もありません。
- マルチプラットフォーム対応: Windows (x64) / Linux (x64) / Linux (ARM) で動作し、Oracle CloudなどのVPS上でも運用できます。
⚠️ v1から乗り換える方へ
旧バージョン(v1.~)から乗り換える場合、互換性はありません。お使いの mrhcフォルダを丸ごと削除してください。また、これまで自分で用意していたResonite本体やSteamは新バージョンでは不要なので、アンインストールしてしまって構いません。
旧バージョンを使い続けたい方は、リリースページの v1.~ をお使いください。
使い始める前に(事前準備)
MRHCを使うには、次の準備が必要です。
- Resoniteのヘッドレスコード(必須): Resoniteをサブスクリプションで月 $10 以上のプランで支援し、ヘッドレス用のコードを取得しておく必要があります(取得方法は後述します)。
- Steamのサブアカウント: Resonite本体の自動ダウンロード/更新にSteamを使います。MRHCはこのパスワードを保存し、二段階認証には対応していないため、普段使いとは別のサブアカウントを新しく作成し、そのSteam Guard(二段階認証)は必ずオフにしてください。
- 空き容量に余裕のある場所へ: Resonite本体とキャッシュで相応の容量を使います(古いキャッシュを自動で削除する機能があります)。
- 設置場所は先に決めてください: Resonite本体や設定はフォルダ内に保存され、その絶対パスが記録されます。一度起動(特にResoniteのダウンロード)した後は、フォルダを移動・改名しないでください。 使いたい場所に置いてから起動しましょう。
- 接続はLAN内から: Web UI(管理画面)には同じネットワーク内からのみアクセスできます。外出先から使うにはVPNやTailscaleなどのセットアップが必要です(後述の「VPSで動かす場合」を参照)。
インストール
まずは以下のGitHubリポジトリから、お使いの環境向けのファイルを入手します。
環境に合わせて選んでください。インストールはとてもシンプルです。
Windows
- リリースページから
mrhc-windows-amd64.zipをダウンロードします。 - 使いたい場所で展開し、フォルダ内の
mrhc.exeを実行します(起動後はフォルダを移動しないでください)。 - 初回はセットアップウィザード(日本語/英語)が起動します。管理パスワードとポートを設定すると、続けてResonite本体のダウンロードが始まります。ダウンロードには時間がかかります。「今すぐサーバーを起動しますか?」と表示されるまでお待ちください。
起動したら、ブラウザで http://localhost:8080(既定)を開けばWeb UIが使えます。
ウィンドウを閉じるとMRHCも終了します。
mrhc.exeを実行したコンソールウィンドウを閉じる(またはPCをログオフ・シャットダウンする)と、MRHCも止まります。動かしている間はウィンドウを開いたままにしてください。ログオフ後やPC起動時にも常駐させたい場合は、Windowsの「タスク スケジューラ」でログオン時に起動するよう登録するなどの方法があります。SmartScreenの警告について — 未署名のため、初回実行時に「Windows によって PC が保護されました」と表示されることがあります。「詳細情報」→「実行」で起動できます。
データの置き場所 — 設定・状態・ダウンロードしたResonite本体は、すべて
mrhc.exeと同じフォルダ内にまとまっています。バックアップはこのフォルダごとコピーしてください(前述のとおり、起動後の移動・改名は避けてください)。
Linux(x64 / ARM)
次の1行を実行します。x64・ARMのどちらも同じコマンドで、アーキテクチャは自動で判定されます。特にこだわりがなければ、今いる場所(ログイン直後ならホーム)のまま実行して構いません(展開先はカレントディレクトリなので、別の場所に置きたいときだけ先に cd してください)。
curl -fsSL https://github.com/MarkN2000/MarkNResoniteHeadlessController/releases/latest/download/install.sh | sh
sudoは付けないでください。 rootで展開するとフォルダの所有者がrootになり、MRHCの自己更新が実行ファイルの隣に書き込めず失敗します。普段使いのユーザーのまま実行してください。
実行した場所に mrhc-linux-amd64/(ARMでは mrhc-linux-arm64/)が作られるので、その中で起動します。
cd mrhc-linux-amd64 # ARM では mrhc-linux-arm64
./mrhc
初回はセットアップウィザード(日本語/英語)が起動します。管理パスワード・ポートを設定するとResonite本体のダウンロードが始まります(時間がかかります。「今すぐサーバーを起動しますか?」と表示されるまでお待ちください)。完了するとそのままサーバーが立ち上がり、ブラウザで http://<サーバーのIP>:8080(既定)からWeb UIが使えます。
ターミナル(ウィンドウ)を閉じるとMRHCも終了します。 とくにSSH越しに運用する場合、
./mrhcをそのまま起動しただけだと、SSHを切った瞬間にプロセスごと止まります。閉じても動かし続けたい場合は、後述の「VPSで動かす場合」の手順2(tmux/systemd)を参照してください(VPSでなくても同じ手順が使えます)。
.NETランタイムやDepotDownloaderはMRHCが自動で取得するため、ファイアウォール以外の事前準備は基本的に不要です(freetype2など依存が不足している場合は、セットアップ時に導入の案内があります)。
データの置き場所 — 設定・状態・Resonite本体は、すべて
mrhcと同じフォルダ内にまとまっています(別の場所に置きたい場合は-data <dir>で指定できます)。起動後はフォルダを移動・改名しないでください。手動で導入したい場合は、最新リリースのmrhc-linux-amd64.tar.gz/mrhc-linux-arm64.tar.gzを好きな場所に展開してください(実行権を保持しているためchmod +xは不要です)。
ファイアウォール(参考) — 同じLANの他ユーザーがセッションに参加できない・見つからないときは、LANからのUDP受信を許可します(
192.168.1.0/24はお使いのLANのアドレス帯に合わせてください)。
- ufw(Ubuntu系・CachyOSなど):
sudo ufw allow from 192.168.1.0/24 proto udp- firewalld(Fedora・RHEL系・openSUSEなど):
sudo firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source address="192.168.1.0/24" protocol value="udp" accept' && sudo firewall-cmd --reload- 素のArch Linuxなど、ファイアウォールが標準で無効な環境では設定は不要です。
VPSで動かす場合(Oracle Cloud 等)
⚠️ 重要: Web UIはLAN内からしか開けません。 VPS上で動かす場合、インターネットから直接アクセスすることはできません。SSHトンネルまたはTailscaleなどのVPNで「同じネットワークにいる」状態を作ってからアクセスします。Web UIは平文HTTPのため、ポートを直接インターネットに公開しないでください(管理パスワードが平文で流れてしまいます)。
おすすめは、Oracle Cloud の Ampere A1(ARM) インスタンス+ OSは Ubuntu の構成です。本節はこれを前提に説明します。
1. 導入(Linux ARMと同じ) — SSHでログインし、次を実行します。特にこだわりがなければ、ログイン直後の場所(ホーム)のまま実行して構いません(展開先はカレントディレクトリなので、別の場所に置きたいときだけ先に cd してください)。
curl -fsSL https://github.com/MarkN2000/MarkNResoniteHeadlessController/releases/latest/download/install.sh | sh
sudoは付けないでください。 rootで展開するとフォルダの所有者がrootになり、MRHCの自己更新が実行ファイルの隣に書き込めず失敗します。ログインユーザー(OracleのUbuntuならubuntu)のまま実行してください。
2. 起動する(SSHを閉じても止めないためにtmuxの中で)
./mrhc をそのまま実行すると、SSHを閉じた(ターミナルを閉じた)瞬間にMRHCも終了してしまいます。tmux の中で起動すれば、SSHを切っても動き続けます。初回のセットアップウィザードもtmuxの中なら対話で進められるので、初回起動にも便利です。
sudo apt install -y tmux # 入っていなければ
tmux new -s mrhc # mrhc というセッションを作る
cd mrhc-linux-arm64 && ./mrhc # この中で起動(初回はウィザード)
起動できたら Ctrl + B を押してから D を押すと、セッションから「デタッチ(切り離し)」されます。この状態でSSHを閉じてもMRHCはtmuxの中で動き続けます。再びログを見たいときは tmux attach -t mrhc で戻れます(screen 派の方は screen -S mrhc でも同様です)。
tmuxはお手軽ですが、サーバー(VM)自体を再起動すると生き残りません。OSの再起動後も自動で立ち上げたい・MRHCが落ちたときに自動で復帰させたい場合は、次のsystemdをご利用ください。
再起動後も自動で起動する(任意) — systemdサービス化
長期運用するならsystemdに登録しておくと、VMの再起動後も自動で起動し、MRHCが落ちても自動で復帰します。先に上記のtmux等でセットアップウィザードを一度完了させ(mrhc.config.json が作られます)、そのtmux内のMRHCは Ctrl + C で止めてから設定します。
/etc/systemd/system/mrhc.service を作成します(パスとユーザー名は環境に合わせてください)。
[Unit]
Description=MarkN Resonite Headless Controller
After=network-online.target
Wants=network-online.target
[Service]
Type=simple
User=ubuntu
WorkingDirectory=/home/ubuntu/mrhc-linux-arm64
ExecStart=/home/ubuntu/mrhc-linux-arm64/mrhc
Restart=on-failure
RestartSec=5
TimeoutStopSec=200
[Install]
WantedBy=multi-user.target
sudo systemctl daemon-reload
sudo systemctl enable --now mrhc # 今すぐ起動+次回ブート時も自動起動
journalctl -u mrhc -f # ログを見る
TimeoutStopSec=200は省略しないでください。 MRHCは停止時にワールドを安全に閉じるため最大185秒待ちます。ここが短いと停止の途中で強制終了され、Resoniteヘッドレスが取り残されることがあります。- rootでは実行しないでください。 自己更新(Web UI/
mrhc update)が実行ファイルの隣に書き込むため、User=にはmrhcフォルダの所有者(この例ではubuntu)を指定します。 - Web UIの「今すぐ再起動する」(更新の適用後など)はsystemd管理下でもそのまま機能します(同じプロセスを置き換える方式のため、systemdは終了とは見なしません)。
3. Web UIにアクセスする — 次のどちらかの方法で「同じネットワークにいる」状態を作ります。
方法A: SSHトンネル(追加インストール不要・ポート開放も不要)
手元のPCで次を実行します(スマホからはTermiusなどのSSHアプリでも可)。
ssh -L 8080:localhost:8080 <ユーザー>@<VMのIP>
接続したまま、手元のブラウザで http://localhost:8080 を開きます。SSH(22番)が通っている時点でファイアウォールは通っているので、追加の開放は不要です。
方法B: Tailscale(VPN。スマホからも使いやすい)
VPSと手元の端末を同じTailscaleネットワーク(tailnet)に入れると、その間は同一ネットワーク扱いになり、Web UIに直接アクセスできます。
VPSにTailscaleを入れて接続します。
curl -fsSL https://tailscale.com/install.sh | sh sudo tailscale up表示されるURLを開いてログイン・承認します。
手元のPC/スマホにも Tailscale を入れ、同じアカウントでログインします。
VPSのTailscale IPを確認し(VPSで
tailscale ip -4)、手元のブラウザでhttp://<そのIP>:8080を開きます。
4.(任意)セッションへの直接参加を速くする — UDPポートの開放
ポートを開けなくても、Resoniteのリレー経由で他ユーザーはセッションに参加できます(その分だけ遅延が増えます)。直接接続で遅延を抑えたい場合のみ設定してください。クラウドVMのファイアウォールは2層(クラウド側のセキュリティルール + VM内)あり、両方で開放が必要です。
ポート番号を固定する: Web UIの「コンフィグ」タブでワールドを開き、「詳細フィールド」から
forcePortに任意の番号(例:32100)を設定 → 保存 → ヘッドレスを再起動します(既定はランダムポートのため、固定が必要です)。クラウド側を開放する: Oracle Cloudコンソール → 対象VCNの「セキュリティリスト」(またはNSG)→ イングレス規則を追加します(ソース
0.0.0.0/0・プロトコルUDP・宛先ポート32100)。VM内(Ubuntu)を開放する: OracleのUbuntuはraw iptablesが有効です(ufwは既定で無効)。
sudo iptables -I INPUT -p udp --dport 32100 -j ACCEPT sudo netfilter-persistent save-I INPUTは規則を先頭に挿入します(Oracle既定の末尾REJECTより前に置くため。-A〔末尾追記〕ではREJECTに弾かれて効きません)。
ヘッドレスコードの取得方法
Resoniteのヘッドレスサーバーは非公開ベータとして配布されており、ダウンロード・起動には「ヘッドレスコード」が必要です。
- Resoniteをサブスクリプション(Stripe・手数料が安く公式推奨)で支援し、ヘッドレスが利用できるティア(月 $10 以上)になります。
- Resoniteを起動し、フレンドにいる Resonite bot へ
/headlessCodeとメッセージを送ります。 - 返ってきたコードを、MRHCのセットアップウィザード(または「設定 → Steam」のブランチコード欄)に入力します。
主な機能
WebUIは、どのタブでも常に表示される上部バーと、目的ごとに分かれた8つのタブで構成されています。
上部バー(常時表示)
使用するコンフィグの選択、ヘッドレスの起動・通常停止(設定している予告を発動してから停止)・強制停止、フォーカス中セッションの表示(#番号/全セッション数)ができます。
右上の ⋮ メニューからは、表示言語の切り替えと、MRHC本体の更新確認を行えます。
「セッション」タブ — 稼働中セッションの運営

- セッション設定の編集:名前・アクセスレベル・最大人数・説明・一覧から隠す(セッションURLのコピーも)
- 参加者の一覧(在席/離席)と操作:ロール(権限)変更・リスポーン・キック・BAN・ミュート・メッセージ送信
- アイテムのスポーン(
res://形式のURL)と、ダイナミックインパルスの送信(タグ+値)
「ユーザー」タブ — フレンド・ユーザー操作

- ユーザー名/ユーザーIDでの検索 → フレンド申請・解除、フォーカス中セッションへの招待、メッセージ送信
- 受け取ったフレンドリクエストの一覧と承認
- BAN一覧の確認とBAN解除(全セッションを対象とした BAN もここから)
「新規セッション」タブ — 新しいワールドを開く

- テンプレートやレコードURLからセッションを開く
- キーワード(ワールド名)で公開ワールドを検索して開く
- よく使うワールドをお気に入りに登録
「コンフィグ」タブ — 設定ファイルをGUIで作成・編集

- コンフィグの新規作成・複製・リネーム・削除・保存。複数を作って切り替えられます
- ワールド単位の詳細設定:アクセスレベル・タグ・AFKキック・自動保存・自動復帰・デフォルトロール・自動招待・固定ポート(forcePort)など(Resonite公式スキーマ準拠)
- スキーマの全項目を「詳細フィールド」から追加可能
「スケジュール」タブ

- 手動再起動(ユーザーが居る場合は退出を待ってから安全に)
- 予定再起動:一度きり/毎日/毎週。事前告知(dynamicImpulse)や Private 化・改名などの事前アクション付き
- 退出待ちの制御:「静かに待つ」→「告知して待つ」→締切で強制実行、の二段構え
- クラッシュからの自動復帰(暴走を防ぐクラッシュ回数ガード付き)
- 予定再起動のついでに Resonite 本体を自動更新
「設定」タブ — MRHC全体の設定

- 管理パスワードの変更
- Resonite アカウント(コンフィグで個別指定がないとき、各ワールドに使われる共通アカウント)
- アプリ設定(Web UIのポートなど)
- Steam/DepotDownloader 設定:本体ダウンロード用の Steam アカウント・ブランチコードの設定、「今すぐ更新」での本体取得・更新
- キャッシュ管理:自動削除のON/OFF・古さ(日数)の指定、サイズ確認、全削除
「コマンド」タブ — ライブログとコマンド直送
Resonite の出力をライブログ(リアルタイム)で流しつつ、任意のコンソールコマンドを直接送れます。GUIにない操作をしたいときや、動作を細かく見たいときに便利です。
「ログ」タブ — ログファイルの閲覧
ディスクに保存された Resonite のログファイルを選んで表示・コピーできます。停止中でも読めるので、クラッシュした後の原因調査に役立ちます(大きいログは末尾のみ表示)。
既定の場所以外に設定していると使用できません。
アップデート(自己更新)
MRHC本体は、内蔵の自己更新機能でアップデートできます。
- Web UIから: 新しいバージョンがあると、画面右上の ⋮ に赤丸が付きます。⋮ →「更新を確認」→「アップデート」で、ダウンロード(進捗バー表示)・検証・差し替えまで自動で行われ、MRHCを再起動した時から新バージョンになります(差し替え自体は稼働中のワールドに影響しません)。続けて「今すぐ再起動する」を押すとワールドを順に停止してからMRHCが新バージョンで自動的に起動し直し、画面も自動で再接続します(停止に時間がかかると数分かかることがあります)。
- コマンドラインから:
./mrhc update(Windows:mrhc.exe update)。MRHCが起動できない状態からの復旧手段としても使えます。
手動でアップデートする場合は、MRHCを停止してからinstall.shを再実行(Linux)、またはzipを同じ場所へ上書き展開(Windows)してください。設定・データはアーカイブに含まれないため、どの方法でも保持されます。
困ったとき
- ヘッドレスのログを見たい: Web UIの「ログ」タブで、Resoniteヘッドレスのログファイル(
<インストール先>/Headless/Logs)を選んで表示・コピーできます(読み取り専用・停止中でも閲覧可能)。大きいログは末尾のみ表示されます。稼働中の現行ログは、OSによっては読み取れないことがあります。 - ディスク容量が気になる(キャッシュ): 設定タブの「キャッシュ管理」で、Resoniteキャッシュ(既定
headless-cache)の合計サイズ確認・全削除(ヘッドレス停止中のみ)ができます。「キャッシュ自動削除」をONにすると、停止のたびに、最終更新が指定日数(既定30日)より古いキャッシュを自動で掃除します。削除しても、必要なものは次回に自動で再取得されます。 - 管理パスワードを忘れた: サーバー機のコマンドラインで
./mrhc reset-password(Windows:mrhc.exe reset-password)を実行すると、旧パスワードなしで再設定できます。 - アップデートの途中で失敗して起動できなくなった: 実行ファイルの隣に
mrhc.exe.old(Linux:mrhc.old)が残っていれば、それをmrhc.exe(mrhc)に名前を戻すと元のバージョンに復旧できます。 - セットアップを最初からやり直したい: フォルダ内の
mrhc.config.jsonを削除してもう一度起動すると、ウィザードが再実行されます。 - ポートを変えたい/ポートが使用中と表示される:
mrhc.config.jsonの"port"を他の番号に書き換えて、もう一度起動してください。 - 同じLANからセッションに入れない/見つからない: サーバー機側で、LANからのUDP受信を許可してください。
- Windows: 接続中のネットワークを「プライベート ネットワーク」に変更します(設定 → ネットワークとインターネット → イーサネット、またはWi-Fi)。
- Linux: ファイアウォールが有効な場合は、LANからのUDPを許可します(前述の「ファイアウォール(参考)」を参照)。
- Steam Guardをオフにできない: スマホの「モバイル認証器」を設定済みのアカウントは、まずスマホのSteamアプリ側で解除し(Steamガード → 認証機器を削除)、その後でSteamの「設定 → セキュリティ」からオフにします。
- 表示言語を変えたい:
mrhc.config.jsonの"language"を"ja"/"en"に書き換えて再起動します(Web UIの表示言語は、画面右上の切り替えで別管理です)。
まとめ
「MarkN Resonite Headless Controller(MRHC)」は、Resoniteのヘッドレスサーバー運用をより手軽で快適なものにすることを目指して開発しました。ダウンロードして実行するだけで、Resonite本体の用意からセッション運営・メンテナンスまで、LAN内のブラウザだけで完結します。
特に、普段CUIに慣れていない方や、複数のサーバーを手軽に管理したい方、Linux/VPSで常設サーバーを運用したい方におすすめです。皆さんのヘッドレスサーバーライフが少しでも便利になれば幸いです。
リポジトリはこちらです。
なお、本ソフトはResoniteのヘッドレスサーバーを操作するツールです。利用にあたっては、Resoniteのガイドライン・利用規約に従ってください。ライセンスはMITです。
おすすめの記事
超簡単!GASで作る無料翻訳APIの作り方
「自分だけの翻訳APIを、無料で簡単に作れたら便利だと思いませんか? 実はGoogleアカウントさえあれば、プログラミングの経験がない方でも、意外と手軽に自作できるんですよ。外部サービスの契約やサー …
竹に穴を開けるアイテムを作った「竹あかり」
「ちょっぱや!バーチャル竹あかり」というイベントで使用された、竹あかり制作アイテムを作りました このアイテムを使うと、VR内で竹を丸鋸で切断して、ドリルを使って好きな場所に穴を開けたて、オリジナルの竹 …
高機能VR日本語キーボード「MarkNキーボード」導入・使い方【Resonite】
ResoniteではVRキーボードを好きなものに変更できるって知っていましたか? 外部でなにか導入することなくResoniteの中だけでサクッと日本語キーボードに変更できますよ! ※デスクトップモード …
MarkN流アバターセットアップ【Resonite玄人向け】
こんにちは、「まーくん。(MarkN)」です この記事は Resonite Advent Calendar 2025 の4日目の記事です Resonite玄人向けにMarkN流の軽量なアバターセットア …
AItuberKitを改造してわんコメ連携や最新モデル対応を追加しました(開発終了)
誰でも簡単にAIキャラクターとチャットできるWebアプリケーション「AItuberKit」をフォークして、いくつか便利な機能を追加しました。 使用方法は本家と同じです。 開発終了のお知らせ 本家がアッ …
合成音声Style-Bert-VITS2の学習方法
この記事では、Style-Bert-VITS2 をインストールして学習してモデルを作成するところまでを解説します。 注意事項 Windows対象 Nvidia製GPUが必要(RTXシリーズなど) 保存 …
