ブラウザーからの確認と操作
Highway Radio Receiver の画面は、受信機を動かしている機械とは別の端末(スマートフォンや別の PC)のブラウザーでも開けます。ブラウザーで開くこの画面を web console と呼びます。web console では、受信内容の確認、音声の再生、設定の変更ができます。画面の中身は、デスクトップ版のメイン画面と設定画面と同じです。
有効にする
| 版 | 有効にする方法 |
|---|---|
| デスクトップ版(macOS と Windows) | 設定画面の「ブラウザからの操作」欄で、「ブラウザからの操作を有効にする」をオンにします。既定のポートは 35263 です |
| ヘッドレス版(Linux) | 最初から有効です。既定のポートは 35263 です |
デスクトップ版では、有効にすると、開く URL が設定画面に出ます。指定したポートが使えないときは、設定画面にエラーが出て、無効のままになります。
デスクトップ版では、同じ欄の「ホスト」で、待ち受けるホストを変えられます。既定は 127.0.0.1,localhost で、この機械の中からだけ開けます。IP アドレスかホスト名を、カンマで区切って複数指定できます。0.0.0.0 にすると、この機械のすべてのアドレスで待ち受け、同じネットワークの端末から http://<この機械の IP アドレス>:35263 で開けます。LAN へ出すときは、同じネットワークの誰でも開けるので、下の Basic 認証を必ず設定してください。
デスクトップ版では、同じ欄で「ユーザー名」と「パスワード」を入れて「認証を保存」を押すと、web console に Basic 認証を掛けられます。パスワードは、アプリの設定フォルダにハッシュで保存され、画面には再表示されません。パスワードを空にして保存すると、認証を外します。ただし HTTP は暗号化されないので、パスワードを掛けても、Tailscale か SSH のポート転送と組み合わせて使ってください。
TCP で送る機能(TCP で送る)の送り先ポートの既定も 35263 です。web console を有効にした機械で、同じ機械へ TCP で送るときは、送り先に別のポートを選んでください。
届く範囲と保護
web console は、既定では受信機を動かしている機械の中(127.0.0.1)だけで待ち受けます。デスクトップ版では設定画面の「ホスト」で、ヘッドレス版では起動の引数 --host で待ち受けるホストを指定して、LAN 内へ出すこともできます(ヘッドレス版の導入)。ほかの端末からは、そのままでは届きません。
ヘッドレス版では、起動の引数 --auth ユーザー名:パスワード(または環境変数 HWR_WEB_AUTH)で、web console に Basic 認証を掛けられます。ps などでほかの人に引数を見られたくないときは、環境変数のほうを使います。ただし、web console は HTTP で動くので、パスワードも受信内容も暗号化されずに流れます。パスワードを掛けた場合も、Tailscale か SSH のポート転送と組み合わせて、通り道を暗号化してください。
別の端末から届かせる手段は、利用者が用意します。このページでは、Tailscale と SSH のポート転送の 2 つを例に挙げます。
届かせる範囲は、信頼できる端末だけにしてください。web console を開けた人は、設定の変更とライセンスの認証の解除を含む、すべての操作ができるからです。ルーターのポート開放で、インターネットへ直接出すことは避けてください。
Tailscale で開く
-
受信機を動かしている機械と、見る側の端末の両方に Tailscale を入れ、同じ tailnet に入れます。
-
受信機を動かしている機械で、次のコマンドを実行します。
tailscale serve --bg 35263 -
見る側の端末のブラウザーで、
https://<機械>.<tailnet>.ts.netを開きます。
止めるときは、次のコマンドを実行します。
tailscale serve --https=443 off
tailscale serve が届かせるのは、同じ tailnet の中だけです。tailscale funnel はインターネットへ公開するコマンドなので、web console には使わないでください。
コマンドの詳しい説明は、Tailscale の文書にあります。
SSH のポート転送で開く
受信機を動かしている機械に SSH で入れるなら、追加のソフトウェアは要りません。見る側の端末で、次のコマンドを実行します。
ssh -L 35263:127.0.0.1:35263 <機械>
接続したまま、見る側の端末のブラウザーで http://127.0.0.1:35263 を開きます。
ほかの名前で開く
web console を開けるアドレスの名前は、次の 3 種類に限っています。
localhost- IP アドレス
ts.netで終わる名前(Tailscale の名前)
限っているのは、ブラウザーで開いたほかの web ページが、利用者の知らないうちに web console へ要求を送るのを防ぐためです。自分で用意した名前(リバースプロキシに付けた名前など)で開くと、「forbidden」と表示されます。
ヘッドレス版では、起動の引数に --allow-host <名前> を足すと、その名前でも開けるようになります。--host など、すでに付けている引数は残したまま足し、起動し直します。たとえば、展開したフォルダで既定のアドレスのまま待ち受けている場合は、次の形になります。
./hwr-receiverd --allow-host receiver.example.com
receiver.example.com は、使う名前に置き換えます。
リバースプロキシを挟むときは、プロキシが Host ヘッダーを書き換えずに転送するように設定します(nginx では proxy_set_header Host $host;)。書き換えたままだと、画面は開いても、操作と受信内容の表示がすべて「forbidden」になります。
ヘッドレス版で --host に指定したホスト名は、ここへ重ねて指定しなくても許可されます。デスクトップ版には、名前を足す設定がありません。
音声を聞く
ブラウザーは、利用者が操作するまで音を出しません。web console を開いたら、音声のボタンを一度押してください。
音量とミュートは、開いている画面ごとの設定です。ほかの画面には伝わりません。
複数の画面を同時に開く
手元のウィンドウと web console、または複数の web console を、同時に開けます。片方で設定を変えると、もう片方にも反映されます。
設定画面を編集している最中に、ほかの画面で設定が変わったときは、「ほかの画面で設定が変わりました」と出ます。読み直すかどうかを、そこで選べます。
web console でできないこと
| できないこと | 代わりの方法 |
|---|---|
| フォルダとファイルを選ぶダイアログ | 受信機を動かしている機械の上のパスを入力します |
| 記録したファイル(JSONL、WAV、IQ)の取り出し | 受信機を動かしている機械の上の出力先から取ります |
| デスクトップ版のアプリの更新 | 手元のウィンドウで行います。手順は更新にあります |