Raspberry Pi 5 を使って RAID 1 + Samba + VPN（Tailscale）対応の NAS を構築する方法

## **はじめに**
Raspberry Pi 5 を使って、**RAID 1（ミラーリング）を構築し、Samba でファイル共有できる NAS を作成** しました。さらに、**Tailscale を使って外出先からも安全にアクセス可能** にしました。

本記事では **ローカルと外部（VPN）からアクセスできる NAS のセットアップ方法** をわかりやすく解説します。

---

## **使用した機器**
### **🖥 ハードウェア**
- **Raspberry Pi 5（8GB モデル）**
- **microSDカード（最低 16GB 以上、Ubuntu をインストール）**
- **USB接続のHDD / SSD ×2（RAID 1 構築用）**
- **USB 3.0 対応のHDDケース または SATA-USBアダプター**
- **有線LAN接続（Wi-Fi でも可だが安定性のため有線推奨）**

### **⚙️ ソフトウェア**
- **Ubuntu Server 22.04 LTS（64-bit）**
- **mdadm（RAID 1 構築用）**
- **Samba（ファイル共有）**
- **Tailscale（VPN 接続用）**

---

# **📌 ① Raspberry Pi 5 に Ubuntu 22.04 をインストール**

### **1. Ubuntu のダウンロード**
- [Ubuntu 公式サイト](https://ubuntu.com/download/raspberry-pi) から **Ubuntu Server 22.04 LTS (64-bit)** をダウンロード

### **2. Raspberry Pi Imager で書き込み**
1. `Raspberry Pi Imager` をダウンロード＆インストール
2. OS に `ubuntu-22.04-server-arm64.img` を選択
3. microSD または SSD に書き込み

### **3. 初回ログインとパスワード変更**
1. Raspberry Pi に microSD / SSD をセットし、電源 ON
2. HDMI + キーボードを接続し、以下のデフォルト情報でログイン
   ```bash
   ユーザー名: ubuntu
   パスワード: ubuntu
   ```
3. **初回ログイン時にパスワードを変更**

---

# **📌 ② SSH の有効化（リモート接続を可能にする）**

Raspberry Pi をリモートから操作できるようにするために、まず **SSH（Secure Shell）を有効化**します。これにより、毎回モニターやキーボードを接続しなくても、他の PC から接続して作業ができるようになります。

### **1. SSH サーバーをインストール**
```bash
sudo apt update
sudo apt install -y openssh-server
```

### **2. SSH を有効化して起動**
```bash
sudo systemctl enable ssh
sudo systemctl start ssh
```

### **3. 接続テスト（別の端末から）**
Raspberry Pi の IP アドレスが分かっている場合は、以下のようにして接続できます：
```bash
ssh ubuntu@<RaspberryPiのIPアドレス>
```

---

# **📌 ③ ローカル IP アドレスの固定**

NAS を安定運用するためには、**Raspberry Pi の IP アドレスを固定**することが重要です。デフォルトでは DHCP により起動ごとに IP アドレスが変わる可能性があるため、IP を手動で設定しましょう。

### **1. 現在の IP アドレスを確認**
```bash
ip a
```
出力例：
```
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500
    inet 192.168.1.150/24 brd 192.168.1.255 scope global dynamic eth0
```
ここでは `inet` の後ろの `192.168.1.150/24` が現在の IP です。

---

### **2. ルーターのゲートウェイ（デフォルトルート）を確認**
```bash
ip r | grep default
```
出力例：
```
default via 192.168.1.1 dev eth0 proto dhcp metric 100
```
ここで `192.168.1.1` がゲートウェイのアドレスです。

---

### **3. ネットワーク設定ファイルを編集**
```bash
sudo nano /etc/netplan/99-manual.yaml
```

以下のように編集します（例：`192.168.1.100` に固定）：

```yaml
network:
  ethernets:
    eth0:
      dhcp4: no
      addresses:
        - 192.168.1.100/24
      gateway4: 192.168.1.1
      nameservers:
        addresses:
          - 8.8.8.8
          - 1.1.1.1
  version: 2
```

---

### **4. 設定を適用**
```bash
sudo netplan apply
```

---

### **5. 固定 IP が設定されたか確認**
```bash
ip a | grep inet
```
✅ `192.168.1.100` が表示されていれば設定完了！

---

### **6. 他の端末から SSH 接続（確認）**
```bash
ssh ubuntu@192.168.1.100
```

---

## ✅ 補足
- IP アドレスは **ルーターの DHCP 範囲と重複しないように**設定してください。
- 固定 IP をルーター側で設定する（DHCP 予約）という方法もありますが、今回は Raspberry Pi 側で設定する方法を紹介しています。

---

# **📌 ④ RAID 1（ミラーリング）の構築**

### **1. RAID 構築用の `mdadm` をインストール**
```bash
sudo apt install -y mdadm
```

### **2. RAID 1 を作成（HDD 2台: `/dev/sda` `/dev/sdb`）**
```bash
sudo mdadm --create --verbose /dev/md0 --level=1 --raid-devices=2 /dev/sda /dev/sdb
```

### **3. ファイルシステムを作成 & マウント**
```bash
sudo mkfs.ext4 /dev/md0
sudo mkdir -p /mnt/nas
sudo mount /dev/md0 /mnt/nas
```

### **4. 再起動後も自動マウントを設定**
UUID を確認:
```bash
sudo blkid /dev/md0
```
出力された UUID を `/etc/fstab` に追加:
```bash
sudo nano /etc/fstab
```
```
UUID=xxxxxx /mnt/nas ext4 defaults,nofail,discard 0 2
```
適用:
```bash
sudo mount -a
```

---

# **📌 ⑤ Samba の設定（NAS 構築）**

### **1. Samba をインストール**
```bash
sudo apt install -y samba
```

### **2. Samba の設定を変更**
```bash
sudo nano /etc/samba/smb.conf
```
末尾に追加:
```
[NAS]
  path = /mnt/nas
  browseable = yes
  writable = yes
  guest ok = no
  valid users = ubuntu
```
Samba を再起動:
```bash
sudo systemctl restart smbd
```

### **3. Samba ユーザーを作成**
```bash
sudo smbpasswd -a ubuntu
```

### **4. Windows / Mac / iPhone から接続**
- **Windows:** `\\192.168.1.100\NAS`
- **Mac / iPhone:** `smb://192.168.1.100/NAS`

---

# **📌 ⑥ Tailscale を使った外部アクセス設定（VPN）**

外出先からも NAS に安全にアクセスできるよう、**Tailscale** を使って VPN を構築します。Tailscale は設定が簡単で、NAT やポート開放なしでセキュアな通信が可能です。

### **1. Tailscale のインストール**
```bash
curl -fsSL https://tailscale.com/install.sh | sh
```

### **2. Tailscale にログインして接続**
```bash
sudo tailscale up
```
このとき、URL が表示されるので、ブラウザでアクセスして Google / GitHub などでログインすれば OK。

### **3. Tailscale IP アドレスの確認**
```bash
tailscale ip -4
```
例: `100.101.102.103` のような IP が割り当てられます。

### **4. 外部からアクセス**
外出先の PC やスマホにも Tailscale をインストールし、同じアカウントでログインすると、自宅 NAS に VPN 経由でアクセスできます。

- **Windows/Mac:** `\\100.101.102.103\NAS`
- **Mac/iPhone:** `smb://100.101.102.103/NAS`

---

# **📌 ⑦ 動作確認と便利な使い方**

### ✅ **RAID 状態の確認**
```bash
cat /proc/mdstat
```

### ✅ **Samba 接続確認（Windows）**
- エクスプローラーのアドレスバーに `\\192.168.1.100\NAS` を入力

### ✅ **Tailscale 経由の接続確認**
外出先から NAS に接続できるか確認しましょう。接続できない場合は、Samba のファイアウォールや Tailscale の ACL 設定を見直します。

---

# **📌 ⑧ まとめ**

この記事では、以下のように Raspberry Pi を使った NAS を構築しました：

- **RAID 1 によるデータの安全性確保**
- **Samba による家庭内ファイル共有**
- **Tailscale による外部アクセス対応**

小型で省電力な Raspberry Pi でも、ちょっとした工夫と設定で立派な NAS が完成します。自宅サーバーの第一歩として、ぜひチャレンジしてみてください！

---