PeerCastをVPSにインストールして視聴する方法

# この記事は
PeerCastという動画配信プログラムをどこでも使えるようにするため、安価なVPSに乗っけてしまおうという話です。
以下の記事に触発されてやってみたメモです。
２番煎じですので、以下の記事をみてやっていただく方がいいです。

> VPSを利用してPeerCast視聴環境をつくる
> http://blog.contee.net/blog/2014/12/08/conoha-pecalis/

上の記事と異なる点は、GUI環境を一切かませず、CUIだけで完結をさせています。

# 前置き
PeerCastの簡単な仕組みですが、配信者も視聴者もPeerCastというプログラムをインストールして、P2Pのノードになります。そして、「配信→視聴者→視聴者」のようにリレーをしながらデータ転送を行います。（※この時帯域が大きい人などは、複数のノードに対してリレーを行う場合もあります。）したがってリレーの上流の人が切れると下の視聴者は、再接続を行います。
すごく厨二心をくすぐる仕組みですが、視聴者もポート開放を行う必要があるので、どこでも視聴環境を整えられるわけではありません。例えば会社の昼休みにちょっと見たい時などにはポート開放なんて不可能なので見れません。そんな時にVPS上にPeerCastを置いておけば、見れるようになります！

詳しくはWikiへ
> http://ja.wikipedia.org/wiki/PeerCast


# 環境
* さくらVPS 1Gプラン
* CentOS 7

# 手順
0. ポート開放
1. monoのインストール（.Net Frameworkの移植）
2. PeerCastStationのインストール
3. 外部から接続できるように設定変更
4. 動作確認

# 0. ポート開放
CentOS 7でのポート開放は、これまでのiptablesとやり方が異なるので、ざっくりメモ程度に。
firewalldの有効化
`# systemctl enable firewalld`
peercastのサービス定義
`# vi /usr/lib/firewalld/service/peercast.xml`

```xml:peercast.xml
<?xml version="1.0" encoding="utf-8"?>
<service>
  <short>PeerCast</short>
  <description>PeerCast</description>
  <port protocol="tcp" port="7144"/>
</service>
```
zone設定の変更（zoneファイルは読み替えてください）
`# vi /etc/firewalld/zones/public.xml`

```
<service name="peercast"/>
```
これを追加

再起動して設定完了
`# systemctl restart firewalld`

# 1. monoのインストール（.Net Frameworkの移植）
こちらの記事内の内容を参考にしてインストール
> 関連：VPSを利用してPeerCast視聴環境をつくる
> http://blog.contee.net/blog/2014/12/08/conoha-pecalis/

```
# cd /etc/yum.repos.d/
# wget http://download.opensuse.org/repositories/home:tpokorra:mono/CentOS_CentOS-7/home:tpokorra:mono.repo
# yum -y install mono-opt mono-opt-devel mono-libgdiplus-opt
# cd /opt/mono/etc/mono
# cp config __config
# vi config

<dllmap dll="gdiplus" target="/opt/mono/lib/libgdiplus.so" os="!windows"/>
<dllmap dll="gdiplus.dll" target="/opt/mono/lib/libgdiplus.so"  os="!windows"/>
<dllmap dll="gdi32" target="/opt/mono/lib/libgdiplus.so" os="!windows"/>
<dllmap dll="gdi32.dll" target="/opt/mono/lib/libgdiplus.so" os="!windows"/>

```

2. PeerCastStationのインストール
PeerCastの本家はいつの間にか閉鎖されているようなので、PeerCastStationという後継ソフトを使います
> PeerCastStation
> http://www.pecastation.org/

```
$ cd
$ wget http://www.pecastation.org/files/PeerCastStation-1.8.0.zip
$ unzip PeerCastStation-1.8.0.zip
```
※バージョンは最新版で読み替えてください。

起動
適当にshellとかにすると良いと思います。
`/opt/mono/env.sh && nohup /opt/mono/bin/mono ~/PeerCastStation-1.8.0/PeerCastStation.exe &`

PeerCastStationはmonoで実行した場合、ブラウザUIをサポートしていますので、ローカルにインストールするような場合には、`http://localhost:7144/`で管理画面へアクセスすることが可能です。

# 3. 外部から接続できるように設定変更
これで、http://[vpsのip]:7144にアクセスしても何も見れません。
PeerCastStationの設定を変更して、外部からアクセスを許可する必要があります。
が、CUI命なので、一旦sshでトンネルを掘ります。

`$ ssh -L 7144:localhost:7144 hogehoge`

さすれば、`http://localhost:7144`で管理画面が開くはずです。

設定タブを開いて、WANの接続許可を以下のように変更してください。
![スクリーンショット 2015-04-25 2.24.23.png](https://qiita-image-store.s3.amazonaws.com/0/15678/6eeee2f7-80cb-8c26-8447-1d685450bc3e.png)
スクショでは見えませんが、ポート開放確認ボタンもあるので、一度ポチっとテストしておくと良いです。

また、少し下にある、上り帯域計測も行ってください。
![スクリーンショット 2015-04-25 2.24.36.png](https://qiita-image-store.s3.amazonaws.com/0/15678/68397039-3806-c323-e119-d03b9dd1154c.png)

特に保存ボタンはないので、完了です。
最後に、http://[vpsのip]:7144に接続をして、認証画面が出て来れば成功です。
上のポート一覧に載っている認証IDとパスワードを使用してログインをしてみてください。

# 4. 動作確認
ここで一旦動作確認をしましょう。
PeerCastで配信されている放送はYellowPage(以下YP)と呼ばれるページに載っています。
いくつかあるのですが、
> TP
> http://temp.orz.hm/yp/

> SP
> http://bayonet.ddo.jp/sp/
この二つを抑えておけば、ほとんどです。

意気揚々と、Playボタンを押しても、404です。
このPlayボタンはlocalhostのPeerCastに接続するためうまくいきません。
なので、Playボタンを右クリックしてリンクをコピーし、localhostの部分をVPSのIPに書き換えてアクセスをすると、なにやら再生ファイル（asfかm3u）が落ちてくると思います。

このファイルをVLCPlayerで開くと再生が始まるはずです。
PeerCastStationの管理画面でリレータブを開くと、該当の配信が載っていると思います。
ここで、自分の下にぶら下がっている人を確認したりできます。

VPSの運営会社の方には悪いですが、回線が太くて安定して、PCを落とすことから開放されるため、リレーに最適とも言えます。

毎回書き換えるのはめんどくさいので、そのうちChromeExtensionを作ると思います。多分。

プログラミング配信したいなーニコニコは怖いなーPeerCastってまだいきてんのかなー？
から、謎な方向に調べた副産物です。
次はMacでの配信方法についてまとめたいと思います。