FreeBSD10 で netatalk3 を使って TimeMachine サーバにする
netatalk と呼ばれるデーモンを使うと Mac のバックアップ機能である TimeMachine のデータの保存先にサーバを指定できると知り早速自宅の FreeBSD10 で 設定してみました。 今のnetatalk はAFP over TCP として動作するファイルサーバで windows などで利用される samba と同じような機能を持つがnetatalkは Apple独自のメタデータを完全に保存することを目的として設計されたファイルサーバソフトウェアであり Mac にネイティブに対応したファイルサーバとも言える。
netatalk3 のインストール
依存するパッケージがが結構あるのでとりあえず pkg install でインストールします。
# pkg install avahi # pkg install netatalk3
デフォルトのnetatalk3 パッケージをインストールしても pam は無効になっているためmake config で pam, acl, sendfile 等を有効にしてportsからコンパイルインストールする 前にパッケージで一度インストールしているため依存するパッケージもportsから入れる必要がなくなり時間節約になる。
# pkg delete netatalk3 # cd /usr/port/net/netatalk3 # make config # make install clean
以下のパッケージもインストールする
databases/py-bsddb databases/py-gdbm databases/py-sqlite3 x11-toolkits/py-tkinter
netatalk3 pam認証の設定
認証に係る設定です。ファイルが存在しない場合新規で作成します。
/etc/pam.conf
netatalk auth required pam_unix.so try_first_pass netatalk account required pam_unix.so try_first_pass netatalk session required pam_permit.so
アクセス制御
netatalk から起動される afpd デーモンは Tcp Wrapper でアクセス制御出来るため hosts.allow でアクセスするIPアドレスを指定して許可する必要があります。 以下の設定は 192.168.0.0/24 及び localhost からのアクセスを許可しています。
/etc/hosts.allow
afpd : 192.168.0.0/255.255.255.0 127.0.0.1 : allow afpd : ALL : deny
データディレクトリの作成
netatalk で利用するディレクトリを作ります。zfs を使っている場合は自分の好きなようにデータセットを作成してマウントポイントを指定するだけです。
# zfs create zroot/afp # zfs create zroot/TimeMachine # zfs set mountpoint=/afp zroot/afp # zfs set mountpoint=/TimeMachine zroot/TimeMachine # chown USERNAME /afp # chown USERNAME /TimeMachine
netatalk の設定
netatalk3 の設定です。今回は [Global] [My AFP Volume] [MyTimeMachine] 3つの設定のみ入れて他はコメントにしています。
/usr/local/etc/afp.conf
;
; Netatalk 3.x configuration file
;
[Global]
; Global server settings
mac charset = MAC_JAPANESE
uam list = uams_dhx2.so
afpstats = yes
log file = /var/log/netatalk.log
log level = default:info
dbus daemon = /usr/local/bin/dbus-daemon
;[Homes]
; basedir regex = /usr/home
; spotlight = yes
[My AFP Volume]
path = /afp
spotlight = yes
file perm = 0660
directory perm = 0770
[MyTimeMachine]
path = /TimeMachine
time machine = yes
自動起動の設定
/etc/rc.conf
dbus_enable="YES" avahi_daemon_enable="YES" avahi_dnsconfd_enable="YES" netatalk_enable="YES"
netatalk を試してみる
サーバを再起動するか dbus avahi netatalk を個別に起動して afpd にアクセスしてみます。Finder からアクセスするにはsafari の URL 欄に afp://192.168.0.120/ などとサーバのIPアドレスを指定するとアクセスできます。
TimeMachine のデータの保存先に指定する
コンパネから TimeMachine の環境設定を開きます。

ディスクの選択をクリックすると MyTimeMachine が見えるので「バックアップディスクとして使用」をクリックするとデータの保存先としてサーバが利用できるようになる。

コンパイル済みオプションの確認
# afpd -V
afpd 3.1.1 - Apple Filing Protocol (AFP) daemon of Netatalk
This program is free software; you can redistribute it and/or modify it under
the terms of the GNU General Public License as published by the Free Software
Foundation; either version 2 of the License, or (at your option) any later
version. Please see the file COPYING for further information and details.
afpd has been compiled with support for these features:
AFP versions: 2.2 3.0 3.1 3.2 3.3 3.4
CNID backends: dbd last tdb
Zeroconf support: Avahi
TCP wrappers support: Yes
Quota support: No
Admin group support: Yes
Valid shell checks: Yes
cracklib support: No
EA support: ad | sys
ACL support: Yes
LDAP support: No
D-Bus support: Yes
Spotlight support: No
DTrace probes: No
afp.conf: /usr/local/etc/afp.conf
extmap.conf: /usr/local/etc/extmap.conf
state directory: /var/netatalk/
afp_signature.conf: /var/netatalk/afp_signature.conf
afp_voluuid.conf: /var/netatalk/afp_voluuid.conf
UAM search path: /usr/local/libexec/netatalk-uams//
Server messages path: /var/netatalk/msg/