Google DriveやiCloudの容量が足りない。市販NASは外部アクセスに制限がある。
pCloudはファイルの競合で大事なデータが消えた——。
そんな不満を解消すべく、Raspberry Pi 5(8GB) と NVMe SSD 1TB で自宅NASを構築しました。Tailscaleを使えば、外出先のMacやスマホからも自宅のファイルにアクセスできます。
この記事では、パーツ選定からセットアップ完了まで、実際のコマンドを交えて解説します。
なぜRaspberry Pi NASなのか
市販NAS・クラウドストレージの限界
筆者はこれまで、Buffalo LS510DシリーズのNASと、クラウドストレージのpCloudを使ってきましたが、どちらも実用上の問題がありました。
BuffaloNAS.comの制限:
- 外部アクセスはBuffaloNAS.com経由のみで、速度が遅い
- Finderにディレクトリを表示できない
- FTPでも接続できない
- ドラッグ&ドロップでのアップロード・ダウンロード不可
- 1ファイルずつしかアップロード・ダウンロードできない
- Windows/Mac間のファイル共有として機能しなかった
pCloudの問題:
- とにかく。
[conflict]ファイルを大量に生成しすぎ - 同期の競合でファイルが消失しすぎ
- 現在はWindows単体のバックアップ用途に限定
Raspberry Pi NASのメリット
- 制限なしなLAN内と同じ速度でフルアクセス
- 月額料金ゼロな電気代は月100円程度
- 拡張性なDocker、Nextcloud、APIサーバーなど自由に追加可能
- プライバシーなデータはすべて自分の手元
購入パーツと費用
| パーツ | 製品 | 価格(税込) |
|---|---|---|
| 本体 | Raspberry Pi 5 / 8GB(SC1112) | 23,375円 |
| ストレージ | Raspberry Pi 公式SSD 1TB(SC1984, 2230) | 22,770円 |
| ケース+HAT+冷却 | GeeekPi メタルケースセット | 4,601円 |
| 電源 | USB電源アダプター 5V 5A Type C | 2,420円 |
| OS書き込み用 | Apacer microSD 32GB | 1,650円 |
| 合計 | 約54,816円 |
その他、USB microSDカードリーダー(100円ショップ)、LANケーブルが必要です。
パーツ選定のポイント
なぜ8GBモデルなのか
NAS用途(Samba + Tailscale)だけなら4GBで十分です。しかし、将来的にDockerで複数コンテナを動かしたい場合は8GBが必要になります。
たとえば、Puppeteer(ヘッドレスChromium)を使うCritical CSS生成APIをDockerで動かす場合、Chromiumだけで500MB〜1.5GBのメモリを消費します。4GBではNASと同時に動かすのが厳しくなります。
なぜ公式SSD(2230サイズ)なのか
Raspberry Pi 5のPCIeは2.0 x1(最大約450MB/s)なので、Gen4やGen5のSSDは性能過剰です。公式SSDはPCIe Gen3設計で消費電力が低く、RPi5のM.2 HAT+経由の5W電力制限にも最適化されています。
また、2026年2月時点ではNAND不足でGen3 SSDがほぼ終売・品薄状態でした。公式SSDは動作保証があり、相性問題もゼロです。
GeeekPiケースセットのコスパ
このセットには公式M.2 HAT+、アクティブクーラー、メタルケースが含まれています。バラ買い(HAT 2,200円 + クーラー 1,500円 + ケース 2,000円 = 5,700円)よりお得です。
組み立て
GeeekPiケースセットの組み立ては8ステップで、特に難しい点はありません。製品画像に手順が記載されています。

- アクティブクーラーをRaspberry Pi基板に取り付け
- FPCケーブルの向きを確認(✕印と✓印あり)
- FPCケーブルを接続
- スペーサーを取り付け
- M.2 HAT+にSSD(2230)を装着
- HAT+を基板の上に固定
- ケースに収める
- ネジで固定して完成
組み立て後のポートの位置確認:
- USB-C Power INな電源アダプタ接続用
- EthernetなLANケーブル接続用
- TF card slotなmicroSD挿入口
- USB 3.0 / 2.0な将来の拡張用(NAS構築時は使わない)

