Ubuntu環境においてWebRTC用のTURNサーバーを構築するための手順を記述する。
事前確認
gccがインストールされているか確認する。
which gcc
SSL証明書の生成
opensslを使用して、自己署名証明書を生成する。
sudo apt install openssl-libs
openssl req -x509 -newkey rsa:2048 -keyout /etc/turn_server_pkey.pem -out /etc/turn_server_cert.pem -days 99999 -nodes
証明書の作成过程中では、特に設定せずにEnterキーを押下して進める。
libeventのインストール
libeventをソースコードからビルドしてインストールする。
wget --no-check-certificate https://github.com/libevent/libevent/releases/download/release-2.1.12-stable/libevent-2.1.12-stable.tar.gz
tar -zxvf libevent-2.1.12-stable.tar.gz
cd libevent-2.1.12-stable/
./configure
make
make install
coturnのインストール
coturnプロジェクトのページからアーカイブを取得し、ビルドを行う。
wget --no-check-certificate https://github.com/coturn/coturn/archive/4.5.1.1.tar.gz
tar -zxvf 4.5.1.1.tar.gz
cd coturn-4.5.1.1
./configure
make
make install
用户的作成
turnadminコマンドを使用して、TURNサーバーにアクセスするための認証情報を生成する。
turnadmin -a -u adminuser -p securepass -r realm.example.com
設定ファイルの準備
設定ファイルのサンプルをコピーして編集する。
cd /usr/local/etc
cp turnserver.conf.default turnserver.conf
ネットワーク設定の確認
現在のIP地址を確認する。
ip addr show
設定ファイルの編集
turnserver.confファイルを以下のように編集する。
vim turnserver.conf
relay-device=eth0
listening-ip=192.168.1.100
external-ip=203.0.113.50
user=adminuser:securepass
realm=realm.example.com
listening-port=3478
cli-password=admincli
cert=/etc/turn_server_cert.pem
pkey=/etc/turn_server_pkey.pem
各パラメータの説明:
relay-device: ネットワークインターフェースの名稱listening-ip: サーバー内のローカルIPアドレスexternal-ip: インターネットに公開されているIPアドレスuser: IceServer作成時に使用するユーザー名とパスワードrealm: turnadminでユーザーを作成した際に指定したrealmと一致させるcli-password: コマンドラインインターフェースのパスワード設定
ファイアウォールの設定
TURNサーバーが使用するポートをファイアウォールで開放する。
sudo ufw allow 3478/tcp
sudo ufw allow 3478/udp
coturnの起動
foregroundモードで起動して動作確認を行う。
turnserver -a -f -r realm.example.com
正常に起動ことが確認出来后、バックグラウンドで実行する。
turnserver -a -o -f -r realm.example.com
動作確認
WebRTCのICE接続性をテストするには、公式のテストページにアクセスする。
https://webrtc.github.io/samples/src/content/peerconnection/trickle-ice/
テストページの手順に従い、STUNまたはTURNサーバーを追加して接続性を検証する。