Docker
Docker2Day 15

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

More than 1 year has passed since last update.

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

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

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

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


その前に

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


セットアップ

~ 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

にアクセスして、プロジェクトを作成をクリックします。

スクリーンショット 2016-12-15 1.19.31.png

プロジェクト名を入力し「作成」をクリック。

スクリーンショット 2016-12-15 1.20.18.png


APIの有効化

ダッシュボードに移動できたら、「APIを有効にする」をクリックして、

スクリーンショット 2016-12-15 1.21.01.png

Google Drive APIのAPIを有効にします。

スクリーンショット 2016-12-15 1.21.13.png


認証情報の作成

まずは、OAuth 同意画面を作り「サービス名」を適当に入力します。

スクリーンショット 2016-12-15 1.22.20.png

認証情報を作成します。「OAuth クライアント ID」をクリックします。

スクリーンショット 2016-12-15 1.21.45.png

アプリケーションの種類には「その他」を選択して、作成します。

スクリーンショット 2016-12-15 1.29.16.png

すると「クライアント ID」「クライアントシークレット」が生成されます。

スクリーンショット 2016-12-15 1.29.57.png


Google Driveへのアクセス許可

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

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

スクリーンショット 2016-12-15 1.35.27.png

許可しましょう。

スクリーンショット 2016-12-15 1.38.59.png

コピーしましょう

スクリーンショット 2016-12-15 1.39.05.png

コンソールに戻ってコードを貼り付けて

Access token retrieved correctly と表示されたら成功です!


マウント

$ 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


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


起動する

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アドレス で接続します。

スクリーンショット 2016-12-15 1.55.34.png

設定したパスワードとユーザでログインします。

スクリーンショット 2016-12-15 1.55.50.png

Time Machineを選択してOKをクリックします。

スクリーンショット 2016-12-15 2.51.50.png

するとTime Machineの設定にもでてくるはずです。

スクリーンショット 2016-12-15 1.56.40.png


まとめ

どうしてGoogle Driveをマウントしても認識してくれないのだろう。

(コンテナの中を見に行くとちゃんとマウントはできているみたい)

今後は、gcsfuseとかを使って挑戦してみたいです。