janus-gatewayのインストール

Ubuntu 20.04にJanusWebRTCサーバーを入れてみる途中までの覚書。

日本語 RemixのisoをVMware仮想マシンにインストール。

Ubuntu Desktop 日本語 Remixのダウンロード | Ubuntu Japanese Team

公式ドキュメントの記載を参考。

GitHub - meetecho/janus-gateway: Janus WebRTC Server

また、次のページを参考にした。

WebRTC janus-gateway を使って自作ビデオチャットサーバーを作る。 | Flog

Janusインストール法(Ubuntu 18.04.4 Server) - Qiita

  • aptitudeではなくaptを使う
  • g++をインストールする
  • libsrtp-devはソースを取ってきてビルドする(aptパッケージが見つからない)
  • libniceをMeson、Ninjaでビルドする
  • libniceのインストールのため、meson、ninjaをsudoで利用可能にする

libniceが存在しない場合、janus-gatewayの./configureで以下のエラーが出た。

configure: error: Package requirements ("glib-2.0 >= 2.34
gio-2.0 >= 2.34
libconfig
nice
jansson >= 2.5
libssl >= 1.0.1
libcrypto
zlib") were not met:

No package 'nice' found

 libniceをインストール時、以下のエラーが出た。

$ sudo ./ninja -C ~/libnice2/ install
Traceback (most recent call last):
File "./ninja", line 5, in <module>
from ninja import ninja
ModuleNotFoundError: No module named 'ninja'

 sudoのPATHを確認

$ sudo printenv PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/snap/bin

sudoのPATHを設定するには/etc/sudoersの編集が必要

sudo時にPATHを引き継ぐ方法 - Qiita

ただし、今回はPATHは引き継がずにsudoでmeson、ninjaをインストールして解決した。

$ sudo pip3 install ninja

$ sudo pip3 install meson==0.52

 janus-gatewayの./configureでlibniceのエラーは消えたが、libsrtpのエラーが出ている状態。

configure: error: libsrtp and libsrtp2 not found. See README.md for installation instructions

 参考ページを見ながらインストールを進めてみる。

libsrtp 最新のv2.3.0をインストールして下さい

wget https://github.com/cisco/libsrtp/archive/v2.3.0.tar.gz

Data Channelsを使うためにusrsctpをインストールしましょう

git clone https://github.com/sctplab/usrsctp

 インストール後にJanusのmakeを実行すると、警告は出るけど完了した。

起動すると以下のエラーが出る状態。

/opt/janus/bin/janus: error while loading shared libraries: libnice.so.10: cannot open shared object file: No such file or directory

usrsctpの共有ライブラリが見つからない状態なので、ld.so.conf.dにインストール先の/usr/lib64を追加する。(インストール時にlibdirの指定をしなければエラーは出ないかも)

sudo echo '/usr/lib64' | sudo tee /etc/ld.so.conf.d/whatever.conf

confのファイル名はわかりやすいファイル名を付けたほうがいいんだろうけど、とりあえず参考ページのまま。

ldconfigして変更を反映後、Janusを起動。

$ /opt/janus/bin/janus
Janus commit: 4dd379ab6952ccaaa027d5c150da1fbf0fecff16
Compiled on: Mon 05 Apr 2021 12:07:30 AM JST

Logger plugins folder: /opt/janus/lib/janus/loggers
[WARN] Couldn't access logger plugins folder...
---------------------------------------------------
Starting Meetecho Janus (WebRTC Server) v0.11.1
---------------------------------------------------

Checking command line arguments...
Debug/log level is 4
Debug/log timestamps are disabled
Debug/log colors are enabled
Adding 'vmnet' to the ICE ignore list...
Using 192.168.x.x as local IP...
Token based authentication disabled
Initializing recorder code
Initializing ICE stuff (Full mode, ICE-TCP candidates disabled, half-trickle, IPv6 support disabled)
TURN REST API backend: (disabled)
[WARN] Janus is deployed on a private address (192.168.x.x) but you didn't specify any STUN server! Expect trouble if this is supposed to work over the internet and not just in a LAN...
Crypto: OpenSSL >= 1.1.0
No cert/key specified, autogenerating some...
Fingerprint of our certificate:*
Event handlers support disabled
Plugins folder: /opt/janus/lib/janus/plugins
Sessions watchdog started
Joining Janus requests handler thread
Loading plugin 'libjanus_sip.so'...
JANUS SIP plugin initialized!
Loading plugin 'libjanus_echotest.so'...
JANUS EchoTest plugin initialized!
Loading plugin 'libjanus_textroom.so'...
JANUS TextRoom plugin initialized!
Loading plugin 'libjanus_videocall.so'...
JANUS VideoCall plugin initialized!
Loading plugin 'libjanus_streaming.so'...
JANUS Streaming plugin initialized!
Loading plugin 'libjanus_audiobridge.so'...
JANUS AudioBridge plugin initialized!
Loading plugin 'libjanus_videoroom.so'...
JANUS VideoRoom plugin initialized!
Loading plugin 'libjanus_voicemail.so'...
[ERR] [plugins/janus_voicemail.c:janus_voicemail_init:355] Permission denied[WARN] The 'janus.plugin.voicemail' plugin could not be initialized
Loading plugin 'libjanus_recordplay.so'...
JANUS Record&Play plugin initialized!
Loading plugin 'libjanus_nosip.so'...
JANUS NoSIP plugin initialized!
Transport plugins folder: /opt/janus/lib/janus/transports
Loading transport plugin 'libjanus_pfunix.so'...
[WARN] No Unix Sockets server started, giving up...
[WARN] The 'janus.transport.pfunix' plugin could not be initialized
Loading transport plugin 'libjanus_http.so'...
HTTP transport timer started
HTTP webserver started (port 8088, /janus path listener)...
JANUS REST (HTTP/HTTPS) transport plugin initialized!

とりあえず起動できたっぽい。