RaspberryPi3でファイルサーバーをつくる。

ファイルサーバーってなんですか?

ファイルサーバーっていうと会社とか学校でよくあるファイルを共有出来るサーバーのことです。
家でファイルサーバーを立てると家のネットワークにつながったパソコンやタブレット、スマホから同じファイルにアクセスできます。

これの何が便利かというと、デバイスを何台か持ってる人はPCからノートPCにファイルを移動するときにUSBフラッシュメモリを使ったりしなくていいですし、スマホから写真を取り込むのも簡単に出来るかもしれません。
Dropboxで良いのではという意見も無視できませんが、ローカルネットワークの方が確実に高速なので映画などの動画のファイルを置いておいてそのまま再生するなんてことが可能です。自分もHDDに録りためた映画を有効活用するために使用しています。
f:id:Ocknamo_crypt:20171015235440p:plain

 

方法

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/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のドライブだと自動停止することが出来ませんでした。何か間違えていたのかもしれませんが時間がかかりそうなので諦めました。

Raspberry Pi Zeroのセットアップ

先月スイッチサイエンスさんでRaspberry Pi Zeroを購入しました。

Raspberry Pi Zero v1.3 – スイッチサイエンス

OSのRaspbian Jessie LITEをセットアップして初期設定を行い、動作テストしたのですが、
あんまりにもちっちゃいので逆に使いづらいのと、放熱対策もやんないとな、ということで自作のリグを作成して熱対策を行いました。

最終的にはこんな感じのものが出来上がりました。

 

f:id:Ocknamo_crypt:20170430181928j:plain

左がRaspberry Pi 3、右がRaspberry Pi Zero。
ええ、言いたいことはわかりますよ。 リグを含めると大きさがほとんど変わりませんね!
でも良いんです。
消費電力は確実に少なくなり、必要な電源の電流も2.5Aから1A以下(スペック非公開)になるというのが狙いなので。

 

(今回あんまり親切でない記事なので初心者の人は申し訳ありませんが、頑張って勉強してくださいm(__)m
自分も勉強しつつやったので解説できる余裕がありません(笑))

 

Raspberry Pi Zero(以下Zero)の購入とセットアップ

以下の画像が、俺がZeroの購入時に購入したものです。

f:id:Ocknamo_crypt:20170430182914j:plain

張り切ってUSBハブとUSBWifiモジュール、microSDカード、無線マウス+キーボード、HDMLコネクタを購入したのですが、
初期設定をやっていくと、この内USBハブとUSBWifiモジュール、あとOS用のmicroSDカード以外は必要ないことが判明しました(あっても問題はないですが)

 

初期設定はこちらのサイトと、
Raspberry Pi Zeroの購入からRaspbian Jessie LITEをセットアップするまでの方法 – karaage. [からあげ]
こちらのサイトさんを参考にしています。
Raspbianをヘッドレスインストールする (SSHの有効化) : アジャイル株式会社

あとSSH関連ではこことこことここ等を参考にさせてもらいました。
インフラエンジニアじゃなくても押さえておきたいSSHの基礎知識 – Qiita
簡単にサーバにファイル転送 – usmysaの開発メモ
SSH (1)

また個人的にjava8を入れておきたかったので、ここに記載されている方法でインストール。
ラズパイでJava8を使う – Qiita

SSHとか知らなかったので大変ではあったんですがメインPCでUbuntu使ってたので比較的やりやすかったです。
最終的に自分のPCのターミナルからZeroを動かせるようになります。
f:id:Ocknamo_crypt:20170430185145p:plain

 

これでとりあえずの初期設定は終わりました。
f:id:Ocknamo_crypt:20170430185308j:plain

しかしこんな感じだとかっこわるい+放熱対策もしたかったので、リグを自作することにしました。

 

長くなったので次の記事に分割します!
それではまた。