自宅サーバーが古くなり、いつ故障してもおかしくない状況なので少しずつ移行をはじめています。新サーバーでは原則としてDockerコンテナでの再構築に取り組んでおり、それぞれの機能をメモしていきます。
今回はNetatalkについて。
Netatalk とは
macOS向けのファイル共有プロトコル(AFP)を提供するオープンソースソフトウェアです。MacはWindowsの共有フォルダ(SMB)も普通に使えますが、.DS_Store といったゴミファイルが見えてしまう等の煩わしさがあるので、より純粋なファイル共有プロトコルを採用します。
Docker Imageの選定
DockerHubで検索し、Starsの数が一定数あるものから選定しました。
❯ docker search netatalk
INDEX NAME STARS
docker.io docker.io/odarriba/timemachine 22
docker.io docker.io/cptactionhank/netatalk 13
docker.io docker.io/cilix/netatalk 1
odarriba/timemachine はTimeMachine特化なので今回は外し、cptactionhank/netatalk を選択しました。
docker-compose.yml
version: '2'
services:
netatalk:
image: cptactionhank/netatalk:latest
container_name: netatalk
network_mode: host
env_file: credential.env
environment:
- AVAHI=1
ports:
- "548:548"
volumes:
- /your/media/path:/media/share
restart: always
credential.env:
AFP_USER=username
AFP_PASSWORD=password
AFP_UID=1000
AFP_GID=1000
設定のポイント
- デフォルト設定では
/media/shareのみが共有されます - 1組のユーザーID/パスワードを環境変数で設定する必要があります
- 標準設定で不足する場合は
/etc/afp.confをvolume mountで置換可能です AVAHI=1を設定するとAuto Discoveryが有効になり、Finderの「共有」に自動検出されますnetwork_mode: hostはAvahiのAuto Discoveryを機能させるために必要です。コンテナの仮想NICにbindした場合は自動検出が動作しません
まとめ
DockerHubのイメージを利用して簡単にMacファイル共有サーバーを作成しました。この方法で作成したネットワークパスをTimeMachineの保存場所としても利用できるはずです。


![Notion を Hugo のヘッドレスCMSとして利用する方法 [Notion Hugo Exporter]](/tcard/notion-hugo-exporter-getting-started/2022-12-03-notion-hugo-exporter-getting-started.webp)