ラズパイ4 + sambaで自宅にファイルサーバーを構築
目次
環境や前提
環境
- サーバー側:ラズパイ(Raspberry Pi 4 Model B)
- OS: Raspbian3.3.1
- samba
- Version 4.9.5-Debian
- クライアント側:MacBook Pro
- プロセッサ名: Intel Core i5
- メモリ: 8 GB
- OS: version10.13.6
前提
ファイルサーバーとして稼働させるRaspberry Pi4は既にsofretherでVPNサーバとして稼働しています。なので、ラズパイ4が参加しているネットワーク外からもアクセスできることを目指しています。
ただ、VPNサーバとして稼働させていなかったとしても、同じネットワーク内からはファイルサーバにアクセスすることができます。
そもそもNASとファイルサーバーの違いとは
当初ラズパイをNAS(Network Attached Storage)にするのだ、と息巻いていたのですが、認識が間違っていました。
一般的な外付けHDDはPCにUSB接続することが基本です。USBで接続しているPCのみがデータの読み書きを行うことができます。別のPCとのデータ共有のためにはUSBを抜き差ししたりする必要が発生しますね。
一方NASは、ネットワークに直接接続します。ルーターやHUBなどとLAN接続を行うということです。NASにIPが振られるので、ネットワークに参加しているPCなどからアクセスできるので、データの共有が楽だというわけですね。
ファイルサーバは外付けHDDが接続されたPC(サーバ)がネットワークに参加し、そのPCを通してその他のPCやスマホからHDDにデータの書き込みを行います。
今回の外付けHDDはラズパイにUSBで接続し、そのラズパイを通してデータの共有を図るので、ファイルサーバという方が正しいと思います。
ラズパイに接続するHDDの設定
フォーマット
ファイルサーバとしての構築を試みる以上、様々なOSからのアクセスが想定されます。
実際にMacやWindowsやLinuxなどが自宅のネットワーク内に存在します。
ですので、どのOSでも読み書きができる形式にフォーマットする必要があります。
現時点では、exFAT形式でフォーマットするのが最適解です。
以下、Macを使ってHDDをexFAT形式にフォーマットした際の記事です。やり方など参考にしてください。
https://synrock-tech.com/hardware/storage/hdd-format
マウント設定
フォーマットができたら、ラズパイにHDDを接続します。ちなみにUSBさしても自動で認識はされないので、ラズパイにexfat-fuseとexfat-utilsをインストールする必要があります。
https://synrock-tech.com/hardware/storage/hdddrive-mounting
Samba設定
HDDが用意できたら、いよいよsambaの設定を行っていきます。
sambaインストール
まずシステムファイルを最新化しておきましょう。
pi@raspberrypi:~ $ sudo apt update
pi@raspberrypi:~ $ sudo apt upgrade
アップデートが終わったら、sambaをインストールします。
pi@raspberrypi:~ $ sudo apt install samba samba-common-bin
途中で以下のような画面が表示され、<はい><いいえ>の選択を迫られますが、<いいえ>を選択し、続行します。
WINS(Windows Internet Name Service)からコンピュータ名とIPアドレスをひも付けたものを提供してもらう仕組みですが、かつてのバージョンのWindowsで使われていた機能
https://www.itmedia.co.jp/news/articles/2002/09/news012.html
sambaのインストールが済んだら、共有用のファイルを作成します。
pi@raspberrypi:~ $ sudo mkdir /media/pi/xx/public
※xxの部分は/media/piのディレクトリ以下に見えているHDDの名前を入力します。
続いてsambaの設定を行います。
pi@raspberrypi:~ $ sudo vim /etc/samba/smb.conf
[raspberry_pi]
comment = raspberrypi_share
path = /media/pi/xx/public
read only = no
guest ok = yes
force user = pi
- comment: 任意のコメント
- path: 先ほど作成した共有用のファイルパスを指定
- read only: 読み取り専用か否か→書き込みもしたいので、yes
- guest ok: ゲストアカウント(パスワード不要)での接続を許可するか否か
- force user: 接続する全てのユーザーのデフォルトユーザーとして割り当てられるUNIXユーザー名を指定。
sambaのユーザー登録
先ほどforce userに設定したユーザーを登録します。 パスワードはMacやWindowsからの接続時に必要なので、忘れないでください。
パスワードと確認用のパスワードを同じものを2回入力します。
pi@raspberrypi:~ $ sudo smbpasswd -a pi
New SMB password:
Retype new SMB password:
Added user pi.
pi@raspberrypi:~ $
added user pi と表示され、piというユーザーが登録されました。
ここまで設定ができたら、sambaを再起動させ設定を反映させましょう。
pi@raspberrypi:~ $ sudo systemctl restart smbd
念のためにステータスを確認しておきます。
pi@raspberrypi:/ $ sudo systemctl status smbd
● smbd.service - Samba SMB Daemon
Loaded: loaded (/lib/systemd/system/smbd.service; enabled; vendor preset: enabled)
Active: active (running)
Active: active (running)と表示されているので、sambaが起動していることがわかります。
以上で、sambaの設定は終了です。
Macから接続確認
それではMacBookの設定を行います。
Finderの上部メニューの移動からセーバへ接続を選択します。
smb://[ラズパイのIPアドレス]を入力します。
入力ができたら、接続をクリック。
ゲストでも接続を行うことができますが、ここでは登録ユーザー(先ほど登録したユーザー)で接続します。名前とパスワードを入力して、接続をクリックします。
Finderの共有のところにラズパイのIPアドレスが表示され、HDDに接続できました!!
参考
- ラズパイで自宅ファイルサーバを作る: https://www.itmedia.co.jp/news/articles/2002/09/news012.html
- samba.org: https://www.samba.org/samba/docs/current/man-html/smb.conf.5.html
- RaspberryPi2でMacとWindows両対応のNASを構築する: https://qiita.com/rkonno/items/54b2e4b8770c8b0b2bcd
- 第14回 Raspberry Piのファイルサーバ設定: https://tool-lab.com/raspberrypi-startup-14/
※補足など
ちなみに上記の設定を行うと、自宅の外にいて別のネットワークに接続していてもVPNサーバであるラズパイに対してVPNセッションを張っている状態だと、問題なく共有ファイルにアクセスすることができました。
これは非常に便利だ。