オープンソースのWebRTCサーバー「PeerServer」インストール手順

# はじめに

ちょうど今日NTT ComがPeerJS互換の[SkyWay](http://nttcom.github.io/skyway/)というWebRTCプラットフォームを発表しましたね。WebRTCは盛り上がるのかもしれません。

先日書いた[WebRTCのオープンソースソフトウェアまとめ - Qiita [キータ]](http://qiita.com/atskimura/items/97b2cc04e19781f4a4e6)でPeerJSがいいんじゃない？と書いたら、NTT ComさんもPeerJSですね！

というわけで、今日は[PeerJS](http://peerjs.com/)用のオープンソースSignalingサーバー[PeerServer](https://github.com/peers/peerjs-server)のインストール手順を書いてみます。

README通りやれば入るのですが、ちょっと追加して、ビデオチャットのデモを動かして、自動起動設定するところまで書いてみます。

# インストール手順

## 前提

Ubuntu 12.04で試した手順です。

## PeerServer

aptのパッケージリストを最新にします。

```
$ sudo apt-get update
```

新しいnode.jsを入れるためにリポジトリを追加

```
$ sudo apt-get install python-software-properties
$ sudo add-apt-repository ppa:chris-lea/node.js
$ sudo apt-get update
```

gitとnodejsをインストール

```
$ sudo apt-get install git-core
$ sudo apt-get install nodejs
```

PeerServerダウンロード

```
$ cd /opt
$ git clone https://github.com/peers/peerjs-server.git
```

PeerServerの依存ライブラリインストール

```
$ cd peerjs-server
$ npm install
```

# nginx

デモを動かすためのnginxをインストール

```
$ sudo apt-get install nginx
```

# PeerJSデモの設置

PeerJSダウンロード

```
$ cd /opt
$ git clone https://github.com/peers/peerjs.git
```

videochatのデモをnginxの下に配置

```
$ cd /usr/share/nginx/www/
$ mkdir peerjs
$ cp /opt/peerjs/examples/videochat/* peerjs/
```

peer.jsをnginxの下に配置

```
$ cp /opt/peerjs/dist/peer.js peerjs/
```

以下のdiffのようにindex.htmlを修正

```
$ vim peerjs/index.html
```

```
# diff index.html /opt/peerjs/examples/videochat/index.html 
6c6
<   <script type="text/javascript" src="peer.js"></script>
---
>   <script type="text/javascript" src="/dist/peer.js"></script>
13c13
<     var peer = new Peer({host:'<IPアドレス>', port:9000, key: 'peerjs', debug: 3});
---
>     var peer = new Peer({ key: 'lwjd5qra8257b9', debug: 3});
```

## PeerServer起動

PeerServerの自動起動設定

```
$ vim /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 /opt/peerjs-server/bin/peerjs -p 9000 -k peerjs
end script
```

なお、起動コマンドオプションの`-k peerjs`はクライアントの`new Peer({host:'<IPアドレス>', port:9000, key: 'peerjs', debug: 3})`のkeyと一致していればなんでもいいです。

PeerServer起動

```
$ start peerjs
```

## ファイアウォールの設定

80番と9000番ポートを開ける

```
$ ufw allow 80
$ ufw allow 9000
```

## アクセス

`http://<IPアドレス>/peerjs/`にアクセス

![peerjs_video_chat.png](https://qiita-image-store.s3.amazonaws.com/0/27267/c76b9a47-48c5-e349-2caa-87207cf60c19.png)

**ビデオチャットできた！**

# おわりに

というわけでPeerServerを立てられたので、PeerJSを使って楽しいWebRTCアプリを作りましょう〜。
PeerJSではPeerServerのクラウド版[PeerServer Cloud](http://peerjs.com/peerserver)も提供しているので、それを使うという手もあります。

ちなみにグループビデオチャットとか作ろうとするとPeerJSは面倒だったりします。
[EasyRTC](http://easyrtc.com/)や[webRTC.io](https://github.com/webRTC/webRTC.io)はルームという概念があるけど、PeerServerにはないのでそこは他で管理しないといけなかったりします。
よかったら[WebRTCのオープンソースソフトウェアまとめ - Qiita [キータ]](http://qiita.com/atskimura/items/97b2cc04e19781f4a4e6)もご覧ください。

とまたビデオチャットのこと書いてますが、やっぱり **エンジニアはテキストコミュニケーションですよね！**
co-meetingの新しいスライド資料も公開したので見てみてください。
[プロジェクトを円滑に回す 「すごい掲示板」 - co-meeting](http://www.slideshare.net/comeeting/ss-28946057)