概要
Time Machine ServerをSambaで作った話。
手元に14TBのHDDが仕事をせずに、起動のたびただ無駄に回っていただけなので、これを機に仕事を与えてみた。
手順
パーティションを作成
まずはHDDにTimeMachin用のパーティションを作る。
sudo parted /dev/sdX
mklabel gpt
mkpart TimeMachine ext4 1MiB 2TiB
mkpart Data ext4 2TiB 100%
quit
ここからは、マウントポイントを固定して、SambaでTime Machine用共有を公開する。
/etc/fstabでマウントポイントを固定
まずUUIDを確認。
lsblk -f # または: sudo blkid
マウントポイントを作成。
sudo mkdir -p /srv/timemachine /srv/data
/etc/fstab
にUUIDで追記(例)。
sudo nano /etc/fstab
# 例: UUIDは環境の値に置き換え
/dev/disk/by-uuid/例のUUID /srv/timemachine ext4 defaults 0 2
反映してマウント確認。
systemctl daemon-reload
sudo mount -a
df -h | grep -E "/srv/(timemachine|data)"
これ以降の手順は失敗に終わったので注意
Time Machine専用ユーザーを用意(任意だが分離推奨)。
sudo adduser timemachine
sudo usermod -aG sambashare timemachine
sudo chown -R timemachine:sambashare /srv/timemachine
SambaでTime Machine共有を公開
Sambaをインストールし、設定を追加。
sudo apt update && sudo apt install -y samba
sudo cp /etc/samba/smb.conf /etc/samba/smb.conf.bak
sudoedit /etc/samba/smb.conf
/etc/samba/smb.conf
に以下を追記(必要に応じて既存設定にマージ)。
[TimeMachine]
path = /srv/timemachine
valid users = timemachine
read only = no
create mask = 0660
directory mask = 0770
force user = timemachine
vfs objects = catia fruit streams_xattr
fruit:time machine = yes
# 容量上限(MiB)。例: 約2TB = 2000000
fruit:time machine max size = 2000000
Sambaユーザーを有効化して再起動。
sudo smbpasswd -a timemachine
sudo systemctl restart smbd nmbd
sudo systemctl status smbd --no-pager
macOSから接続
Finderで smb://<サーバー名またはIP>/TimeMachine
に接続。
「Time Machine」→「バックアップディスクを選択…」から、サーバーのTimeMachine
を選ぶ。
この設定のおかげで、サーバーのどっかー設定ファイルが全部飛んだ。マジでくそ。もう二度とやらん。
成功した方法
# docker-compose.yml
services:
timemachine:
image: mbentley/timemachine:smb
container_name: timemachine
hostname: timemachine
restart: unless-stopped
# Avahi/SMB はコンテナ内で起動。macvlan なので自動発見OK
environment:
TM_USERNAME: "timemachine" # 変えるなら下のボリュームパスも要調整
TM_GROUPNAME: "timemachine"
PASSWORD: "強いパスワードに変えてね"
TM_UID: "1000" # /mnt/TimeMachine の所有者に合わせる
TM_GID: "1000"
SET_PERMISSIONS: "false" # 既存権限を変えたくない場合は false
SHARE_NAME: "TimeMachine" # Finder に見える共有名
VOLUME_SIZE_LIMIT: "0" # 容量上限 (MiB または "1 T" など)。0 は無制限
WORKGROUP: "WORKGROUP" # 必要なら変更
# macvlan なので ADVERTISED_HOSTNAME は通常不要
volumes:
# TM_USERNAME=timemachine の場合、コンテナ内の実パスは /opt/timemachine
- /mnt/TimeMachine:/opt/timemachine
# Samba の一時ディレクトリ(公式推奨)
tmpfs:
- /run/samba
# ulimit は公式既知問題の回避に推奨
ulimits:
nofile:
soft: 65536
hard: 65536
# ここがキモ:別IPを直接コンテナに割り当てる
networks:
timemachine_net:
ipv4_address: 192.168.11.50
networks:
timemachine_net:
driver: macvlan
driver_opts:
parent: enp3s0 # あなたのLAN NIC
ipam:
config:
- subnet: 192.168.11.0/24
gateway: 192.168.11.1 # ルータが別ならここを合わせてね
timjdfletcherさんのイメージを使わせていただきました。
CasaOSのsambaと被らないように別のIPを割り当ててやりました。