きっかけ
うちのサーバではsambaでファイル共有をしているのですが,これまでMacではafpプロトコルしか認めておらず,かつてNetatalkをソースからビルドしたときは依存関係に苦しんだことも有り,バックアップは見送り続けてきました.
しかし上記の記事を読んで,本家のサイトでもSMBサポートが記載されていたことも有り,喜び勇んで設定しようとしたもののダメでした.悲しい.
というわけでNetatalk環境を構築しようかと.
環境
- Ubuntu Server 16.04
- Docker 1.13.1
- Docker-compose 1.8.0
前準備
ZFSでRAID-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/timemachine
をNetatalkコンテナにマウントし,バックアップの永続化を行います.
設定
コンテナの選定
今回の目的はTimeMachineでバックアップをとることで,特にファイル共有周りは目的でない(Sambaで間に合っている)ので,以下のコンテナを選択しました.
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_LOGIN
とAFP_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_POINT
にAFP_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
,サーバのアドレスを指定してログインします.
どうもAFP_NAME
が使用されずユーザ名が使用されているようです.
TimeMachineを設定
TimeMachineの設定を開いてディスクを選択すると表示されました.後はOKを押して電源に繋ぐだけです.
まとめ
かつて依存関係に苦しんだりしたのは嘘のよう…
今回は必要ないと考えたのでAvahiの設定はしませんでした.したほうが便利なのかなぁ…