Apache OpenMeetings 5.0.0-M1 と 4.0.8 その5

の続き

の設定編

どうも WebRCT 版を安定した状態で動かすことができない…
しらべたら、 TURN の設定が無いと 30% 程度しか動かないのではないか?の様な記事を見付けた気がする
何処の記事か忘れてしまった ^^
Stack Overflow かな….

で、 STUN と TURN を動かしてみようかな?と思って設定してみました

一応、社内はブリッジで接続されていてファイアーウォール越しの接続ではないので必要無いのかも?なんて考えて、フリーの STUN のサーバー設定だけで済ませてしまいました

夜間にしか動かないサーバーがあるので、会議用のシステムと空き時間の相性が良いかな?と思い、利用する事にしました
172.16.XXX.37 は夜間サーバで 172.16.XXX.38 が Ubuntu の OpenMeetings & Kurento Media Server です

Ubuntu 18.04.2 LTS で、パッケージを探したら、coturn と言うものがあるらしいです

user@user:~$ apt-cache search coturn
coturn - TURN and STUN server for VoIP
user@user:~$

インストールは aptitude で行いました

問題は設定で、結構難儀しました
coturn の設定は多分難しくないんだと思いますけど、KMS と絡むと動作確認とか少し面倒でした

設定は /etc/turnserver.conf です

デフォルトではすべてコメントアウト状態で設定した項目はこんな感じです
listening-port=3478
listening-ip=172.16.XXX.37
realm=OpenMeetings
userdb=/var/lib/turn/turndb
no-tls
no-dtls
log-file=/var/tmp/turn.log
cli-port=5766
cli-password=$5$79a316b350311570$81df9cfb9af7f5e5a76eada31e7097b663a0670f99a3c07ded3f1c8e59c5658a

これであっているかは不明
SSH での接続は、今は考えていません
レルムはここで設定しておかないと、KMS とあっていないとログにワーニングが残るみたいなので設定してみました
そんなに大量の情報を扱うわけじゃ無いと思うので SQLite3 にしてみました

cli の設定は、CLI 版のチェックツールがあって動作確認のためだったんだけど、記録するのを忘れてしまった!
痛恨のミス!
※ この CLI ツールが動いたときに、脳内に報酬系の物質が大量に放出されたのだけは覚えてます ^^b

ユーザーの追加
turnadmin -a -u turn -p PASSWORD -r openmeetings -b /var/lib/turn/turndb
このアカウントを KMS に設定します

これは、SQLite3 形式なので、sqlite3 で確認可能

user@user:/var/lib/turn$ sudo sqlite3 turndb
SQLite version 3.22.0 2018-01-22 18:45:57
Enter ".help" for usage hints.
sqlite> .tables
admin_user oauth_key turn_secret
allowed_peer_ip turn_origin_to_realm turnusers_lt
denied_peer_ip turn_realm_option
sqlite> SELECT * FROM turnusers_lt;
openmeetings|turn|029ce3c3f2838813296076f9329b1f71
sqlite> .q
user@user:/var/lib/turn$

登録できた様子です
そして、動作してると思われるログ

1: log file opened: /var/tmp/turn_2019-06-21.log
0: pid file created: /var/run/turnserver.pid
1: IO method (main listener thread): epoll (with changelist)
1: WARNING: I cannot support STUN CHANGE_REQUEST functionality because only one IP address is provided
1: Wait for relay ports initialization...
1: relay 172.16.XXX.37 initialization...
1: relay 172.16.XXX.37 initialization done
1: Relay ports initialization done
1: IO method (general relay thread): epoll (with changelist)
1: turn server id=1 created
1: IO method (general relay thread): epoll (with changelist)
1: turn server id=0 created
1: IPv4. UDP listener opened on: 172.16.XXX.37:3478
1: Total General servers: 2
1: IO method (auth thread): epoll (with changelist)
1: IO method (auth thread): epoll (with changelist)
1: IO method (admin thread): epoll (with changelist)
1: IPv4. CLI listener opened on : 127.0.0.1:5766
1: IPv4. SCTP listener opened on : 172.16.XXX.37:3478
1: IPv4. TCP listener opened on : 172.16.XXX.37:3478
1: IPv4. TCP listener opened on : 172.16.XXX.37:3478
1: SQLite DB connection success: /var/lib/turn/turndb
3591: IPv4. tcp or tls connected to: 172.16.XXX.37:45118
3591: IPv4. Local relay addr: 172.16.XXX.37:50156


一行、警告がありますが、CHANGE_REQUEST に IP アドレスが一つも無いと言う意味だと思います
turnserver.conf の aux-server の項目に CHANGE_REQUEST の説明がありますので、その項目だと思います
ですが、他に接続するサーバもないので放置します

