概要
- サーバーはConoHaを使用。
- OSはUbuntu 14.04 LTS (64bit)
stun/turnサーバーのインストール
依存関係にあるパッケージをインストールする。
$ sudo apt-get install libevent-core-2.0-5 libevent-extra-2.0-5 libevent-openssl-2.0-5 libevent-pthreads-2.0-5 libhiredis0.10 libmysqlclient18 libpq5 mysql-common
インストール
/turnserverで最新のturnサーバーを探す。このエントリを書いているときの最新はv4.3.3.1だったので、その中からUbuntu用のパッケージを適当なディレクトリにダウンロード。
$ wget http://coturn.net/turnserver/v4.3.3.1/turnserver-4.3.3.1-debian-wheezy-ubuntu-mint-x86-64bits.tar.gz
解凍してインストール。
$ tar xvzf turnserver-4.3.3.1-debian-wheezy-ubuntu-mint-x86-64bits.tar.gz
$ dpkg -i coturn_4.3.3.1-1_amd64.deb
設定
/etc/default/coturn
を編集。
#
# Uncomment it if you want to have the turnserver running as
# an automatic system service daemon
#
TURNSERVER_ENABLED=1
TURNSERVER_ENABLED=1
の行の先頭の#
を消して有効にします。
/etc/turnserver.conf
を設定
ここでConoHaに立てたサーバーのIPアドレスは1.2.3.4
だとする。
listening-ip=1.2.3.4
relay-ip=1.2.3.4
fingerprint
lt-cred-mech
realm=hogehoge.co.jp
syslog
上記設定にするとログはsyslogに吐き出されるようになる。
ユーザー管理
ユーザーは下記のようにして追加
$ sudo turnadmin -a -u <ユーザ名> -r <realm> -p <パスワード>
例
$ sudo turnadmin -a -u myname -r hogehoge.co.jp -p mypass
起動と停止
起動
$ sudo /etc/init.d/coturn start
停止
$ sudo /etc/init.d/coturn stop
以上でstun/turnサーバーのセットアップは終了。
peerjs-serverのインストール
nodeのインストール
Ubuntuのaptからインストールするとnodejs
というコマンド名になってしまうので、node
という別名を持たせる。
$ sudo apt-get install nodejs npm
$ sudo update-alternatives --install /usr/bin/node node /usr/bin/nodejs 10
peerjs-serverのインストール
peerjs-serverはnpmではpeer
という名前らしい。
$ sudo npm -g install peer
試しに起動してみる。
$ /usr/local/bin/peer --port 9000 --key mykey --path /webrtc
フォアグラウンドで起動したらおk。一旦Ctrl-C
で停止
サービスに登録する。以下のファイルを新規作成。
description "PeerJS Server"
author "co-meeting Inc."
# Saves log to /var/log/upstart/peerjs.log
console log
# Starts only after drives are mounted.
start on started mountall
stop on shutdown
# Automatically Respawn. But fail permanently if it respawns 10 times in 5 seconds:
respawn
respawn limit 10 5
script
exec node /usr/local/bin/peerjs -p 9000 -k mykey --path /webrtc
end script
起動オプションに -k mykey
と--path /webrtc
を設定しているので、クライアント側でキーとパスの設定をするときにこれらを設定する。
起動と停止
起動
$ sudo start peer
停止
$ sudo stop peer
Webアプリケーションの用意
peerjs
にはサンプルのwebアプリがあるので、Webサーバーにnginxをセットアップし、そのサンプルアプリを使えるようにする。
$ sudo apt-get install nginx
peerjsをclone(gitがはいっていない場合はapt-get install git
しておく)
$ cd ~/src
$ git clone https://github.com/peers/peerjs.git
サンプルをnginxの公開ディレクトリにコピーする。
$ cd /usr/share/nginx/html
$ sudo cp ~/src/peerjs/examples/videochat ./peerjs
$ sudo cp ~/src/peerjs/dist ./
コピーしてきたpeerjs/index.html
を編集。
// PeerJS object
var peer = new Peer({ host: '1.2.3.4', port: 9000,
key: 'mykey', path: '/webrtc', debug: 3,
config: {'iceServers': [
{ url: 'stun:1.2.3.4:3478' },
{ url: 'turn:myname@1.2.3.4:3478', credential: 'mypass' }]}
});
以上でブラウザからhttp://1.2.3.4/peerjs/index.html
(1.2.3.4は自身のサーバーアドレス)にんアクセスする。
ちなみに家にはPC1台なので、この時点でまだ通話試せてない。明日か明後日ためします。
動作確認できました!
補足:iOSアプリからのアクセス
iOSのSafariはWebRTCをサポートしていませんが、googleからiOS向けのライブラリおよびサンプルアプリが提供されている。
詳しくはHow to get started with WebRTC and iOS without wasting 10 hours of your lifeを参照。
このへんはまた別にまとめる。
参考サイト
オープンソースのWebRTCサーバー「PeerServer」インストール手順
AWS-EC2上に自分用のSTUNサーバを立てる話