思ったより大きくない
OS書き込みと初期設定
必要なもの
- PC(Windows / Mac)
- USB microSDカードリーダー
- microSDカード(32GB)
Raspberry Pi Imagerのインストール
PCで https://www.raspberrypi.com/software/ にアクセスし、Raspberry Pi Imagerをダウンロード・インストールします。
書き込み設定
Imagerを起動し、以下の順に設定します。
1. デバイス選択
「Raspberry Pi 5」を選択。
2. OS選択
「Raspberry Pi OS (64-bit)」(Recommended)を選択。
3. ストレージ選択
microSDカードを選択。外付けHDDなど他のドライブを間違えないよう注意してください。
4. カスタマイズ設定
「次へ」を押すと「OSのカスタマイズをしますか?」と聞かれるので「設定を編集する」を選択。以下を設定します。
| 項目 | 設定値 |
|---|---|
| ホスト名 | naspi5(任意の名前) |
| Capital city | Tokyo (Japan) |
| Time zone | Asia/Tokyo |
| キーボードレイアウト | jp |
| ユーザー名 | 任意 |
| パスワード | 任意(SSH接続に使用) |
| Wi-Fi SSID | 自宅のSSID |
| Wi-Fiパスワード | 自宅のWi-Fiパスワード |
| SSHを有効化する | ON(重要!) |
| パスワード認証を使う | 選択 |
| Raspberry Pi Connect | OFF(Tailscaleを使うため不要) |

すべて設定したら書き込みを実行。数分で完了します。
NVMe SSDへのOS移行
初回起動とSSH接続
- 書き込み済みmicroSDをRaspberry Piに挿入
- LANケーブルでルーターと接続
- 電源アダプタを接続(自動起動)
- 2分ほど待ってから、PCのターミナルで接続
ssh ユーザー名@naspi5.local
初回接続時は「Are you sure you want to continue connecting?」と聞かれるので yes と入力。パスワードを入力してログインします。
SSDの認識確認
lsblk
以下のような出力が表示されればOKです。
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINTS
mmcblk0 179:0 0 29.2G 0 disk
├─mmcblk0p1 179:1 0 512M 0 part /boot/firmware
└─mmcblk0p2 179:2 0 28.6G 0 part /
nvme0n1 259:0 0 953.9G 0 disk

nvme0n1 が表示されていれば、NVMe SSD(約1TB)が認識されています。
microSDからSSDへクローン
まずgitをインストールし、rpi-cloneを取得します。
sudo apt update && sudo apt install -y git
git clone https://github.com/billw2/rpi-clone.git
sudo cp rpi-clone/rpi-clone /usr/local/sbin/
rpi-cloneを実行します。
sudo rpi-clone nvme0n1
注意: NVMeデバイス名が数字で終わるため警告が出ますが、
yesで続行してください。
ただし、rpi-cloneはNVMeのパーティション名(nvme0n1p1 形式)を正しく扱えずエラーになる場合があります。その場合は dd コマンドで直接クローンします。
sudo dd if=/dev/mmcblk0 of=/dev/nvme0n1 bs=4M status=progress

31GBのコピーに約5〜10分ほどかかります。途中で中断しないでください。
SSDパーティションの拡張
ddでコピーしただけでは、SSDの容量がmicroSD分(約29GB)しか使われていません。残りの領域を使えるようにします。
sudo parted /dev/nvme0n1 resizepart 2 100%
resize2fs を実行する前に、ファイルシステムのチェックが必要です。
sudo e2fsck -f /dev/nvme0n1p2
sudo resize2fs /dev/nvme0n1p2
これで953GB全体が使えるようになります。
SSDブートの設定
現在はまだmicroSDから起動しているので、SSDから起動するよう変更します。
sudo raspi-config
以下の順に操作します。
- 6 Advanced Options → Enter
- A4 Boot Order → Enter
- B2 NVMe/USB Boot → Enter
- EEPROMの更新確認 → Yes
- 「NVMe/USB is default boot device」と表示される → OK
- Finish → 再起動するか聞かれたら Yes

再起動後、SSH接続が切れますが、1〜2分後に再接続できます。
ssh ユーザー名@naspi5.local
SSDブートの確認
lsblk
nvme0n1 259:0 0 953.9G 0 disk
├─nvme0n1p1 259:1 0 512M 0 part
└─nvme0n1p2 259:2 0 953.4G 0 part / ← ここが / になっていれば成功
nvme0n1p2 のMOUNTPOINTSが / になっていれば、SSDから起動できています。
Sambaでファイル共有
インストール
sudo apt update && sudo apt upgrade -y
sudo apt install -y samba
共有フォルダの作成
sudo mkdir -p /srv/nas
sudo chown ユーザー名:ユーザー名 /srv/nas
Samba設定
sudo nano /etc/samba/smb.conf
ファイルの一番下に以下を追加します。
[NAS]
path = /srv/nas
browseable = yes
writable = yes
valid users = ユーザー名
create mask = 0644
directory mask = 0755
Ctrl + O → Enter で保存、Ctrl + X で終了。
Sambaパスワードの設定
sudo smbpasswd -a ユーザー名
パスワードを設定します(SSH用と同じでもOK)。
サービス再起動
sudo systemctl restart smbd
Windowsからの接続テスト
エクスプローラーのアドレスバーに以下を入力。
\\naspi5\NAS

