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 の環境設定を開きます。

timemachine1

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

timemachine2

コンパイル済みオプションの確認

# 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/
created:

Back to top