序章

サーバーとローカルマシン間でファイルとディレクトリを同期することは、ネットワーク化されたコンピューターを扱う場合の非常に一般的な要件です。 ディレクトリの内容を自動的に同期する1つの方法は、 BitTorrentSyncと呼ばれるテクノロジーを使用することです。 このソフトウェアは、同期ツールとしてファイル共有に一般的に使用されるBitTorrentプロトコルを利用します。

BitTorrent Syncを介した通信は、自動生成される一意の共有シークレットに基づいてエンドツーエンドで暗号化されます。 ファイル共有メカニズムとしてのBitTorrentはパブリックサービスですが、BitTorrent Syncがプロトコルを使用する方法はプライベートです。つまり、ファイルを安全に転送できます。

このガイドでは、2台のUbuntu14.04サーバーにBitTorrentSyncをインストールして使用する方法を示します。 共有ディレクトリを設定する方法と、サーバーを安全に管理するためにWebインターフェイスにSSL暗号化を設定する方法を示します。

BitTorrentSyncをインストールする

始めるために必要な最初のステップは、両方のサーバーインスタンスにBitTorrentSyncソフトウェアをインストールすることです。 このガイドの手順の多くは両方のマシンに反映されるため、マシンごとにコマンドを複製するようにしてください。

Ubuntuのデフォルトリポジトリで利用できる公式のBitTorrentSyncパッケージはありません。 ただし、Leo Moll(tuxpoldoとして知られている)によって作成された、よく管理されたPPA(パーソナルパッケージアーカイブ)があり、これを使用して最新のパッケージを取得できます。

両方のサーバーで、このPPAを追加して、システムがパッケージをプルダウンできるようにします。

sudo add-apt-repository ppa:tuxpoldo/btsync

次に、ローカルパッケージインデックスを更新して、システムが新しく利用可能なソフトウェアを認識できるようにする必要があります。 次に、BitTorrent Syncとnginxをインストールして、後でWebインターフェイスにSSL暗号化を追加します。

sudo apt-get update
sudo apt-get install btsync nginx

インストールしようとすると、プロンプトでかなりの数の質問が表示されます。 今のところ、すべてのプロンプトでEnterキーを押します。 より詳細な方法で、サービスを一時的に再構成します。

BitTorrentSyncを設定する

ソフトウェアがインストールされたので、実際に構成スクリプトを実行して、値の入力をもう一度求めます。 ただし、今回は、目的に必要な追加のオプションにアクセスできます。

スクリプトを再度実行するには、今回は設定を選択して、各サーバーで次のように入力します。

sudo dpkg-reconfigure btsync

これにより、初期インストール時よりもより多くのプロンプトが表示されます。 ほとんどの場合、デフォルト値を使用し、Enterキーを押すだけです。

以下に、構成するために必要する必要のある値の概要を示します。

  • WebインターフェイスバインドIPアドレス127.0.0.1
  • Webインターフェイスにアクセスするためのユーザー名:[好きなものを選択してください。 この例では、adminアカウントを保持します。]
  • Webインターフェースにアクセスするためのパスワード:[お好きなものを選択してください。 デモ用にpasswordを使用します。]
  • デーモンに設定するUmask値002

ご覧のとおり、ほとんどの設定では、デフォルトを受け入れることができます。 ただし、上記の選択は非常に重要です。 これらを誤って設定した場合は、コマンドを再度実行して選択を修正してください。

BitTorrentSyncWebインターフェイスへのSSLフロントエンドの構成

これで、ほとんどの部分でBitTorrentSyncがセットアップされました。 同期ディレクトリを少し設定します。 ただし、今のところ、SSLを使用してnginxWebサーバーをセットアップする必要があります。

ローカルループバックインターフェイス(127.0.0.1)でのみ使用できるようにWebインターフェイスを構成したことに気付いたかもしれません。 これは通常、リモートサーバーでBitTorrent Syncを実行しているときに、これにアクセスできないことを意味します。

BitTorrent Syncトラフィック自体は暗号化されていますが、Webインターフェイスへのトラフィックはプレーンテキストで送信されるため、このようなアクセスを制限しました。 これにより、サーバーとローカルコンピューター間のトラフィックを監視しているすべての人が、マシン間で送信された通信を確認できるようになります。

SSLを使用してnginxをセットアップし、SSLを介してBitTorrentWebインターフェイスへの接続をプロキシします。 これにより、BitTorrentSyncインスタンスをリモートで安全に管理できるようになります。

繰り返しますが、両方のホストでこれらすべての手順を実行する必要があります。

SSL証明書とキーを生成する

この設定を行うための最初のステップは、SSL証明書とキーを保持するディレクトリを作成することです。 これは、nginx構成ディレクトリ階層の下で行います。

sudo mkdir /etc/nginx/ssl

これで、次のコマンドを発行することで、SSL証明書とキーを1回の操作で作成できます。

sudo openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout /etc/nginx/ssl/nginx.key -out /etc/nginx/ssl/nginx.crt

証明書の情報を入力するように求められます。 できるだけ多くのフィールドに入力してください。 本当にが重要なのはこれだけです:

Common Name (e.g. server FQDN or YOUR name) []:

このフィールドには、サーバーのドメイン名またはパブリックIPアドレスを入力します。

SSLでトラフィックを暗号化し、BitTorrentSyncに渡すようにNginxを構成する

これで、リモートクライアントと通信するときにSSL証明書を使用するようにnginxサーバーブロックを構成できます。 次に、ローカルインターフェイスでリッスンしているBitTorrentSyncWebインターフェイスに情報を送信します。

将来これを使用する必要がある場合に備えて、デフォルトのnginxサーバーブロックファイルはそのままにしておきます。 BitTorrent Syncはデフォルトでポート「8888」で動作するため、これをフロントエンドSSLポートとしても使用します。

エディターでsudo権限を持つ新しいファイルを開いて、新しいサーバーブロックファイルを作成します。

sudo nano /etc/nginx/sites-available/btsync

内部に、次の行を追加する必要があります。

サーバー{ listenserver_domain_or_IP :8888 ssl;  server_name server_domain_or_IP ;

access_log /var/log/nginx/access.log;

ssl_certificate /etc/nginx/ssl/nginx.crt;
ssl_certificate_key /etc/nginx/ssl/nginx.key;

location / {
    proxy_pass http://127.0.0.1:8888;
}

}