【ownCloud と連携】Raspberry Pi に BitTorrent Sync 最新版 をインストールする方法

## はじめに
前に [ownCloud と BitTorrent Sync を組み合わせて Dropbox 風のストレージを構築する記事](http://qiita.com/ukatawagatik/items/a7a43835f9c56525e8d3) を書きましたが，BitTorrent Sync のバージョンが古かった（1.4）ので，今回は Raspberry Pi（Raspbian） に BitTorrent Sync 最新版をインストールして ownCloud と組み合わせる方法を書きたいと思います．おそらく，ARM ベースの Debian/Ubuntu であれば Raspbian でなくとも同じ手順で出来ます．

また，現在（2015/04/16）BitTorrent Sync の最新バージョンは 2.0 となっており，今後もバージョンアップが予想されるためそれに対応できるようにもしたいと思います．

# 1. BitTorrent Sync のダウンロード
Raspberry Pi に Linux/ARM の最新版ダウンロードします．
以下のコマンドで出来ない場合は [公式HP](https://www.getsync.com/intl/ja/platforms/desktop) からダウンロードしてください（作業ディレクトリはホームとします）．

```bash
pi@raspberrypi ~ $ wget https://download-cdn.getsyncapp.com/stable/linux-arm/BitTorrent-Sync_arm.tar.gz
```

# 2. アーカイブファイルの解凍
ダウンロードされたファイルは tar.gz で圧縮されているため解凍します．

```bash
pi@raspberrypi ~ $ tar -xvf BitTorrent-Sync_arm.tar.gz
```

# 3. アプリディレクトリを作成する
どこでもいいですが，解凍して出てきたファイルを置いておくディレクトリを作成します．
ここでは /etc/btsync/ にします．また，バイナリファイル（btsync）も同時に移動します．

```bash
pi@raspberrypi ~ $ sudo mkdir /etc/btsync
pi@raspberrypi ~ $ sudo mv btsync /etc/btsync/
```

# 4. 設定ファイルを作成する
アプリディレクトリに BitTorrent Sync の設定ファイルを適当なエディタで作成します．
ここでは WebUI を外部から使用できるようにすること，その際には https を使うこと，またサーバ証明書は nginx（ownCloud の構築に使用した Web サーバ）と同じものを使用することを記載しています．
この設定を用いる場合は以下のことに気をつけてください．

* nginx で使用するサーバ証明書のアクセス権限を **644** に変更する
* Web UI で使用する 8888 と，ファイル同期に使用する 55555 ポートを開放する

```bash
pi@raspberrypi ~ $ sudo nano /etc/btsync/btsync.conf
```

```bash:/etc/btsync/btsync.conf
{
  "device_name": "pi",
  "listening_port" : 55555, // listening port
  "use_upnp" : true,
  "download_limit" : 0,
  "upload_limit" : 0,
  "webui" :
  {
    "listen" : "0.0.0.0:8888"
    ,"force_https" : true
    ,"ssl_certificate" : "/etc/nginx/cert.pem"
    ,"ssl_private_key" : "/etc/nginx/cert.key"
  }
}
```

# 5. BitTorrent Sync の所有者とパーミッションを変更する
BitTorrent Sync と ownCloud と組み合わせるためには ownCloud を公開している Web サーバと同じ所有者（あるいはグループ）で BitTorrent Sync のデーモンを動かしてやる必要があります．そのために必要なことの一つとして，各ファイルの所有者およびパーミッションを変更します．

```bash
pi@raspberrypi ~ $ sudo chown -R www-data:www-data /etc/btsync
pi@raspberrypi ~ $ sudo chmod -R 755 /etc/btsync
```

# 6. サービスの登録
BitTorrent Sync をサービスとして動作させるための設定を行います．
設定ファイルの書き方がこれでいいのかちょっと自信ないのですが動いているのでよしとします（＾ω＾;;;）
ポイントは Web サーバと同じユーザでデーモンを実行すること（ここでは www-data），
ownCloud（WebDAV）とデータを共有するため，UMASK（007 か 077）をかけることです．
また先ほど作成した BitTorrent Sync の設定ファイルも起動時に読み取るようにします．

```bash
pi@raspberrypi ~ $ sudo nano /etc/init.d/btsync
```

```bash:/etc/init.d/btsync
#! /bin/sh
NAME=btsync
USER=www-data
GROUP=www-data
UMASK=007
DAEMON=/etc/btsync/btsync
CONFFILE=/etc/btsync/btsync.conf
DAEMON_ARGS="--config $CONFFILE"
SCRIPTNAME=/etc/init.d/$NAME

do_start()
{
   start-stop-daemon --start -c $USER:$GROUP -k $UMASK --exec $DAEMON -- $DAEMON_ARGS
}

do_stop()
{
   start-stop-daemon --stop --quiet --retry=TERM/30/KILL/5 --exec $DAEMON
}

case "$1" in
  start)
        do_start
        ;;
  stop)
        do_stop
        ;;
  restart)
        do_stop
        do_start
        ;;
  *)
        echo "Usage: $SCRIPTNAME {start|stop|restart}" >&2
        exit 3
        ;;
esac

:
```

設定ファイルを保存したらパーミッションを変更して，サービスとして登録しましょう．

```bash
pi@raspberrypi ~ $ sudo chmod 755 /etc/init.d/btsync
pi@raspberrypi ~ $ sudo update-rc.d btsync defaults
```

# 7. 動かす
あとはサービスをスタートしてやれば動きます．

```bash
pi@raspberrypi ~ $ sudo service btsync start
```
ownCloud との共有の仕方や BitTorrent Sync の設定の仕方は [前回の記事](http://qiita.com/ukatawagatik/items/a7a43835f9c56525e8d3) 等を参照してもらえたらと思います．
お疲れ様でした．

# 8. アップデート方法
BitTorrent Sync がアップデートされた場合は新たにバイナリファイルをダウンロードして，**所有者・パーミッションを書き換えてから** 古いファイルと置換してやればよいです．