Raspberry PiでTime Machine対応のファイルサーバーを構築する方法


# Raspberry PiでTime Machine対応のファイルサーバーを構築する方法

## 概要
自宅にあるRaspberry Piを活用して、ファイルサーバー兼Time Machineのバックアップ先を構築する手順をまとめました。家族内でのファイル共有や、Macのバックアップ先として利用できます。

## 目的
- Raspberry Piを使ってファイルサーバーを構築する
- Time Machineのバックアップ先として利用する
- 家族内でのファイル共有を設定する
- アクセス権限を適切に設定する
## 前提条件
- Raspberry Piがネットワークに接続されている
- 外付けHDDをRaspberry Piに接続している
- 基本的なLinuxコマンドの操作ができる

## ステップ1：外付けHDDのマウント
### 1.1 外付けHDDの接続と確認
Raspberry Piに外付けHDDを接続し、デバイス名を確認します。

```bash
sudo fdisk -l
```
### 1.2 マウントポイントの作成
マウントポイントを作成します。

```bash
sudo mkdir /mnt/external_hdd
```

### 1.3 自動マウントの設定
/etc/fstabファイルを編集して、自動マウントを設定します。

```bash
sudo nano /etc/fstab
```

以下の行を追加します（/dev/sda1は実際のデバイス名に置き換えてください）。
(お好きなエディタでどうぞ）

```vim: /etc/fstab
/dev/sda1    /mnt/external_hdd    ext4    defaults    0    2
```

変更を保存して閉じ、マウントを適用します。

```bash
sudo mount -a
```

##ステップ2：Sambaのインストールと設定
### 2.1 Sambaのインストール
```bash
sudo apt update
sudo apt install samba
```

### 2.2 ユーザーとグループの設定
#### 2.2.1 家族用のグループを作成
```bash
sudo groupadd family
```

#### 2.2.2 家族のユーザーを作成し、グループに追加
例として、家族メンバーjyunichiro、kotaro,shinjiroを作成します。

```bash
sudo adduser jyunichiro
sudo adduser kotaro
sudo adduser shinjiro

sudo usermod -aG family jyunichiro
sudo usermod -aG family kotaro
sudo usermod -aG family shinjiro
```

#### 2.2.3 Sambaユーザーの追加
```bash
sudo smbpasswd -a jyunichiro
sudo smbpasswd -a kotaro
sudo smbpasswd -a shinjiro
```
### 2.3 共有ディレクトリの作成と権限設定
#### 2.3.1 Time Machine用ディレクトリ
```bash
sudo mkdir /mnt/external_hdd/TimeMachine
sudo chown -R jyunichiro:jyunichiro /mnt/external_hdd/TimeMachine
sudo chmod -R 700 /mnt/external_hdd/TimeMachine
```

#### 2.3.2 家族共有用ディレクトリ
```bash
sudo mkdir /mnt/external_hdd/Public
sudo chown -R jyunichiro:family /mnt/external_hdd/Public
sudo chmod -R 770 /mnt/external_hdd/Public
```

#### 2.3.3 各ユーザー用ディレクトリ
```bash
sudo mkdir /mnt/external_hdd/Public/jyunichiro
sudo mkdir /mnt/external_hdd/Public/kotaro
sudo mkdir /mnt/external_hdd/Public/shinjiro

sudo chown jyunichiro:jyunichiro /mnt/external_hdd/Public/jyunichiro
sudo chown jyunichiro:kotaro /mnt/external_hdd/Public/kotaro
sudo chown jyunichiro:shinjiro /mnt/external_hdd/Public/shinjiro

sudo chmod 770 /mnt/external_hdd/Public/jyunichiro
sudo chmod 770 /mnt/external_hdd/Public/kotaro
sudo chmod 770 /mnt/external_hdd/Public/shinjiro
```

### 2.4 Sambaの設定ファイルを編集
（お好きなエディタでどうぞ。）

```bash
sudo vim /etc/samba/smb.conf
```

#### 2.4.1 Time Machine用共有設定
以下を追加します。
```
[TimeMachine]
comment = Time Machine Backup
path = /mnt/external_hdd/TimeMachine
valid users = jyunichiro
read only = no
browseable = no
writable = yes
guest ok = no
inherit permissions = yes
vfs objects = catia fruit streams_xattr
fruit:aapl = yes
fruit:time machine = yes
```
#### 2.4.2 家族共有用共有設定
以下を追加します
```
[Public]
comment = Family Share
path = /mnt/external_hdd/Public
valid users = @family
read only = no
browseable = yes
writable = yes
guest ok = no
create mask = 0770
directory mask = 0770
force group = family
```


### 2.5 Sambaサービスの再起動
```bash
sudo systemctl restart smbd
```

## ステップ3：Macでの設定

### 3.1 Time Machineの設定
1. サーバーに接続
Finderで「移動」→「サーバへ接続」を選択し、以下を入力します。
```
smb://raspberrypi.local/TimeMachine
```

※ raspberrypi.localはRaspberry Piのホスト名またはIPアドレスに置き換えてください。

2. 認証情報を入力
ユーザー名：jyunichiro
パスワード：設定したSambaパスワード

3. Time Machineのバックアップ先に設定

「システム設定」→「Time Machine」を開き、「バックアップディスクを選択」で「TimeMachine」を選択します。

### 3.2 家族共有フォルダへのアクセス
1. サーバーに接続
```
smb://raspberrypi.local/Public
```
2. 認証情報を入力

ユーザー名：各自のユーザー名（例：jyunichiro、kotaro,shinjiro）
パスワード：設定したSambaパスワード

3. 共有フォルダの利用

認証が成功すると、Public共有フォルダにアクセスできます。

## トラブルシューティング
### アクセス権限のエラーが出る場合
- 所有者と権限の確認
```bash
ls -l /mnt/external_hdd
```

- 権限の再設定

```bash
sudo chown -R [所有者]:[グループ] /path/to/directory
sudo chmod -R [パーミッション] /path/to/directory
```
### Sambaのログを確認する
- ログレベルを上げる
/etc/samba/smb.confの[global]セクションに追加。
```
log level = 3
```

- ログファイルの場所

/var/log/samba/ディレクトリ内を確認します。

# まとめ
Raspberry Piと外付けHDDを使って、Time Machine対応のファイルサーバーを構築しました。
家族内でのファイル共有も設定し、ユーザーごとにアクセス権限を管理しました。
アクセス権限やSambaの設定に注意して、セキュリティを確保しました。