RaspberryPi3でファイルサーバーをつくる。
Posted: 2017-10-15
ファイルサーバーってなんですか?
ファイルサーバーっていうと会社とか学校でよくあるファイルを共有出来るサーバーのことです。 家でファイルサーバーを立てると家のネットワークにつながったパソコンやタブレット、スマホから同じファイルにアクセスできます。
これの何が便利かというと、デバイスを何台か持ってる人は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 = 50
dos 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/tc p という恥ずかしいミスでした。修正したら接続できました。)
仕方がないので以下のようにローカルネットワークからは全部通るように設定しました(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 のドライブだと自動停止することが出来ませんでした。何か間違えていたのかもしれませんが時間がかかりそうなので諦めました。