LoginSignup
30
30

More than 5 years have passed since last update.

WebRTCでビデオ通話するためにpeerjs-serverをインストールした時のメモ

Last updated at Posted at 2014-12-25

概要

  • サーバーは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だとする。

/etc/turnserver.conf
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で停止

サービスに登録する。以下のファイルを新規作成。

/etc/init/peerjs.conf
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を編集。

/usr/share/nginx/html/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サーバを立てる話

30
30
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
30
30