Raspberry Piを使ってファイル共有サーバと+α
Raspberry Pi に Sambaをインストールしてファイル共有サーバを構築してみた話.
まえがき
放置されていた Raspberry Pi 2
家で放置されていたRaspberry Pi 2(以降RPi2). そもそもなぜ放置されてたかというと家にはRaspberry Pi 3(以降RPi3)があったからで, またそのRPi3も放置されているようなもの(えぇ.
電子工作ですぐ使えるように1つは今は使わなくてもすぐ使えるようにはしておきたい. そのためにRPi3はストックしていることにしてる().
何をするか
最近思うことがあって, それがPC間のデータのやり取り. 家には家族共用Win7 PC, 自分のMac, 自分のUbuntu/Win10機があってたまに家族共有PCとMacとの間でデータのやり取りを行うわけですが, どのようにデータのやり取りを行っていたかというとUSBメモリでやり取りをしていたわけです. しかしこのデータのやり取り, なかなかに面倒で. USBメモリはいくつか持っていたはずなのですが, 必要な時に雲隠れしたりして… そこでRPi2をファイル共有サーバに仕上げれば便利ではないだろうか. と思ったわけです.
データの他にもURLなどの微小の情報も交換したい時があり, これを期に家内チャットとしてRocket.Chatを導入してみようと思います. このRocket.Chatは試験導入のような位置付けで導入を行うため, 詳しい設定や外部に公開する時としての設定, セキュリティの確保は行わないのでそういう感じで読んでもらえば…
本題
目次
- 環境
- Raspberry Piのセットアップ
- Sambaの導入
- Rocket.Chatの導入
環境
自分が行った時の環境は以下です.
- サーバ: Raspberry Pi 2 Model B, Raspbian Stretch lite(2017-11-29)
- クライアント: MacBook Pro (Retina, 13-inch, Early 2015), macOS High Sierra(10.13.3)
Raspberry Piのセットアップ
Raspberry Pi の基本的なセットアップはRaspberry Pi 3 をセットアップ+α(丸投げしてるけど)や他のサイトでよく取り上げられているのでそちらを参照してください.
ここではRaspbianを焼き, IPアドレスの固定を行いSSH接続が出来るという条件からのセットアップを書いておきます. まずはpi以外のユーザ(この中ではhogeとする)を作る.
$ sudo useradd -c "main user" -d /home/hoge -m hoge
このユーザをメインで使用するためpiが所属しているグループに所属させる.
# piのグループを表示
$ groups
pi adm dialout cdrom sudo audio video plugdev games users input netdev gpio i2c spi
# hogeにpiのセカンダリグループに所属させる.
$ sudo usermod -G adm dialout cdrom sudo audio video plugdev games users input netdev gpio i2c spi
次にhogeのパスワードを設定する
$ sudo passwd hoge
次にhogeがsudoを使えるようにする.
$ sudo visudo -f /etc/sudoers.d/hoge
書き込む内容は
$ hoge ALL=(ALL) ALL
これで保存する.
これで一旦exit
し, 再度hogeユーザでssh接続し直す.
ここでホームディレクトリやグループ, sudoで普通に使えるかどうかの確認をする.
問題がないようであればユーザ piを消す.
$ sudo userdel -r pi
Sambaの導入
Sambaとは
Sambaにはいくつかの機能があるが, 今回はそのいくつかの機能のうちのファイルサーバ機能を使用します. 最もポピュラな使われ方だと思うので, ネット上には多くの情報があり構築しやすいです.
ファイルサーバとはネットワーク上からアクセスできるフォルダを実装することで, これによりネットワーク内のクライアントはファイルサーバ上のデータを読み書きすることができるようになります.
Sambaのインストール
$ sudo apt install samba
おわり
Sambaのセットアップ
Samba用のユーザを作る.
$ sudo useradd -c "smb user" -d /home/samba -s /bin/false -m samba
-sオプションでデフォルトシェルを/bin/falseにしているのはsambaユーザでログインされるのを防ぐため. シェルが/bin/falseだと, ログインしようにもfalseが返って来るためログインすることができなくなります.
Sambaの設定ファイルである/etc/samba/smb.conf を編集して設定を行います.
$ sudo vim /etc/samba/smb.conf
Sambaの設定ファイルのうち
[grobal]セクションで全般設定を行います.
以下を追記/上書き
unix charset = UTF-8
dos charset = CP932
hosts allow = 192.168.1.
security = user
map to guest = Never
load printers = no
bind interfaces only = yes
interfaces = 192.168.XXX.XXX/NN ethM
これらの設定は
UNIXの文字コードとしてUTF-8, Windows機の文字コードとしてShift-JISに設定.
192.168.1.XXXのホストからのみ接続を許し, security = user
でユーザ名とパスワードを使う認証をデフォルトに設定. また, 不正なユーザからのアクセスは拒否する.
プリンタは使用しないのでload printers = no
, ユーザ定義共有は行わないので usershare allow guest = no
.
またbind interfaces only = yes
, interfaces = 192.168.XXX.XXX/NN ethM
で接続されるインターフェースを192.168.XXX.XXXでネットマスクがNN ethMに制限.
[homes], [printers]セクションは使用しないのでこれらを全てコメントアウト.
共有フォルダを設けるため, 以下を最終行に追記します.
[share]
comment = Public space
path = /home/samba
valid users = samba
force user = samba
writable = yes
create mask = 600
directory mask = 700
browseable = yes
vfs objects = recycle
recycle:repository = .Trash
recycle:keeptree = no
recycle:versions = yes
recycle:touch = no
recycle:maxsize = 0
recycle:exclude = *.tmp *.temp
これらの設定は共有するフォルダのパスを/home/sambaにし, ログイン可能なユーザはsambaのみで, 共有フォルダ内ではsambaユーザが絶対操作するようになっています. また, 書き込み許可, ゲスト接続のみ許可し, ファイルのパーミッションは644, ディレクトリは755, FinderやExplorで表示されるようにし, ゴミ箱(消しても.Trashディレクトリに残る)を有効にしています.
/etc/samba.smb.confの編集が終わった後, 構文チェックを行います.
testparm /etc/samba/smb.conf
ここで異常が見られなけれOKです.
次にsambaユーザをsambaのデータベースに登録します.
sudo pdbedit -a -u samba
ここでパスワードを聞かれるが, /etc/samba/smb.confでunix password sync = yes
がデフォルト設定なので, RPi上のユーザと同じものを入力.
ここでsambaを再起動.
sudo systemctl restart smbd.service
これでネットワーク上のRPiの共有フォルダにアクセスできれば, 完了です.
WindowsならWin+Rをし, ¥¥192.168.XXX.XXX
でアクセスできますし, macならFinderでcmd+Kをし, smb://192.168.XXX.XXX
と入力する事でアクセスできます.
Linux(Ubuntu 16.04 LTS)ならNautilus(標準ファイルマネージャ)でAlt+F, Sでsmb://192.168.XXX.XXX
と入力する事でアクセスできます.
Rocket.Chatの導入
Rocket.Chat とは
簡単にいうと野生のSlack. SlackのOSS版.
インストール
—以下割と適当—
Rocket.ChatのGitHubを見てもらうとインストール方法がかかれてます.
RPiにはSnappyというパッケージ管理システムを用いてインストールを行います.
まずはSnappyを導入.
sudo apt install snapd
Snappyが導入できたら, Rocket.Chatの導入.
sudo snap install rocketchat-server
Rocket.Chatの導入が終わればもうRocket.Chatが起動しているはずなので, http://[RPiのIPアドレス]:3000 にアクセスするとログイン画面が表示される.
もしかしたら
sudo systemctl start snap.rocketchat-server.rocketchat-*
しなければ動かないかもしれないです.
Rocket.Chatは最初にユーザ登録をしたアカウントが管理者アカウントになる.
あとは適当に使う…
おわり.
まとめ
ファイル共有サーバとしては理想の働きをしていて便利です. が, 自分しか使わない. 家族の他のメンバはGoogle Driveなどのクラウドサービスも使わないし, そもそもスマホ持っていない人すらいるのでやはり出番は少ないなぁ.
Rocket.Chatは結局ほぼ使っていない. ぶっちゃけ入れてみたかっただけです. Rocket.Chat部分消しても良さそう() とはいえ, Rocket.Chatのサービスは素晴らしいので学部学科内には布教させたさを感じている. いや, Slackでいいだろという意見もあるかもしれないけど, 改造ができるので. 情報系の学部内のチャットサービスは自分たちで弄って, 構築したいという感じはある.
Share this post
Twitter
Facebook
Reddit
Pinterest
LINE