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ステップで、特に難しい点はありません。製品画像に手順が記載されています。

    1. アクティブクーラーをRaspberry Pi基板に取り付け
    2. FPCケーブルの向きを確認(✕印と✓印あり)
    3. FPCケーブルを接続
    4. スペーサーを取り付け
    5. M.2 HAT+にSSD(2230)を装着
    6. HAT+を基板の上に固定
    7. ケースに収める
    8. ネジで固定して完成

    組み立て後のポートの位置確認:

    • 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接続

    1. 書き込み済みmicroSDをRaspberry Piに挿入
    2. LANケーブルでルーターと接続
    3. 電源アダプタを接続(自動起動)
    4. 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
    

    以下の順に操作します。

    1. 6 Advanced Options → Enter
    2. A4 Boot Order → Enter
    3. B2 NVMe/USB Boot → Enter
    4. EEPROMの更新確認 → Yes
    5. 「NVMe/USB is default boot device」と表示される → OK
    6. 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)

    1. https://tailscale.com/download からWindows版をダウンロード・インストール
    2. Raspberry Pi側と同じアカウントでログイン
    3. エクスプローラーで \\100.x.x.x\NAS にアクセス

    MacやスマホからNASに接続

    Macの場合

    1. Mac App StoreからTailscaleをインストール
    2. 同じアカウントでログイン
    3. Finderのメニューバーから 移動 → サーバへ接続(⌘+K)
    4. smb://100.x.x.x/NAS と入力して接続

    iPhone / Androidの場合

    1. App Store / Google PlayからTailscaleアプリをインストール
    2. 同じアカウントでログイン
    3. ファイラーアプリ(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として非常にバランスが良い構成です。月額クラウド料金から解放されたい方、自宅サーバーに興味がある方は、試してみてください。