ファイルサーバーってなんですか?
ファイルサーバーっていうと会社とか学校でよくあるファイルを共有出来るサーバーのことです。
家でファイルサーバーを立てると家のネットワークにつながったパソコンやタブレット、スマホから同じファイルにアクセスできます。
これの何が便利かというと、デバイスを何台か持ってる人はPCからノートPCにファイルを移動するときにUSBフラッシュメモリを使ったりしなくていいですし、スマホから写真を取り込むのも簡単に出来るかもしれません。
Dropboxで良いのではという意見も無視できませんが、ローカルネットワークの方が確実に高速なので映画などの動画のファイルを置いておいてそのまま再生するなんてことが可能です。自分もHDDに録りためた映画を有効活用するために使用しています。
方法
sambaを使用してRaspberryPi3をファイルサーバーにしました。
必要なものはCUIでインストールしたRaspberryPi3とHDDです。
RaspberryPi3のCUIインストールは以下を参考にしてください。
Raspberry Pi Zeroのセットアップ
記事はZeroですが大体一緒です。
HDDは中を初期化しなくてもそのまま使用できます。
samba導入
HDDの導入方法はこちらを参考にしました。
Raspberry Pi 2でファイルサーバを作るまでのまとめ – Qiita
sambaの設定ファイルの内容は上の内容そのままだと何故か上手く行かなかったため、こちらを参考に、
自作NASで自宅ファイルサーバー 第5回 (Sambaのインストール) – 東京伊勢海老通信
ちょっといじって使用したので設定内容を晒しておきます。
CLIモードでセットアップしたRaspberryPi3を一通りアップデート。
$ sudo apt-get update
$ sudo apt-get upgrade
$ sudo apt-get dist-upgrade
$ sudo rpi-update
$ sudo apt-get autoremove
$ sudo apt-get autoclean
ntfsでマウントするためntfs-3gをインストール
$ sudo apt-get install ntfs-3g
fat32の場合は何もインストールしないでも出来ました。
外付けHDDを繋いで認識してくれてるか確認。
$ sudo fdisk -l
認識していれば”/dev/sda1″などと表示されると思います。PINE64だと認識できない場合がありましたが今のところRasPiでは大丈夫そう。
マウントポイントを作成してマウント。
$ sudo mkdir /mnt/hdd1
$ sudo mount -t ntfs-3g /dev/sda1 /mnt/hdd1
マウントに成功していれば”df -h”を叩けば表示されます。
起動時に自動マウントされるように設定。
$ sudo blkid /dev/sda1
UUIDが表示されるので、
$ sudo nano /etc/fstab
でfstabを編集して以下の青字部分を追記します。
“☓☓☓☓☓☓☓☓☓☓☓☓☓☓☓☓☓☓☓☓”は先程確認したUUIDを入力します。
proc /proc proc defaults 0 0
/dev/mmcblk0p1 /boot vfat defaults 0 2
/dev/mmcblk0p2 / ext4 defaults,noatime 0 1
UUID=”☓☓☓☓☓☓☓☓☓☓☓☓☓☓☓☓☓☓☓☓” /mnt/hdd1 ntfs-3g defaults,nofail 0 0
# a swapfile is not a swap partition, so no using swapon|off from here on, use dphys-swapfile swap[on|off] for that
fat32の場合は青字部分を以下にすれば大丈夫でした。
UUID=”☓☓☓☓☓☓☓☓☓☓☓☓☓☓☓☓☓☓☓☓” /mnt/hdd1 vfat defaults,nofail 0 0
自動マウント出来ているかどうか、再起動してから”df -h”コマンドで確認しましょう。
$ sudo apt-get install samba
Samba導入
普通にインストールします。
$ sudo apt-get install samba
“/etc/samba/smb.conf”にある設定ファイルを書き換えます。
$ sudo cp /etc/samba/smb.conf /etc/samba/smb.conf.org
smb.conf.orgにバックアップを取っておきます。
$ sudo nano /etc/samba/smb.conf
でsmb.confの内容を以下に書き換えます。
workgroup = WORKGROUP
bind interfaces only = yes
map to guest = Bad User
log file = /var/log/samba/log.%m
max log size = 50dos charset = CP932
unix charset = UTF8
display charset = UTF8[homes]
comment = Home Directories
browseable = no
writable = yes[nas]
comment = Public Space for homenetwork
path = /mnt/hdd1/
public = Yes
guest ok = Yes
read only = No
writable = Yes
hosts allow = 192.168.
基本的に[nas]以下の部分がファイルサーバーの設定です。青字部分はマウント場所が変わったら変更になります。guestOKですがローカルネットワーク内からしかアクセスできないようにしています。
変更が終わったらsmb.confをチェックします。
$ sudo testparm /etc/samba/smb.conf
エラーメッセージが出たら何か間違っているので見直しましょう。
問題なければsambaを起動します。
$ sudo systemctl restart smbd
$ sudo systemctl enable smbd
これで接続できると思いきや、なぜか接続できませんでした。と思ったら自分で設定したufwの存在を忘れていました(ufwはファイヤーウォールです)。そこで設定をやり直し。
どのポート開ければ良いのか、いろいろ調べたんですが、sambaの使用しているであろう、137/udp,138/udp,139/tco,445/tcpを開放しても何故か接続できず……。(17/10/25追記: ☓139/tco → ◯139/tcp という恥ずかしいミスでした。修正したら接続できました。)
仕方がないので以下のようにローカルネットワークからは全部通るように設定しました(xxxは環境によって異なる値になる)。
$ sudo ufw disable
$ sudo ufw default deny
$ sudo ufw allow from 192.168.xxx.0/24
$ sudo ufw enable
その他
一応サーバーなのでRaspi3のネットワーク接続の方法をWifiから有線LANに変更。安定化に少しは役立つかどうかは不明です。
完成
smb://” ipアドレス “/
で接続できます。
メモ
・RasPiZeroだとDVDのイメージファイルをVLCプレイヤーで再生するとラグが発生したんですがRaspi3だとほとんどラグは発生しませんでした。
・fat32のドライブだと自動停止することが出来ませんでした。何か間違えていたのかもしれませんが時間がかかりそうなので諦めました。