ゆるエンジニアはいろいろ遊びたい

FAエンジニアが週末にいろいろ遊ぶブログです

RaspberryPi5でNASを構築する

あまり使っていなかったSSDがあったので、今回はラズパイでNASを構築してみようと思います。
まずはSSDをフォーマットします。フォーマット形式は、ラズパイでNASを構築する場合はext4exFATのどちらかがよいらしい。

ext4: Linuxネイティブで、ラズパイサーバーで使うなら最も推奨される形式。安定性と速度が良い。
注意点: WindowsMacで直接接続しても認識されない(別途ドライバーが必要)。

exFAT: Windows, macOS, Linuxで読み書き可能。NASとして他のPCとデータを共有する際に便利。
注意点: ext4に比べるとLinuxでの機能面で劣る。

Copilotに聞いてみたらext4を激推しされたので、ext4でフォーマットしようと思います。

SSDのフォーマットとマウントの設定

ラズパイにSSDを接続し、ターミナルを開いてデバイス名を確認します。

lsblk

下記のような結果が出てきます

NAME        MAJ:MIN RM   SIZE RO TYPE MOUNTPOINTS
loop0         7:0    0     2G  0 loop 
sda           8:0    0 447.1G  0 disk 
├─sda1        8:1    0    16M  0 part 
└─sda2        8:2    0 447.1G  0 part /media/usr/NAS
mmcblk0     179:0    0  57.6G  0 disk 
├─mmcblk0p1 179:1    0   512M  0 part /boot/firmware
└─mmcblk0p2 179:2    0  57.1G  0 part /
zram0       254:0    0     2G  0 disk [SWAP]

この中のsda2の領域をフォーマットします。
SSDをアンマウントしてフォーマットします。ターミナルで

sudo umount /dev/sda2/
sudo mkfs.ext4 /dev/sda2

/dev/sda2 contains a ntfs file system labelled 'NAS'
Proceed anyway? (y,N)
と表示されるので"y"を入力。完了後、マウントポイントを作成してマウントします。

sudo mkdir -p /mnt/nas-ssd
sudo mount /dev/sda2 /mnt/nas-ssd

これで、/mnt/nas-ssdNAS用のストレージになります。
次に自動でマウントされるように設定します。SSDのUUIDを確認します。

sudo blkid /dev/sda2

ここで出てきたUUIDを、/etc/fstabに追記します。nanoエディタでファイルを開きます

sudo nano /etc/fstab

すると、数行の設定があると思いますので、下記を追記します。

UUID=xxxx-xxxx   /mnt/nas-ssd   ext4   defaults   0   2

リブートしてマウントが正常にされているか確認したらOKです。

共有サービスSambaのインストールと設定

ファイルの共有にはSambaというソフトを使います。

sudo apt install samba

インストール中、yかnの選択が迫られますが、yで進めます。
共有設定を編集します。

sudo nano /etc/samba/smb.conf

いろいろな設定がありますが、末尾に下記を記入します。

[NAS-SSD]
path = /mnt/nas-ssd
browseable = yes
writable = yes
guest ok = no
valid users = usr

usrはユーザー名を書きます。続いてこのユーザーを追加します。

sudo smbpasswd -a usr

パスワードの設定を求められますので入力します。

New SMB password:
Retype new SMB password:
Added user usr.

パスワードは入力してもターミナル上には表示されませんが、ちゃんと入力されています。
次にマウント先のディレクトリ権限を確認し、設定します。

ls -ld /mnt/nas-ssd

これが「root」になっていると、Samba経由で書き込みできません。先に設定したusrに権限を設定します。

sudo chown -R usr:usr /mnt/nas-ssd
sudo chmod -R 755 /mnt/nas-ssd

そしてサービス再起動

sudo systemctl restart smbd

Sambaの設定はこれで完了です。

Windowsでファイルにアクセルする

ネットワークの設定を変更します。コントロールパネルからネットワークと共有センターを選択します。
コントロールパネルを今までいじったことがないと、右上の表示方法が「大きいアイコン」になっているので、「小さいアイコン」にすると出てきます。
左側の「共有の詳細設定の変更」をクリックし、「プライベートネットワーク」セクションを展開します。

  • ネットワーク探索を有効にするを選択
  • ファイルとプリンターの共有を有効にするを選択

スタートメニュー→「設定」→「ネットワークとインターネット」で、現在の接続を選択し、ネットワークプロファイルを変更します。

デフォルトは「パブリックネットワーク」ですが、「プライベートネットワーク」に変更します。

続いて、エクスプローラーを開き、左側の「ネットワーク」のアイコンを右クリックして、「ネットワークドライブの割り当て」をクリックします。

ここで、フォルダーに「\\ホスト名\nas-ssd」と入力するとパスワードの入力を求められます。
「資格情報を記憶」するにチェックを入れておくと、再起動後などに接続が切れなくなります。
ネットワークドライブが作成されれば、USBメモリのようにエクスプローラからWindows上でフォルダを作成したり、ファイルを追加したりと自由に扱えます。

スマホからのアクセスはアプリを使う

スマホからNASにアクセスする場合は、「CX ファイルエクスプローラ」などのアプリを使うと接続できました。
ただ、ラズパイのNAS以外のデータへもすべてアクセスできてしまう事が判明しました。もう一度、Sambaの設定を見直します。

sudo nano /etc/samba/smb.conf

ここで、「[homes]」と「[printers]」の部分をすべてコメントアウトします。

#[homes]
#   comment = Home Directories
#   browseable = no
#   read only = yes
・
・
・
[printers]
#   comment = All Printers
#   browseable = no
#   path = /var/tmp
#   printable = yes
#   guest ok = no
#   read only = yes
#   create mask = 0700

Sambaをリスタートします。

sudo systemctl restart smbd

これでNASにのみアクセスが可能になるようになりました。
実際にホームサーバーを立ててみて、結構便利だなと思いました。音楽をサーバー経由で聴いたり、スマホの動画もサーバーに送ればgoogleフォトにバックアップしなくてもいいので容量も気にしなくてもいいですしね。
そして、すべてCopilotにナビしてもらって構築したのですが、すごく楽でしたね。これはすごいと思いました。
ラズパイはなんとなく電子工作やってみようかなって感じで買って遊んでたので、まさか自分でサーバーを構築するとは思ってもみませんでした。

余は満足じゃ。