Isaac Sim をリモートで操作する環境を構築した話——WebRTC に詰まって NoMachine + Tailscale に落ち着くまで
はじめに
事務所に置いてある Isaac Sim マシン(Ubuntu 24)を、外出先の Mac からリモート操作したい——そんな要件から始まった構築作業の記録です。
「WebRTC でブラウザ接続できる」という情報を頼りに進めたものの、最終的には別の方法に落ち着きました。同じ構成で詰まっている方の参考になれば幸いです。
構成
- リモート先: Ubuntu 24 / NVIDIA GPU / Isaac Sim(pip インストール、conda 環境)
- 接続元: macOS
- 目標: GUI を含む Isaac Sim をリモートで操作できること
Step 1: VPN 層の選定——Tailscale に決めた理由
リモートアクセスにはまず VPN が必要です。候補を比較しました。
| 方式 | 特徴 |
|---|---|
| OpenVPN | 枯れているが設定が複雑 |
| WireGuard | 高速・軽量だがルーター設定が必要 |
| Tailscale | WireGuard ベース。アカウントだけで即使える |
Tailscale を選んだ決め手は「固定 IP 不要」「NAT 越え自動」「セットアップが数分で終わる」の3点です。
仕組みとしては、各デバイスが Tailscale のコーディネーションサーバーに公開鍵を登録し、デバイス同士が WireGuard で直接 P2P 接続します。通信データ自体は Tailscale のサーバーを通りません。
# Ubuntu 側(公式インストールスクリプト)
curl -fsSL https://tailscale.com/install.sh | sh
sudo tailscale up
注意:
curl | sh形式のスクリプトは実行前に内容を確認する習慣をつけるのが安全です。公式サイト(tailscale.com/download)からパッケージを直接ダウンロードする方法もあります。
# Mac 側(Homebrew でインストール後、サービスを起動)
brew install tailscale
brew services start tailscale
tailscale up
Mac App Store 版または tailscale.com からの dmg 版を使う場合は、アプリを起動してログインするだけで完了です。
同じアカウントでログインするだけで、100.64.x.x 系の仮想 IP が割り当てられ、インターネット越しに同じ LAN にいるように見えます。
Step 2: Isaac Sim の WebRTC ストリーミングを試みる
Isaac Sim(Kit ベース)には WebRTC ストリーミング機能が内蔵されており、ブラウザから接続できると思っていました。
2-1. kit ファイルを探す
pip インストール版では起動スクリプトが isaacsim コマンドになっており、kit ファイルを明示する必要があります。
find ~/miniconda3/envs/env_isaacsim -name "*.kit" 2>/dev/null
ストリーミング関連として見つかったのは1つ:
isaacsim.exp.full.streaming.kit
2-2. 起動してみると……NVCF 向けだった
isaacsim --experience /path/to/isaacsim.exp.full.streaming.kit
ポート 8011 でサーバーが起動し、ブラウザでアクセスすると {"detail":"Not Found"}。/docs を開いたところ、Kit services core という FastAPI ベースの REST API サーバーでした。
これは NVIDIA Cloud Functions(NVCF)向けのサービス API であり、ブラウザで視聴するものではありませんでした。
2-3. WebRTC 拡張を直接有効化してみる
find ~/miniconda3/envs/env_isaacsim -name "*webrtc*" 2>/dev/null
omni.kit.livestream.webrtc 拡張が存在したので、--enable フラグで追加してみました。
isaacsim \
--experience /path/to/isaacsim.exp.full.kit \
--enable omni.kit.livestream.webrtc \
--/app/streaming/enabled=1
ポート 49100 が新たに開きましたが、ブラウザでアクセスすると 501 エラー。UDP ポートも開かず、WebRTC メディアストリームが動いていない状態でした。
2-4. 結論:このバージョンの WebRTC は Mac 非対応
調査の結果、omni.kit.livestream.webrtc は Omniverse Streaming Client(NVIDIA 公式のデスクトップクライアント)向けであり、Windows・Linux のみ対応。Mac からのブラウザ接続には対応していないことが分かりました。
Step 3: NoMachine + Tailscale に切り替え
GPU アプリのリモートデスクトップとして、NoMachine を選択しました。
NoMachine を選んだ理由
| ツール | Mac 対応 | GPU 描画 | 手軽さ |
|---|---|---|---|
| NoMachine | ○ | ◎ | ◎ |
| NICE DCV | ○ | ◎ | △(設定複雑) |
| VNC | ○ | △ | ◎ |
Ubuntu 側のセットアップ
# nomachine.com から .deb をダウンロード
sudo dpkg -i nomachine_*.deb
sudo systemctl enable nxserver
sudo systemctl start nxserver
Mac 側のセットアップ
nomachine.com から macOS 用クライアントをダウンロード・インストール。
接続
NoMachine を起動 → New → Protocol: NX / Host: <Ubuntu の Tailscale IP(100.64.x.x)> / Port: 4000 → Ubuntu のユーザー名・パスワードでログイン。
Isaac Sim の GUI がそのまま操作できる状態になりました。
セキュリティ上のポイント: Tailscale 経由で接続するため、NoMachine のポート 4000 をインターネットに公開する必要はありません。Ubuntu のファイアウォールはデフォルト(ポート 4000 は LAN または Tailscale ネットワーク内のみ許可)のままで問題ありません。
最終的な構成
[Mac]
↓ Tailscale(WireGuard P2P 暗号化)
[Ubuntu 24 / Isaac Sim マシン]
↓ NoMachine(GPU レンダリング転送)
[Isaac Sim GUI]
ローカルネットワークでも Tailscale 経由でも同じ手順で接続できます。出張中でも自宅からでも、Isaac Sim を手元の Mac で操作できるようになりました。
まとめ
| 項目 | 結果 |
|---|---|
| Isaac Sim WebRTC(ブラウザ) | Mac 非対応・断念 |
| NoMachine | 動作確認済み ✓ |
| Tailscale | 動作確認済み ✓ |
Isaac Sim の WebRTC ストリーミングはバージョンや用途によって挙動が大きく異なります。pip インストール版では「ブラウザで見られる」という前提が成立しないケースがあるため注意が必要です。
同じ構成で試している方の参考になれば幸いです。
