ぽよメモ

レガシーシステム考古学専攻

Dockerで簡単にNetatalkを動かしてTimeMachineでバックアップできるようにする

きっかけ

support.apple.com

applech2.com

うちのサーバではsambaでファイル共有をしているのですが,これまでMacではafpプロトコルしか認めておらず,かつてNetatalkをソースからビルドしたときは依存関係に苦しんだことも有り,バックアップは見送り続けてきました.
しかし上記の記事を読んで,本家のサイトでもSMBサポートが記載されていたことも有り,喜び勇んで設定しようとしたもののダメでした.悲しい.

というわけでNetatalk環境を構築しようかと.

環境

  • Ubuntu Server 16.04
  • Docker 1.13.1
  • Docker-compose 1.8.0

前準備

ZFSRAID-Z1を組んでいるので,バックアップ用にボリュームを切り分けます.このとき容量に制限をかけています.

$ sudo zfs create -o mountpoint=/data/timemachine data/timemachine
$ sudo zfs set quota=300G data/timemachine
$ df -h | grep timemachine
data/timemachine   300G   128K  226G  25% /data/timemachine

今回は/data/timemachineNetatalkコンテナにマウントし,バックアップの永続化を行います.

設定

コンテナの選定

今回の目的はTimeMachineでバックアップをとることで,特にファイル共有周りは目的でない(Sambaで間に合っている)ので,以下のコンテナを選択しました.

github.com

odarriba/timemachine - Docker Hub

docker-compose.ymlに書く

特に難しいところは無いです.今回はホストのポートにマッピングしました.

version: "2"
services:
  netatalk:
    container_name: timemachine
    image: odarriba/timemachine:latest
    volumes:
      - /data/timemachine:/timemachine
    ports:
      - 548:548
      - 636:636
    restart: always
    environment:
      AFP_LOGIN: ユーザ名
      AFP_PASSWORD: パスワード
      AFP_NAME: timemachine

AFP_LOGINAFP_PASSWORDの設定が必須です.AFP_NAMEに関してはおそらくMacからマウントしたときに見えるホスト名か何かだろうと思っていたのですが,どうもMac側からは乱数のような値になっていました…

必要な場合はAFP_SIZE_LIMITをMB単位で指定すると良いでしょう.

複数ユーザでの使用

複数ユーザから使用する場合は新たにコンテナに対してコマンドを発行すれば良いようです.

$ docker exec -it timemachine add-account USERNAME PASSWORD MOUNT_POINT [VOL_SIZE_MB]

このコンテナでは起動時にentrypoint.shを実行しています.その際add-accountコマンドを発行しMOUNT_POINTAFP_NAMEを割り当てているようです. しかし,Docker Hubにて作者は

MOUNT_POINT should be an absolute path, preferably a sub-path of /timemachine (e.g., /timemachine/backup), so it will be stored in the according sub-path of your external volume.

としています.ちょっとこの辺り怪しいのでもう少し詳しく調べてissueでも建ててみようかと思っています.

バックアップする

接続テスト

Finderを開いて Cmd + K,サーバのアドレスを指定してログインします.

f:id:pudding_info:20170320230144p:plain

どうもAFP_NAMEが使用されずユーザ名が使用されているようです.

TimeMachineを設定

f:id:pudding_info:20170320231328p:plain

TimeMachineの設定を開いてディスクを選択すると表示されました.後はOKを押して電源に繋ぐだけです.

まとめ

かつて依存関係に苦しんだりしたのは嘘のよう…

今回は必要ないと考えたのでAvahiの設定はしませんでした.したほうが便利なのかなぁ…