Time Machine ServerをSambaで作った話

programming
2025
swift
Author

Serika Yuzuki

Published

September 7, 2025

概要

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を割り当ててやりました。

Back to top