DockerでTimeMachineサーバを作ってバックアップ

みなさんは、バックアップを何でしていますか？

私は最近MBP Late2016を買ってmacOSデビューしました！！！

なので、TimeMachineサーバをDockerで立ててそれをGoogleDriveに保存したいと思います！！

**と思っていたのですがマウントすると、どうしても認識してくれないのでGoogle Driveの認証を書いていますが意味ないです。本当にわけがわからない。なんでなの？ねえ。**

# その前に

今回はローカルでサーバを立ててバックアップを試みたのですが、どうしても接続できなかったので Dplyという２時間だけ無料で使えるVPS上にサーバを立てました。


## セットアップ

```bash
~ ssh root@IP
$ curl -fsSL https://get.docker.com/ | sh
$ add-apt-repository ppa:alessandro-strada/ppa # Google Driveをマウントする
$ apt-get update
$ apt-get install google-drive-ocamlfuse
```

# Google DriveのAPIを有効にする

Google Driveをマウントするために、Google DriveのAPIを有効にします。

## プロジェクトの作成

https://console.developers.google.com/apis/dashboard
にアクセスして、プロジェクトを作成をクリックします。

<img width="871" alt="スクリーンショット 2016-12-15 1.19.31.png" src="https://qiita-image-store.s3.amazonaws.com/0/62429/0ac4d4bd-2e0d-436f-13b6-f9446bdd37a5.png">

プロジェクト名を入力し「作成」をクリック。
<img width="539" alt="スクリーンショット 2016-12-15 1.20.18.png" src="https://qiita-image-store.s3.amazonaws.com/0/62429/8b69a176-8e98-3b19-8c32-31f3aa2d6291.png">

## APIの有効化

ダッシュボードに移動できたら、「APIを有効にする」をクリックして、
<img width="671" alt="スクリーンショット 2016-12-15 1.21.01.png" src="https://qiita-image-store.s3.amazonaws.com/0/62429/615a1ae8-cce7-1618-fdb5-eb057371ae16.png">

Google Drive APIのAPIを有効にします。
<img width="1281" alt="スクリーンショット 2016-12-15 1.21.13.png" src="https://qiita-image-store.s3.amazonaws.com/0/62429/e225f52e-b486-d5f3-aa59-48df336f47f4.png">

## 認証情報の作成

まずは、OAuth 同意画面を作り「サービス名」を適当に入力します。
<img width="633" alt="スクリーンショット 2016-12-15 1.22.20.png" src="https://qiita-image-store.s3.amazonaws.com/0/62429/94a9512e-41f5-b6ef-f3cd-92478dd78e7c.png">

認証情報を作成します。「OAuth クライアント ID」をクリックします。
<img width="1195" alt="スクリーンショット 2016-12-15 1.21.45.png" src="https://qiita-image-store.s3.amazonaws.com/0/62429/c3106c78-9db1-c82f-bc45-929ccbf51490.png">

アプリケーションの種類には「その他」を選択して、作成します。
<img width="709" alt="スクリーンショット 2016-12-15 1.29.16.png" src="https://qiita-image-store.s3.amazonaws.com/0/62429/d2617b30-27b5-8ed2-834a-038b3e04ff16.png">

すると「クライアント ID」「クライアントシークレット」が生成されます。
<img width="727" alt="スクリーンショット 2016-12-15 1.29.57.png" src="https://qiita-image-store.s3.amazonaws.com/0/62429/92282db2-177b-c80e-f5cf-6006962d5bbf.png">

## Google Driveへのアクセス許可

```bash
$ google-drive-ocamlfuse -headless -id クライアントID -secret クライアントシークレット
```

と入力するとGoogleのOAuth認証を求めるURLが表示されるので、アクセスします。

<img width="1163" alt="スクリーンショット 2016-12-15 1.35.27.png" src="https://qiita-image-store.s3.amazonaws.com/0/62429/31a97fae-1d82-3baf-fb3a-314a3ddd6a15.png">

許可しましょう。
<img width="495" alt="スクリーンショット 2016-12-15 1.38.59.png" src="https://qiita-image-store.s3.amazonaws.com/0/62429/c31b2694-0a33-447c-bb5f-bf8b693a5e78.png">

コピーしましょう
<img width="479" alt="スクリーンショット 2016-12-15 1.39.05.png" src="https://qiita-image-store.s3.amazonaws.com/0/62429/d81530f8-7eff-4dd2-30b9-cfc7f09fd22b.png">

コンソールに戻ってコードを貼り付けて
`Access token retrieved correctly` と表示されたら成功です！

## マウント
```bash
$ mkdir /googledrive
$ google-drive-ocamlfuse /googledrive
$ mkdir /googledrive/timemachine
```

Google Driveでも「timemachine」フォルダがあることが確認できると思います。

# netatalk を立てる

## netatalkとは

>netatalkはUnix系OS上でMac OSやOS Xに対してAFPによるファイルサーバの機能を提供するオープンソースのソフトウェアである。
https://ja.wikipedia.org/wiki/Netatalk

つまりファイル共有サーバの機能を提供するわけですね。

## 起動する

```bash
docker run --detach \
   # --volume /googledrive/timemachine:/media/timemachine \ -> これだと認識してくれない
   --publish 548:548 \
   --env AFP_USER=$(id -un) \
   --env AFP_PASSWORD= \
   --env AFP_UID=$(id -u) \
   --env AFP_GID=$(id -g) \
   --name netatalk \
   cptactionhank/netatalk:latest
```

Finderで CMD + K を押して `afp://IPアドレス` で接続します。
<img width="506" alt="スクリーンショット 2016-12-15 1.55.34.png" src="https://qiita-image-store.s3.amazonaws.com/0/62429/d0dfc4bc-e9af-4d39-eacb-01444b4d2893.png">

設定したパスワードとユーザでログインします。
<img width="434" alt="スクリーンショット 2016-12-15 1.55.50.png" src="https://qiita-image-store.s3.amazonaws.com/0/62429/c1705e9c-72ac-3a9b-3e42-2fcf2a7fdd71.png">

Time Machineを選択してOKをクリックします。
<img width="432" alt="スクリーンショット 2016-12-15 2.51.50.png" src="https://qiita-image-store.s3.amazonaws.com/0/62429/b0838225-fe76-7d53-d078-fcc0e14e9327.png">

するとTime Machineの設定にもでてくるはずです。
<img width="671" alt="スクリーンショット 2016-12-15 1.56.40.png" src="https://qiita-image-store.s3.amazonaws.com/0/62429/ddb0dd17-8730-91d2-c954-642f344f82ef.png">

# まとめ

どうしてGoogle Driveをマウントしても認識してくれないのだろう。
（コンテナの中を見に行くとちゃんとマウントはできているみたい）
今後は、gcsfuseとかを使って挑戦してみたいです。