user@user:/var/tmp$ turnutils_uclient -t -p 3478 -u turn -w PASSWORD 172.16.XXX.37
0: Total connect time is 1
0: start_mclient: msz=2, tot_send_msgs=0, tot_recv_msgs=0, tot_send_bytes ~ 0, tot_recv_bytes ~ 0
1: start_mclient: msz=2, tot_send_msgs=0, tot_recv_msgs=0, tot_send_bytes ~ 0, tot_recv_bytes ~ 0
2: start_mclient: msz=2, tot_send_msgs=5, tot_recv_msgs=0, tot_send_bytes ~ 500, tot_recv_bytes ~ 0
3: start_mclient: msz=2, tot_send_msgs=5, tot_recv_msgs=0, tot_send_bytes ~ 500, tot_recv_bytes ~ 0
4: start_mclient: msz=2, tot_send_msgs=5, tot_recv_msgs=0, tot_send_bytes ~ 500, tot_recv_bytes ~ 0
5: start_mclient: msz=2, tot_send_msgs=5, tot_recv_msgs=0, tot_send_bytes ~ 500, tot_recv_bytes ~ 0
6: start_mclient: msz=2, tot_send_msgs=10, tot_recv_msgs=0, tot_send_bytes ~ 1000, tot_recv_bytes ~ 0
7: start_mclient: msz=2, tot_send_msgs=10, tot_recv_msgs=0, tot_send_bytes ~ 1000, tot_recv_bytes ~ 0
7: start_mclient: msz=2, tot_send_msgs=10, tot_recv_msgs=0, tot_send_bytes ~ 1000, tot_recv_bytes ~ 0
9: start_mclient: msz=2, tot_send_msgs=10, tot_recv_msgs=0, tot_send_bytes ~ 1000, tot_recv_bytes ~ 0
10: start_mclient: msz=2, tot_send_msgs=10, tot_recv_msgs=0, tot_send_bytes ~ 1000, tot_recv_bytes ~ 0
11: start_mclient: msz=2, tot_send_msgs=10, tot_recv_msgs=0, tot_send_bytes ~ 1000, tot_recv_bytes ~ 0
12: start_mclient: msz=1, tot_send_msgs=10, tot_recv_msgs=0, tot_send_bytes ~ 1000, tot_recv_bytes ~ 0
13: start_mclient: msz=1, tot_send_msgs=10, tot_recv_msgs=0, tot_send_bytes ~ 1000, tot_recv_bytes ~ 0
14: start_mclient: msz=1, tot_send_msgs=10, tot_recv_msgs=0, tot_send_bytes ~ 1000, tot_recv_bytes ~ 0
15: start_mclient: msz=1, tot_send_msgs=10, tot_recv_msgs=0, tot_send_bytes ~ 1000, tot_recv_bytes ~ 0
15: start_mclient: tot_send_msgs=10, tot_recv_msgs=0
15: start_mclient: tot_send_bytes ~ 1000, tot_recv_bytes ~ 0
15: Total transmit time is 15
15: Total lost packets 10 (100.000000%), total send dropped 0 (0.000000%)
15: Average round trip delay 0.000000 ms; min = 4294967295 ms, max = 0 ms
15: Average jitter -nan ms; min = 4294967295 ms, max = 0 ms
user@user:/var/tmp$

多分、ログなどを確認してみた限り動いてるんだと思います

KSM 編

WebRtcEndpoint.conf.ini に TURN の設定をします

turnURL=turn:PASSWORD@172.16.XXX.37:3478
stunServerAddress=172.16.XXX.37
stunServerPort=3478

こんな感じで行けると思います
注意点として、emacs でファイルを修正すると ~ でバックアップを作ってくれますけど、
KMS のログに警告がでますので消しておきましょう!

WebRTC 版の OpenMeetings から会議室に入室して映像を起動すると、こんな感じで coturn のログが追加されます
5016: handle_udp_packet: New UDP endpoint: local addr 172.16.XXX.37:3478, remote addr 172.16.XXX.38:52257
5016: session 000000000000000003: realm user <>: incoming packet OLD BINDING processed, success
5016: handle_udp_packet: New UDP endpoint: local addr 172.16.XXX.37:3478, remote addr 172.16.XXX.38:4268
5016: IPv4. Local relay addr: 172.16.XXX.37:50113
5016: session 001000000000000002: realm user <>: incoming packet OLD BINDING processed, success
5016: session 000000000000000003: new, realm=, username=<>, lifetime=600
5016: session 000000000000000003: realm user <>: incoming packet ALLOCATE processed, success
5016: IPv4. Local relay addr: 172.16.XXX.37:52550
5016: session 001000000000000002: new, realm=, username=<>, lifetime=600
5016: session 001000000000000002: realm user <>: incoming packet ALLOCATE processed, success
5016: session 000000000000000003: realm user <>: incoming packet BINDING processed, success
5016: session 001000000000000002: realm user <>: incoming packet BINDING processed, success
5016: session 000000000000000003: realm user <>: incoming packet ALLOCATE processed, success
5016: session 001000000000000002: realm user <>: incoming packet OLD BINDING processed, success
5016: session 001000000000000002: realm user <>: incoming packet ALLOCATE processed, success
5016: session 000000000000000003: realm user <>: incoming packet ALLOCATE processed, success
5016: session 001000000000000002: realm user <>: incoming packet OLD BINDING processed, success
5016: session 001000000000000002: realm user <>: incoming packet ALLOCATE processed, success

172.16.XXX.38 が OpenMeetings のサーバーですので、接続は問題ないんだと思います

TURN 編のまとめ

多分、STUN/TURN の設定は良いんだと思います

ですが、Flash 版の様に上手く動作しません
Flash 版はキチンとカメラ映像付きで動きますが、WebRTC 版は上手く映像を表示できません
自分の分を表示するのはモンダインは無い様ですが、後から会議室に入ってきたユーザーの表示を落としたりします
各端末とも、自分以外の映像や音声が再生できていないようです

う~ん

Flash 版は、FireFox で接続すると面倒なので、WebRTC 版で使いたいんだけどなぁ…
Flash 版は、ブラウザー選ぶみたいで IE と Edge はなんか上手く繋がらない感じ…
WebRTC 版もそんな感じかな…?

もうちょっと調べないと…

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です