Server setup memo for Binaurl meet
2023.01.13
JitsiからMediasoupに移行したので、以前の設定は全部Obsolete。以下Mediasoup版の話
サーバの構成
https://gyazo.com/cce435c037cffc283da5460ee5249cdf
main serverは複数のmedia serverにclientを割り当て、WebRTC接続のためのシグナリングを中継する。
client は複数の media serverとWebRTC接続し、音声映像の送受信をする。
data serverは、会場(room)を保持し、アバター(の位置や画像/文字など)やコンテンツ(ウィンドウの位置や表示するURL、文字列など)を保持、中継する。
各サーバについて
いずれも deiban linuxで動かしている。各サーバのログは /var/log/pm2/以下に作られる。
いずれも(nginxもWebsocketも) httpsの証明書が必要なので、 let's encrypt を使っている。
nodejs で動かす。.ts なので、 yarn build が必要。pm2 を使ってデーモン化している。 main はWebsocketサーバを443番ポートで動かす。
media はWebsocketクライアントなので、Websocketサーバにはならない。一方でmediasoupのサーバになる。mediasoupのサーバはUDPでポート40000-49999を使う。ファイアウォールなどのため接続できないclientも多いので、 media ではturnサーバ coturn を動かしている。
data
mainに統合した。別URLのサーバにして負荷分散してもOK。
Web server
ルーム名を binaural.me/ルーム名 で指定するために、rewrite ruleを使っている。
2023.05.27追記
Localでテストする方法
0. yarn を走らせて、パッケージの解決を済ませる。
1. bmMediasoupServerの2つのサーバをデバッグ用に起動する
$ yarn main
$ yarn media
2. Chorme に信頼できない証明書を許すように設定する
Qiitaにあるように、chrome://flags/#allow-insecure-localhost を開いて、Allow invalid certificates for resources loaded from localhost. をEnableにする。 3. binaural-meet でWebサーバとブラウザ(Chrome)を起動する。
$ yarn start
2023.07.01追記
Dev Toolsでサーバをデバッグする方法
1. サーバのPM2 で走らせるときに pm2 start src/media.js --node-args="--inspect" として、inspectを含める(main, media1, media2は済)
2. sshでローカルにトンネルさせる ssh -L 9229:localhost:9229 media1.titech.binaural.me
3. chrome://inspect/#devices をChromeで開き、Open dedicated DevTools for Node をクリックしてDevToolsを開く
4. consoleで 'producers' などとタイプすれば中身が見られる
/icons/hr.icon