40秒で無料無制限のオンラインTorrentクライアントをつくる

[<font color="OrangeRed">STOP！違法ダウンロード</font>](https://www.riaj.or.jp/z/stopillegaldownload/)


通常、TorrentをダウンロードするにはBitTorrentやuTorrent,Transmissionといったクライアントソフトという専用のソフトウェアをダウンロード・インストールしてパソコンに設定する必要があります。

しかし、共用パソコンや職場のパソコンなどの場合、そうったソフトをインストールすることができません。
また、パソコンにTorrentソフトをインストールすると、途中で電源が切れなかったり、ネットワークの帯域が不安定になったりすることもあるでしょう。

クライアントソフトをインストールしないで、Torrentをダウンロードする方法について解説します。

今回は、[Cloud Torrent](https://github.com/jpillora/cloud-torrent)というクラウド上でTorrentをダウンロードできるソフトを使います。

クラウドはGoogle Compute Engine(GCE)を使うことにします。

### Google Compute Engineを使うメリット
- **無料**でVMを24時間365日動かせる。
- 上り(インバウンド)のトラッフィックは**すべて無料**
- 下り(アウトバウンド)のトラッフィックは通常1GBまで無料(ただし、Google Drive(Googleサービス)への下りは**すべて無料**)
- 実質GoogleDriveを経由してダウンロードすれば、**完全に無料**になります。
- 30GBの永続ディスクが無料
- 5GBのスナップショット(バックアップ)が無料
- 固定IPアドレスも無料

詳細は、 [Google Compute Engine の料金](https://cloud.google.com/compute/pricing?hl=ja#freeusage) をご確認ください。

では、実際に作っていきます。
# VMインスタンスを作成(5秒)
[VMインスタンス](https://console.cloud.google.com/compute/instances)から作成をクリック
![console.cloud.google.com_compute_instances_project=mailfactory2&instancessize=50.png](https://qiita-image-store.s3.amazonaws.com/0/208363/bee389ab-8854-5e50-24aa-70d3e7717e09.png)

以下のような画面が出てくるかと思います。
![console.cloud.google.com_compute_instances_project=mailfactory2&instancessize=50 (1).png](https://qiita-image-store.s3.amazonaws.com/0/208363/55c28000-4188-5229-07c5-9b46294c17f3.png)


# 名前を設定(3秒)
わかりやすい名前を設定します。デフォルトでもかまいません。
![console.cloud.google.com_compute_instances_project=mailfactory2&instancessize=50 (2).png](https://qiita-image-store.s3.amazonaws.com/0/208363/5088543d-aa46-c47d-ce7a-13fe25988a63.png)

# リージョンを選択(3秒)
us-*であればすべて無料なのですが、今回は日本に一番近いus-west1(オレゴン)を選びました。us-west2(ロサンゼルス)はバグで無料にならないみたいです。
![console.cloud.google.com_compute_instances_project=mailfactory2&instancessize=50 (3).png](https://qiita-image-store.s3.amazonaws.com/0/208363/5cadf953-9e7f-dc6a-63de-6b5dd119f37c.png)

# マシンタイプの選択(3秒)
f1-microというマシンタイプが無料です。
![console.cloud.google.com_compute_instances_project=mailfactory2&instancessize=50 (4).png](https://qiita-image-store.s3.amazonaws.com/0/208363/33f4896a-062a-2ef5-8aeb-3d6cc82c5f0f.png)

# イメージの選択(3秒)
ブートディスクの変更ボタンをクリックして、Container-Optimized OSを選択してください。
![console.cloud.google.com_compute_instances_project=mailfactory2&instancessize=50 (5).png](https://qiita-image-store.s3.amazonaws.com/0/208363/b7de7bc0-254c-315e-0e76-fd6f6905769d.png)

## ディスクのサイズの変更(5秒)
30GBまで無料なので、サイズを30にしてください。
![console.cloud.google.com_compute_instances_project=mailfactory2&instancessize=50 (6).png](https://qiita-image-store.s3.amazonaws.com/0/208363/6c265e82-c18b-c25e-ea62-e7c8b17d6099.png)
選択ボタンをクリック。

# HTTPトラフィックを許可(3秒)
HTTPトラフィックを許可するにチェックを入れてください。
![console.cloud.google.com_compute_instances_project=mailfactory2&instancessize=50 (8).png](https://qiita-image-store.s3.amazonaws.com/0/208363/5abf6ef2-6f51-15ea-558b-609504304925.png)
 **管理、セキュリティ、ディスク、ネットワーク、単一テナンシー** をクリック。

# 管理タブの自動化に起動スクリプトを入力(5秒)
管理タブの自動化に以下の起動スクリプトを入力してください。

```bash
#!/bin/sh

iptables -w -A INPUT -p tcp --dport 80 -j ACCEPT

if [ "$(docker container ls -a -q -f name=cloud-torrent)" ]; then
    docker start cloud-torrent
else
    user=$(curl "http://metadata.google.internal/computeMetadata/v1/project/attributes/ssh-keys" -H "Metadata-Flavor: Google" | cut -d: -f1 | tail -n1)
    while [[ ! -d "/home/$user" ]] ; do
        sleep 1
    done
    mkdir -p "/home/$user/downloads"
    cd "/home/$user"
    uid=$(id -u "$user")
    gid=$(id -g "$user")
    chown $uid:$gid downloads
    docker run --name cloud-torrent -d -p 80:3000 -u $uid:$gid -v "$PWD/downloads:/downloads" jpillora/cloud-torrent
fi
```
![console.cloud.google.com_compute_instances_project=mailfactory2&instancessize=50 (9).png](https://qiita-image-store.s3.amazonaws.com/0/208363/a53dc5cf-c9d4-2375-c4c2-67849f0b5a9c.png)

# 固定IPアドレスを設定(10秒)
固定IPアドレスは設定しなくても使えますので、飛ばしても大丈夫です。
ネットワークタブのネットワークインターフェイスのdefaultをクリック。
![console.cloud.google.com_compute_instances_project=mailfactory2&instancessize=50 (10).png](https://qiita-image-store.s3.amazonaws.com/0/208363/e84962dd-1be1-bd2d-d284-22cb094bbe39.png)

外部IPのエフェメラルをクリック。
![console.cloud.google.com_compute_instances_project=mailfactory2&instancessize=50 (11).png](https://qiita-image-store.s3.amazonaws.com/0/208363/0598f725-6809-6bf3-b7f3-73b09176deb6.png)

IPアドレス作成をクリック。
![Screenshot from 2019-03-14 10-01-52.png](https://qiita-image-store.s3.amazonaws.com/0/208363/151f4535-c470-25ae-5ead-560404a603c3.png)

名前を入力して予約。
![console.cloud.google.com_compute_instancesAdd_project=mailfactory2.png](https://qiita-image-store.s3.amazonaws.com/0/208363/4d54124d-f45f-5570-5fd1-b228a94fecb7.png)

完了をクリック。
![console.cloud.google.com_compute_instancesAdd_project=mailfactory2 (1).png](https://qiita-image-store.s3.amazonaws.com/0/208363/558bade4-f27f-018c-3ad6-bdd0a778d343.png)

# 作成🎉
おめでとうございます🎉 これで無料無制限のオンラインTorrentクライアントが完成しました。40秒でできましたでしょうか？
![console.cloud.google.com_compute_instancesAdd_project=mailfactory2 (2).png](https://qiita-image-store.s3.amazonaws.com/0/208363/44dd9339-b803-e3fb-c056-1469bdd6eeeb.png)

# 使ってみる
外部IPのリンクをクリックすると、Cloud Torrentの画面がでてきます。モバイルフレンドリーなのでスマホで見ても大丈夫。
![console.cloud.google.com_compute_instancesAdd_project=mailfactory2 (3).png](https://qiita-image-store.s3.amazonaws.com/0/208363/5b1d2c06-c88f-0c6f-4695-ead6b2ee49a5.png)

![35.230.61.159_.png](https://qiita-image-store.s3.amazonaws.com/0/208363/5c933bfb-5441-e49b-b78a-7360075db4a3.png)

# Cloud Torrent デモ
[![Cloud Torrent](http://img.youtube.com/vi/jukX-FM3xiE/0.jpg)](http://www.youtube.com/watch?v=jukX-FM3xiE)

# まとめ
これで外出中でもスマホから操作できたりします。ダウンロードしたファイルは、SSH接続してホームディレクトリ直下の~/downloadsにすべて入っております。Google Driveをマウントして自動でGoogleDriveにアップしてもいいかと思います。(Googleのサービスへの下りはすべて無料)また、CloudTorrentでも[GoogleDriveやDropboxやS3などに転送する](https://github.com/jpillora/cloud-torrent/issues/24)予定があるようです。何かのお役にたてば幸いです。