Apple Time Machine Server on Local Network
ラズパイで構築するApple Time Machine用オンライン(LAN)サーバー
参考: https://stash4.hatenablog.com/entry/2018/06/17/184423
概要
以前macが突然死してしまい,バックアップしてなかったことでひどい目にあった.
そこで,自宅のLANにmacをつないだときに勝手にバックアップをとってくれるシステムを作成した!
定期的に自動でバックアップを取ってくれるし,LAN経由のためHDDを本体につなぐ必要もなし.
今どきはiCloudなどを使ってオンラインにバックアップするのが流行りだけど,容量単価が高くデータを置いておくだけで毎月一定の出費が発生してしまうので,避けたかった.
一方で,ローカルのストレージに保存する形式を取れば,ランニングコストはわずかな電気代だけだし,設定次第でNASとしても使える.
バックアップ方法の比較
- TimeMachine Server on Lan
+ 自動で定期的にバックアップ
+ 低ランニングコスト(初期費用1万+毎月の電気代数円)
- 自力でトラブルを解決する必要がある
- TimeMachineが廃止されたら終わり - iCloud
+ 初期設定が簡単でサーバーの設置は不要
+ Apple公式サービスのため,サポートが長い
- ランニングコストが高い(毎月数千円)
- 手動でバックアップを開始する必要がある
材料(正直何でも良いと思う)
- Raspberry Pi 3B
- BUFFALO HDD 1TB
- 有線LAN環境(推奨)
ラズパイの基本的なSSH設定
Raspberry Pi Imagerなどを使ってラズパイOSをmicro SDに焼く
僕はデフォのraspbian 32bitを選択
ターミナルを開いてIPアドレスを確認,SSH用ディレクトリの作成
ifconfig | grep 192
sudo mkdir -p /boot/ssh
設定 → Raspberry Pi Configuration のインターフェースタブからSSHを有効化
ラズパイを再起動し,macbookから先程のIPアドレスに接続できることを確認
サーバーのセットアップ
事前準備
パッケージの更新
sudo apt update
IPアドレスを固定
お使いの環境に合わせて/etc/dhcpcd.confを編集
後に「リモートリポジトリが見つからない」などのネットワークエラーを出さないように,routersやDNSが正しいことを確認する
# Example static IP configuration:
interface eth0
static ip_address=192.168.1.xx/24
static routers=192.168.1.1
static domain_name_servers=192.168.1.1 8.8.8.8
HDDをマウント
(今回は例として/mnt/TimeMachine
を使用,変更する場合はsmb.confのパスも変更してください)
HDDのUUIDを探す
sudo blkid
# /dev/sda1: LABEL="BUFFALO_HDD" UUID=“9da1c321-xxxx-xxxx-xxxx-xxxxxxxx9da8" TYPE="ext4"
そして,起動時にHDDが自動でマウントされるように/etc/fstabに追記
sudo sh -c 'echo "UUID=9da1c321-xxxx-xxxx-xxxx-xxxxxxxx9da8 /mnt/TimeMachine ext4 nofail 0 0" >> /etc/fstab'
sudo mount -a
<< 注意 >>
マウントに失敗する場合,ラズパイOSが起動しなくなる可能性があるので,
sudo mount -a
が正常に終了することを確認する
もしmount: /mnt/TimeMachine: mount point does not exist.
のようなエラーが出た場合,
かならず再起動する前に直す
Trouble Shooting
たまにxxx : Already mounted on yyy
のようなエラーが生じることがある.
自分の場合は一度アンマウントすると解決した.
df
: show mounted devices
umount [device name]
: unmount device
Sambaのセットアップ
sambaとavahi-daemonをインストール
ここで設定したsamba IDでTimeMachineにアクセスする
sudo apt install -y samba avahi-daemon # 選択肢はNOを選ぶ
sudo smbpasswd -a $USER
sambaの詳細設定
mkdir ~/work && cd work
git clone https://github.com/MikiyaShibuya/NAS-PI.git
cd NAS-PI
sudo sh -c 'cat smb.conf >> /etc/samba/smb.conf'
sudo cat smb.conf >> /etc/samba/smb.conf
sudo ln -s $PWD/samba.service /etc/avahi/services/samba.service
sambaデーモンを起動
sudo systemctl start smbd
sudo systemctl start avahi-daemon
サービスの起動を確認
sudo systemctl status smbd
sudo systemctl status avahi-daemon
macからNASに接続
LAN経由でラズパイサーバに接続
Finder → ⌘K → smb://192.168.1.xx (RPi' address) → 接続 → samba ID を入力
この写真のようにTimeMachineドライブが表示されるはず
Time Machineのバックアップ先を設定
システム環境設定 → Time Machine → バックアップディスクを選択 → Time Machine 192.168.1.xx → ディスクを使用 → samba IDを入力
🎊🎉バックアップ先を設定するとバックアップが始まる!🎉🎊
NAS for Apple Time Machine (LAN) English ver.
This is an instruction to build Time Machine server in LAN using Raspberry Pi
Reference: https://stash4.hatenablog.com/entry/2018/06/17/184423
Disclaimer
Although I have confirmed that the backup data can be restored successfully, please operate at your own risk.
Requirement
- Rspberry Pi
- HDD storage
- Wired LAN
My configuration
RPi Basic SSH Setup
Write Raspberry Pi OS 32 bit into micro SD card and turn on the device
Open terminal to find out the ip address of RPi and create ssh directory
ifconfig | grep 192
sudo mkdir -p /boot/ssh
Open Preferences -> Raspberry Pi Configuration
Enable SSH in Interfaces tab
Reboot the device and check the ssh connection from macbook
Server Host Setup
Common
Update package
sudo apt update
Edit environment setup (anything as you want)
sudo apt install -y zsh neovim tmux
git clone https://github.com/MikiyaShibuya/dotfiles.git
cd dotfiles && ./setup.sh
Fix IP address
Edit /etc/dhcpcd.conf to fix local IP address.
Uncomment and edit like this according to your environment.
Make sure routers and DNS server are right to prevent network issues after that.
# Example static IP configuration:
interface eth0
static ip_address=192.168.1.xx/24
static routers=192.168.1.1
static domain_name_servers=192.168.1.1 8.8.8.8
Mount HDD
(using /mnt/TimeMachine
in this instruction, please edit smb.conf when you using different directory)
Find device and get UUID of HDD
sudo blkid
# /dev/sda1: LABEL="BUFFALO_HDD" UUID=“9da1c321-xxxx-xxxx-xxxx-xxxxxxxx9da8" TYPE="ext4"
Then, write mount setting and check if the HDD was mounted correctly
sudo sh -c 'echo "UUID=9da1c321-xxxx-xxxx-xxxx-xxxxxxxx9da8 /mnt/TimeMachine ext4 nofail 0 0" >> /etc/fstab'
sudo mount -a
<< CAUTION >>
If you failed to mount, some message like this
mount: /mnt/TimeMachine: mount point does not exist.
will be displayed.
Fix this error BEFORE REBOOTING or your OS will be broken.
Trouble Shooting
Some times mounting may be failed like xxx : Already mounted on yyy
.
Re-mounting the HDD may fix the issue.
df
: show mounted devices
umount [device name]
: unmount device
Samba Setup
Install samba and avahi-daemon (for enabling mDNS)
This password will be required when setting up Time Machine
sudo apt install -y samba avahi-daemon # select NO when asked to generate config
sudo smbpasswd -a $USER
Configure smb daemon
mkdir ~/work && cd work
git clone https://github.com/MikiyaShibuya/NAS-PI.git
cd NAS-PI
sudo sh -c 'cat smb.conf >> /etc/samba/smb.conf'
sudo ln -s $PWD/samba.service /etc/avahi/services/samba.service
Start samba daemon
sudo systemctl start smbd
sudo systemctl start avahi-daemon
Check if the samba was launched correctly
sudo systemctl status smbd
sudo systemctl status avahi-daemon
Connect to NAS from mac
Mount NAS drive
Finder → ⌘K → smb://192.168.1.xx (RPi' address) → connect → input your smb ID
TimeMachine
should be displayed in the list
Setting TimeMachine Backup
System Preference → Time Machine → Select Backup Disk → Time Machine 192.168.1.xx → Use disk → input your smb ID