ラズパイ3 でSambaサーバー構築法、Webminも入れると、クライアントPCからの設定・監視・コマンドが超便利になる!!
はじめに
ラズパイでデータ共有サーバーを構築すると非常に便利です。一般的な方法として、Windowsファイル共用のオープンソース”Samba”を入れ、conf設定ファイルの修正で行います。これだけではつまらないので、クライアントPCのWebブラウザで、Samba設定がいじれたり、状態を監視できる、Webminというオープンソースも入れてみました。
昔、PCにLinuxを入れた時に一度やったことがありましたが、ラズパイにも適用可能かやってみました。設定状況をWebブラウザで見える化すると、とても便利で、サーバーの動作の勉強にもなります。
ラズパイで共有サーバー実現方法
下記のように、方法1がだめでしたので、方法2で実現しました。
方法1:SWATという、Samba設定に特化したWebブラウザで操作するオープンソースが昔ありましたが、今、調べて見ると、最近のSamba-Ver4では、サポート中止・更新も止まっていました。(脆弱性の問題とか、そもそも更新する人がいなくなったためのようです。)
試しに、apt-getでインストールしてみると、やはり、SWATは廃止と考えて良いようです。
方法2:Samba設定を含め、サーバー各設定の管理まで行えるものに、Webminというもの、昔からありました。現在も更新されているようなので、今回はこれをラズパイにインストールしました。
外部ハードディスク接続
※chinathuでやってみた、外部HDのマウントから手順を復習を兼ねて追記しました。(1/10)
最初に、ハードディスクをアンマウントします。(自動でマウントされてある場合を想定して)
#dfコマンドでマウント状態の確認
pi@raspberrypi:~ $ df
Filesystem 1K-ブロック 使用 使用可 使用% マウント位置
/dev/root 7593848 6149268 1072628 86% /
devtmpfs 470116 0 470116 0% /dev
tmpfs 474724 0 474724 0% /dev/shm
tmpfs 474724 12388 462336 3% /run
tmpfs 5120 4 5116 1% /run/lock
tmpfs 474724 0 474724 0% /sys/fs/cgroup
/dev/mmcblk0p1 43539 22502 21037 52% /boot
tmpfs 94944 0 94944 0% /run/user/1000
/dev/sda1 1921802500 77856 1824032584 1%/media/pi/e1e1258a-8143-49db-a87b-21b4a8b0c46b
※ /sda1 でマウントされている例
# umount /dev/sda1 ← /dev/sda1 をアンマウント
pi@raspberrypi:~ $ df
Filesystem 1K-ブロック 使用 使用可 使用% マウント位置
/dev/root 7593848 6149264 1072632 86% /
devtmpfs 470116 0 470116 0% /dev
tmpfs 474724 0 474724 0% /dev/shm
tmpfs 474724 12384 462340 3% /run
tmpfs 5120 4 5116 1% /run/lock
tmpfs 474724 0 474724 0% /sys/fs/cgroup
/dev/mmcblk0p1 43539 22502 21037 52% /boot
tmpfs 94944 0 94944 0% /run/user/1000
※ /dev/sda1のマウントが解除され表示されなくなった
# パーティションテーブルの設定を行います
sudo fdisk /dev/sda1
# d でパーティションを削除
Command (m for help): d
Selected partition 1
Partition 1 has been deleted.
# p で現在の状態を確認
Command (m for help): p
Disk /dev/sda1: 1.8 TiB, 2000397868544 bytes, 3907027087 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0x19867eb5
# n でパーティションを作成 その後の設定で何も入力しない場合全てデフォルトとなる
pi@raspberrypi:~ $ sudo fdisk /dev/sda1 Welcome to fdisk (util-linux 2.29.2).
Changes will remain in memory only, until you decide to write them.
Be careful before using the write command. Device /dev/sda1 already contains a ext4 signature.
The signature will be removed by a write command. Device does not contain a recognized partition table.
Created a new DOS disklabel with disk identifier 0x19867eb5. Command (m for help): n
Partition type
p primary (0 primary, 0 extended, 4 free)
e extended (container for logical partitions)
Select (default p): p
Partition number (1-4, default 1):
First sector (2048-3907027086, default 2048):
Last sector, +sectors or +size{K,M,G,T,P} (2048-3907027086, default 3907027086): Created a new partition 1 of type 'Linux' and of size 1.8 TiB.
# p で再度現在の状態を確認
Command (m for help): p
Disk /dev/sda1: 1.8 TiB, 2000397868544 bytes, 3907027087 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0x19867eb5 Device Boot Start End Sectors Size Id Type
/dev/sda1p1 2048 3907027086 3907025039 1.8T 83 Linux
# w で変更を書き込みます
Command (m for help): w
The partition table has been altered.
Calling ioctl() to re-read partition table.
Re-reading the partition table failed.:無効な引数です
The kernel still uses the old table. The new table will be used at the next reboot or after you run partprobe(8) or kpartx(8).
ext4でフォーマットする
sudo mkfs.ext4 /dev/sda1
pi@raspberrypi-c:~ $ sudo mkfs.ext4 /dev/sda1
mke2fs 1.43.4 (31-Jan-2017)
Found a dos partition table in /dev/sda1
Proceed anyway? (y,N) y
Creating filesystem with 488378385 4k blocks and 122101760 inodes
Filesystem UUID: e94a9fef-fc73-4b8c-ae9b-56f0ee10fce8
Superblock backups stored on blocks:
32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208,
4096000, 7962624, 11239424, 20480000, 23887872, 71663616, 78675968,
102400000, 214990848 Allocating group tables: done
Writing inode tables: done
Creating journal (262144 blocks): done
Writing superblocks and filesystem accounting information: done
マウントする
/etc/fstabに、デバイスを登録することにより、起動時に自動マウントすることができます。 またデバイスのパスではなくUUIDを登録しておくことにより、デバイスのパスが変更されてもマウントすることが可能です。
マウントポイントを作成
必要に応じてマウントポイントを作成します。今回は/mnt/hdd1としました。
sudo mkdir /mnt/hdd1
UUIDを調べる
# ブロックデバイスの情報を表示する
pi@raspberrypi:~ $ sudo blkid /dev/sda1
/dev/sda1: UUID="e94a9fef-fc73-4b8c-ae9b-56f0ee10fce8" TYPE="ext4" PARTUUID="9bcc73b5-079a-4f69-a809-d0122aa289d1"
fstabを編集
# バックアップをとっておく
cd /etc
sudo cp fstab fstab.bak
# fstabを編集しマウント設定を追加
sudo nano fstab
# デバイス名 マウントポイント ファイルシステム オプション dump指定 fsck指定
UUID=e94a9fef-fc73-4b8c-ae9b-56f0ee10fce8 /mnt/hdd1 ext4 nofail 0 0
# 再起動
$ sudo reboot
# 確認
$ df
f | grep /mnt/hdd1
pi@raspberrypi:~ $ df | grep /mnt/hdd1
/dev/sda1 1921802500 77852 1824032588 1% /mnt/hdd
共用フォルダ作成
$ cd /mnt/hdd1
$ sudo mkdir Public
sambaのインストールと設定
sambaのインストール
pi@raspberrypi:~$ sudo apt install -y samba
設定ファイルに /mnt 以下を読み取り専用、ゲストアクセスOKで公開するよう設定を追加します。
#sambaの設定ファイルの編集
pi@raspberrypi:~$ sudo nano /etc/samba/smb.conf
/etc/samba/smb.conf
....
#ファイルの末尾に以下の行を追加
[Public]
comment = Public
path = /mnt/hdd1/Public
browseable = no
read only = no
guest ok = no
sambaを再起動して設定を有効にします。
#sambaの再起動
pi@raspberrypi:~$ sudo systemctl restart smbd nmbd
Windowsから ¥¥(録画サーバのIP)¥Public (¥は半角)にアクセスしてフォルダが見れれば成功です。
Webminインストール
前処理が必要で下記Debianの記事を参考にさせてもらいました。
前処理後、ようやくapt-getでインストールが出来ます
pi@raspberrypi:~ $ cd /
pi@raspberrypi:/ $ sudo wget http://www.webmin.com/jcameron-key.asc
pi@raspberrypi:/ $ sudo apt-key add jcameron-key.asc
pi@raspberrypi:/ $ sudo apt-get install apt-transport-https
pi@raspberrypi:/ $ sudo apt-get update
pi@raspberrypi:/ $ sudo apt-get install webmin
プライバシーポリシーが出るが、問題ないので、無視して進むと、webminの ID、パスワード要求メニューが出ます。ラズパイのユーザーIDは、”pi“ ,パスワードはインストール時に設定変更していると思うので、それを入れます。
/pre>
すると 英語のconfigメニューが現れる。言語設定メニューで日本語を入れると
日本語のwebmin設定画面になります。
/etc/samba/smb.conf の設定が画面で行える。設定を保存したら、ラズパイのコンソールで rebootしてあげると有効になるみたい。
これで、クライアントPC側から Sambaの共有フォルダが見えたら成功。
Sambaの設定監視以外にも、下記のような、ローカルディスクの状態監視や、システムインフォメーションで CPU、RAM の %表示で動作状況が見れます。(動作が見えると安心しますね。)
超便利なWebminの機能(1/16追記)
設定・監視機能のほかに、下記の超便利な機能がありました。
これがあれば、サーバーにSSHやVNCで繋ぐことなく、Webminで操作が完結します。
・ファイルマネージャー機能
普通にファイルのコピー・削除・リネームが出来てしまいます
さらにプロパティで、各ファイルのパーミッション(アクセス許可)変更もGUIで出来てしまいます。
・コマンドライン機能
まさかの機能ですが、コマンドシェルが出て来て、普通に
コマンド実行が出来ました。
結果
ラズパイ3のネットワーク共用データサーバー、SambaとWebminを使って非常に順調に、便利に運用中です。
予想以上に、Webminが超便利です。動作状態がリアルタイムで確認出来るし、インストールされているパッケージソフトのアップデートも、さらに、ファイルマネージャーもコマンドシェルも、クライアントのブラウザ上からできました。
※ただし、外部HDに保管するデータは、定期的にバックアップを取るようにした方が良いです。私の設定の不備だと思いますが、 一度だけ、外部HDを認識しなくなり、一瞬でデータが使えなくなって、再フォーマットと再マウントをしました。
※参考:上記のこのHDを認識しなくなる現象、ネット検索すると、他のラズパイでも発生してたようですね(下記)。対策例をやってみたところ、今のところ問題ないです。要注意です。
今後の予定
このラズパイの共用サーバーは、ドキュメントのほかに、音楽、ビデオ、写真なども入れ、パソコン以外のネットTVからも使えるようにもに出来そうなのでやってみます。実現したら、また公開します。 今回はここまで。