Raspberry Piで手のひらサーバーを作ろう(2) [ファイルサーバを作る]


ラズパイでファイルサーバーをつくろう

前回、ラズパイにCentOSをインストールすることができました。

このCentOSというOSは商業的なサーバーにも使われているOSであるため、このラズパイでも本格的なサーバーと同じような事を行うことが出来ます。

今回はサーバーとして代表的な機能であるファイルサーバーを構築します。

ファイルサーバーとは何か

ファイルサーバーとは、LAN上にファイルを保存し共有できるように構成されたコンピューターの事を言います。

パソコンやスマホに保存されたデータを他のコンピューターやりとりする場合、そのコンピューターを起動しておかなければならず、それぞれのパソコンで共有の設定なども行わなくてはならないため非常に不便です。そんな時に役立つのファイルサーバーで、常に起動している共有専用のコンピューターを用意しておけば共有も簡単になり、常に最新のデータにいつでもアクセスできるようになります。

ファイルサーバーを置くメリット

ファイルサーバーを導入した場合の主な利用方法は、データの共有とバックアップです。

ファイルサーバーがない状態でのデータのやり取りは、USBメモリやメール・オンラインストレージなどで受け渡しをしなければいけません。作業自体は手軽である一方でUSBメモリは書き込み・読み込み時間に時間がかかり、オンラインストレージなども容量制限・通信環境などの影響を受けてしまうため時間がかかるという欠点があります。そこにファイルサーバーを設置すれば、サーバーに共有したいファイルを設置するだけで受け渡し・共有ができるので快適なデータのやり取りができます。

また、ファイルサーバー独特の特徴として、アクセスできる人をファイルごとに個別に設定が可能です。読込だけできる人・編集もできる人などを適切に設定することで、安全にデータを共有することが出来ます。

家庭内・オフィスでのファイル共有

家庭内などでは、写真や録画した動画などの共有が主な使い道になると思います。身近なファイルサーバーとと言えばHDDレコーダーなどもあるでしょう。LANに繋いでタブレットで録画した動画を見れるようにしていれば、それも一種のファイルサーバーと言えます(正確にはメディアサーバーと言うのが適切でしょうが)

また、オフィスなどではWord文書やExcelブックを共有フォルダに入れておくと、他のメンバーが観覧・編集することが出来るので、作業を効率的に進める事が出来ます。

今回の構成図

恐らく、ほとんどの家庭のネットワーク構成は下記のようになっていると思います。一般的な環境であればIPアドレスはルーターから自動で振られるので、ネットワーク周りの設定は必要ありません。

ですが、住居環境やネットワーク構成によってはルーターの管理がマンションだったり、そもそもルーターを使っていないネット環境もあるでしょうから、その辺は工夫が必要になります。

ラズパイをファイルサーバーにする手順

ラズパイをファイルサーバーにするにはファイルサーバーを構成するSambaというソフトウェアをインストールする必要があります。この項目では、その手順を説明します。

Raspberry Pi 2+にはCentOSインストールされた状態で説明します。ラズパイの操作はSSHで行い、TeraTermを使用します。(raspbianでもファイルサーバーを構成できますが、コマンドが若干異なるので注意です。)

ファイルサーバーの構築

# yum install samba -y
# mkdir /home/phenomenon
# chmod 777 /home/phenomenon
# vi /etc/samba/smb.conf


# See smb.conf.example for a more detailed config file or
# read the smb.conf manpage.
# Run 'testparm' to verify the config is correct after
# you modified it.

[global]
 workgroup = WORKGROUP
 security = user
 map to guest = Bad User

 passdb backend = tdbsam

 netbios name = phenomenon

 printing = cups
 printcap name = cups
 load printers = yes
 cups options = raw

[printers]
 comment = All Printers
 path = /var/tmp
 printable = Yes
 create mask = 0600
 browseable = No

[print$]
 comment = Printer Drivers
 path = /var/lib/samba/drivers
 write list = root
 create mask = 0664
 directory mask = 0775

[phenomenon]
 path = /home/phenomenon
 writable = yes
 guest ok = yes
 guest only = yes
 browsable = yes


# firewall-cmd --add-service=samba --permanent
# firewall-cmd --reload
# systemctl start smb nmb 
# systemctl enable smb nmb

①Sambaのダウンロードとインストール

上に記載してあるコマンドを一通り実行するだけでファイルサーバーは構築できますが、何を意味してるのか分からないという方もいると思うのでひとつづつ解説していきます

ラズパイをファイルサーバーとして構成するには、Sambaというサーバー機能を提供してくれるソフトウェアをインストールします。

CentOSでのソフトのインストールにはyumコマンドを使います。yumにinstallオプションをつけて、インストールしたいソフト名を記述すると自動でダウンロード・インストールしてくれます。

SambaのインストールにはTeraTermでSSHログインし、下記のコマンドを入力します。

# yum install samba -y

②共有するフォルダを作る

次に、共有するフォルダを作ります。mkdirコマンドはフォルダを作るコマンドです。

下記のコマンドを入力することによって、共有するためのフォルダを作ります。今回はhomeディレクトリ内に共有用のフォルダを作ります。