ユーザー名とSambaパスワードを入力すれば、共有フォルダが開きます。通常のフォルダと同じように、ドラッグ&ドロップでファイルの読み書きができます。
Tailscaleで外部アクセス
Tailscaleは無料のVPNサービスで、ポート開放不要・NAT越え自動で、外出先からも自宅NASにアクセスできるようにします。
Raspberry Pi側
curl -fsSL https://tailscale.com/install.sh | sudo sh
sudo tailscale up
認証用のURLが表示されるので、PCのブラウザで開きます。Google / Microsoft / GitHubアカウントでログインすれば接続完了です。
TailscaleのIPアドレスを確認します。
tailscale ip -4
100.x.x.x 形式のIPアドレスが表示されます。これが外部からNASにアクセスするためのアドレスです。
PC側(Windows)
- https://tailscale.com/download からWindows版をダウンロード・インストール
- Raspberry Pi側と同じアカウントでログイン
- エクスプローラーで
\\100.x.x.x\NASにアクセス
MacやスマホからNASに接続
Macの場合
- Mac App StoreからTailscaleをインストール
- 同じアカウントでログイン
- Finderのメニューバーから 移動 → サーバへ接続(⌘+K)
smb://100.x.x.x/NASと入力して接続

iPhone / Androidの場合
- App Store / Google PlayからTailscaleアプリをインストール
- 同じアカウントでログイン
- ファイラーアプリ(iOSなら「ファイル」アプリ)からSMBサーバーに接続
Tailscaleの管理画面(https://login.tailscale.com/admin/machines)で、接続中のデバイス一覧を確認できます。
セキュリティ上の注意点
この構成をブログ等で公開する場合、以下の情報は隠すようにしてください。
必ず隠すべき情報
| 情報 | 理由 |
|---|---|
| SSH / Sambaのパスワード | 直接ログインされる |
| Wi-Fi SSIDとパスワード | 自宅ネットワークに侵入される |
| Tailscale認証URL | アカウント乗っ取りの可能性 |
できれば隠した方がいい情報
| 情報 | 理由 |
|---|---|
| Tailscale IP(100.x.x.x) | Tailscaleネットワーク内でしか到達できないが念のため |
| SSHフィンガープリント | 中間者攻撃の判定に使われる可能性 |
| MACアドレス・リンクローカルアドレス | デバイス特定につながる |
公開して問題ない情報
ユーザー名(GitHubで公開済みなら)、ホスト名、コマンド内容、lsblk の出力、パッケージインストール画面などは問題ありません。
今後の拡張
Raspberry Pi 5(8GB)ならではの拡張が可能です。
DockerでAPIサーバー
たとえば、Puppeteer(ヘッドレスChromium)を使ったCritical CSS生成APIをDockerで常時稼働させられます。Vercel HobbyプランのタイムアウT(10秒)に悩まされていた処理も、自前サーバーなら5分でも待てます。
# Dockerインストール
curl -fsSL https://get.docker.com | sudo sh
sudo usermod -aG docker $USER
既存のDockerfileはARM64(aarch64)環境でそのまま動作します。node:20-slim もChromiumもARM64版が自動的に使われます。
Nextcloud
自分だけのクラウドストレージ。WebUIでファイル管理やカレンダー、連絡先も扱えます。
Jellyfin
自宅メディアサーバー。動画や音楽をスマホやTVからストリーミング再生。
温度管理
NAS用途ではCPU負荷が低いため、GeeekPiのアクティブクーラーで十分です。気になる場合は以下のコマンドで温度確認できます。
vcgencmd measure_temp
50〜60℃台なら快適、70℃台でも正常です。
まとめ
| 項目 | 結果 |
|---|---|
| 総費用 | 約54,000円(月額ゼロ) |
| ストレージ | NVMe SSD 953GB |
| Windowsアクセス | \\naspi5\NAS |
| Macアクセス | smb://100.x.x.x/NAS |
| 外部アクセス | Tailscale経由でどこからでも |
| 拡張性 | Docker / Nextcloud / APIサーバー等 |
BuffaloNAS.comの制限(速度・ファイルサイズ・UIの制限)も、pCloudの同期競合問題も、すべて解消されました。
Raspberry Pi 5 + NVMe SSD + Tailscaleの組み合わせは、個人NASとして非常にバランスが良い構成です。月額クラウド料金から解放されたい方、自宅サーバーに興味がある方は、試してみてください。

