💻

Janus-GateWayでのWebRTCサーバー構築メモ

2024/02/21に公開

はじめに

WebRTCサーバーを構築する際のメモをここに記載する
シグナリングサーバーを立ててNat越えのためにCoTurnを...は精神崩壊するので、Janusを使う

環境構築

環境 バージョン 概要
Ubuntu 22.04 VPSかローカルの環境
Janus-GateWay 最新版 gitでcloneするため基本的に最新版

環境は上記の通りで作成可能。

今後24.04も試す予定。
転職でこれやることなくなったので、各自対応求むよ、ごめんね(24/07/30)

構築方法は参考サイトの通りだが、少し面倒

まずは以下を手順通りインストールする

apt install libmicrohttpd-dev libjansson-dev \
libssl-dev libsofia-sip-ua-dev libglib2.0-dev \
libopus-dev libogg-dev libcurl4-openssl-dev liblua5.3-dev \
libspeexdsp-dev libconfig-dev pkg-config libtool automake

libniceのインストール

libniceをgitlabから取得し、ninjaでbuildする

git clone https://gitlab.freedesktop.org/libnice/libnice
cd libnice
meson --prefix=/usr build && ninja -C build && sudo ninja -C build install

ninja buildがないときは以下でインストールすること

sudo apt install meson ninja-build

libsrtp

以下でインストール可能
v2.2.0.tar.gzとあるが2.3.0、2.6.0でも問題はない。
ただし、libwebsocketsやJanusのビルド時に何かしらのバグが発生することがあるため、
各自の判断で導入すること(確認済み)

wget https://github.com/cisco/libsrtp/archive/v2.2.0.tar.gz
tar xfv v2.2.0.tar.gz
cd libsrtp-2.2.0
./configure --prefix=/usr --enable-openssl
make shared_library && sudo make install

WebSocket

サポートしたいときはlibwebsockets入れるとJanusをbuildしたときに自動で組み込まれる。

Janusのインストール

githubからJanusのソースコードをcloneする

git clone https://github.com/meetecho/janus-gateway.git
cd janus-gateway

今までのものがちゃんとインストールされていれば、/opt/janusにインストールされる

./autogen.sh
./configure --prefix=/opt/janus
make
sudo make install

初期設定を自動生成できるため、以下を入力すること

sudo make configs

試しに起動する際は

sudo ./opt/janus/bin/janus

でサーバーが起動するはず

NginxかApacheでHTTPのサーバーを建てたら

ここではNginxやApacheの起動方法やSSL化の方法は省略する
ただ注意点としてSSL化してないと、ブラウザによっては弾かれるので
ローカル環境構築が結構面倒だと思う

Janusの設定ファイルでSSL化する
以下にJanusの各設定ファイルがある

cd /opt/janus/etc/janus

サーバーの設定値は

sudo vim janus.transport.http.jcfg
general: {
        #この辺にhttpの設定項目
        https = true         # 初期値 false
        secure_port = 8089   # コメントアウトされているので外す
}

certificates: {
        cert_pem = "[domain].pem"  # certbotなどで作成された[domain].pemに変更
        cert_key = "[domain].key"  # certbotなどで作成された[domain].keyに変更
        #この辺にcertのパスワード設定など
 }

設定後、再度以下をするとhttps化されているはず

sudo ./opt/janus/bin/janus

(おまけ)Stunは自分で建てたい

自動でStunサーバーを設定するので、自分で建てたものを使いたいとき
janus.jcfgで設定可能

cd /opt/janus/etc/janus
sudo vim janus.jcfg
nat: {
    stun_server = "turnサーバーのドメイン"
    stun_port = XXXX # turnサーバーのポート番号
    ice_tcp = true
    ice_ignore_list = "vmnet"
}

ここまでやると自分のStunサーバーでNatを越えられるようになる

参考サイト

https://www.mikan-tech.net/entry/2020/05/02/173000

https://github.com/meetecho/janus-gateway

Discussion