# mkdir /home/phenomenon

③アクセス権を変更する(だれでもアクセスできるようにする)

共有するためのフォルダを作りましたが、Linuxはユーザー毎のアクセスが厳しく設定されており、このままでは共有してもアクセスが出来ません。

chmodコマンドを使って、誰でもアクセスできるように権限を変更します。ここではすべてのユーザーが読み取り・書き換え・実行すべてできるように変更します。

# chmod 777 /home/phenomenon

④Sambaの設定ファイルを変更する

共有するフォルダの準備が出来たら、次はSambaの設定に入ります。

/etc/samba/smb.confに共有するフォルダやアクセス権の設定を追記することで、共有する範囲を細かく設定することが出来ます。今回は先ほど作成した/home/testフォルダのみを共有するようにし、誰でもアクセスできるような設定にします。

# vi /etc/samba/smb.conf

上のコマンドを入力するとsmb.confファイルの編集画面になります。viエディタは操作にコマンドが必要なので覚えておきましょう。

smb.confの設定例は下記のようになります。設定内容としては、先ほど作成したフォルダを共有にし、誰でもアクセスできるようにします。

# See smb.conf.example for a more detailed config file or
# read the smb.conf manpage.
# Run 'testparm' to verify the config is correct after
# you modified it.

[global]
 workgroup = WORKGROUP
 security = user
 map to guest = Bad User

 passdb backend = tdbsam

 netbios name = phenomenon

 printing = cups
 printcap name = cups
 load printers = yes
 cups options = raw

[printers]
 comment = All Printers
 path = /var/tmp
 printable = Yes
 create mask = 0600
 browseable = No

[print$]
 comment = Printer Drivers
 path = /var/lib/samba/drivers
 write list = root
 create mask = 0664
 directory mask = 0775

[phenomenon]
 path = /home/phenomenon
 writable = yes
 guest ok = yes
 guest only = yes
 browsable = yes

⑤ファイアーウォールの設定を変更する

ファイアウォールが有効になっていると外部からアクセスできないので、sambaをファイアウォールの例外に追加します。

# firewall-cmd --add-service=samba --permanent
# firewall-cmd --reload

⑥Sambaを開始する

ここまで来たらSambaの設定は完了です。最後にSambaの有効化コマンドと自動起動のコマンドを入れて完了です。

# systemctl start smb nmb 
# systemctl enable smb nmb

これで特に問題がなければSambaが起動し、ファイルサーバーが起動します。systemctl status smbを実行してactive(running)になっていれば正常に実行されています。

# systemctl status smb

● smb.service - Samba SMB Daemon
 Loaded: loaded (/usr/lib/systemd/system/smb.service; enabled; vendor preset: disabled)
 Active: active (running) since 木 1970-01-01 09:00:28 JST; 47 years 4 months ago
 Main PID: 525 (smbd)
 Status: "smbd: ready to serve connections..."
 CGroup: /system.slice/smb.service
 tq 525 /usr/sbin/smbd
 tq 533 /usr/sbin/smbd
 tq 534 /usr/sbin/smbd
 tq 566 /usr/sbin/smbd
 tq26333 /usr/sbin/smbd
 mq26390 /usr/sbin/smbd

 

アクセスしてみる

Sambaを実行すると、他のパソコンから共有フォルダにアクセスできるようになります。

ラズパイにはエクスプローラを開き、アドレスバーに\\コンピュータ名を入力すればアクセスすることが出来ます。この共有フォルダを右クリックしてネットワークドライブの割り当てを行えば通常のドライブのように使用することも可能です。

ラズパイにアクセスしたところ。Sambaで設定したフォルダが共有フォルダとして見えており、この中に自由にデータを入れる事が出来る。

 

まとめ

今回はラズパイを使った簡易的なファイルサーバーを構成してみました。内容的にはCentOS内にSambaをインストールするだけなので、サーバー構築としては簡単な部類に入ると思います。

ファイルサーバー単体としての運用を考えた場合、IODATAやBUFFALOの安価NASでも買えばいいのでしょうが、5000円以下で買えるネイティブなLinuxマシンを置いておけるというのは非常に楽しいものです。

また、ラズパイをファイルサーバーにすれば余ったSDカードやHDDをNASのように使用することができます。

この構成では/homeフォルダを共有にしているため、共有フォルダの容量はCentOSをインストールしているSDカードの容量分しか使う事が出来ません。ですが、外付けHDDなどを接続すればさらに大容量のファイルサーバーを構成することもできます。(外付けドライブなどはマウントなどの設定が必要になるため、もう少し複雑な設定をしなければいけませんが)

また、前回の記事から続けてみた方であれば気づいた人もいるかもしれませんが、sambaを構成するとLinuxマシンへのアクセスにコンピューター名を使えるようになります。本来ならDNSサーバーを置いて名前解決を行わなければならない処理ですが、小規模なWindows系のネットワークではDNSサーバを置くことはまずないでしょうから、Sambaがブロードキャストを使った名前解決を手助けしてくれるようになります。もちろん、sshやpingもコンピューター名でアクセスできるようになっています。これはありがたい。