Raspberry Pi

ラズパイ4 + sambaで自宅にファイルサーバーを構築

こんにちは鹿せんべいです。

これまでRaspberry Pi4を購入〜組み立て〜VPNサーバ構築まで見てきたわけですが、今回はラズパイ4をファイルサーバに仕立てあげようと思います。

前回のVPNサーバーと併用することで、自宅以外の場所(自宅のWi-Fiの圏外)から自宅のファイルサーバーにアクセスできるようになります!

これまでの記事

環境や前提

環境

  • サーバー側:ラズパイ(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形式にフォーマットした際の記事です。やり方など参考にしてください。

マウント設定

フォーマットができたら、ラズパイにHDDを接続します。ちなみにUSBさしても自動で認識はされないので、ラズパイにexfat-fuseとexfat-utilsをインストールする必要があります。

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に接続できました!!

参考

※補足など

ちなみに上記の設定を行うと、自宅の外にいて別のネットワークに接続していてもVPNサーバであるラズパイに対してVPNセッションを張っている状態だと、問題なく共有ファイルにアクセスすることができました。

これは非常に便利だ。