RaspberryPI4をサーバーにして遊び倒す。その１


この記事は Voicy Advent Calendar 2020 の 11日目の記事です。
前日は @yamagenii さんの [一瞬で作るストリームデータ収集基盤](https://medium.com/@yamagenii/%E3%81%93%E3%81%AE%E8%A8%98%E4%BA%8B%E3%81%AF-voicy-advent-calendar-2020-%E3%81%AE-10%E6%97%A5%E7%9B%AE%E3%81%AE%E8%A8%98%E4%BA%8B%E3%81%A7%E3%81%99-1d0999370531)でした。明日は, @y_katsumura さんの 採用から組織開発は始まっている 〜エントリーマネジメントの重要性〜 です。
#はじめに
とりあえず買ったはいいがどうやって使うか迷いがちなRaspberry。

Raspberry Pi4は1GbEをフルスピードで扱えたり、USB3.0に対応するなどIO周りが強化されていて省電力なファイルサーバーとして使えそうな構成になっています。最近のアップデートは、64bitOSでUSBBootにも対応しているので、SSBから起動することによって、SDカードの書き込み最大回数をきにすることなく、またSSD化でディスクアクセス速度の向上もできるので、大分実用的に運用できるようになってきてるように思います。

ということで、なにを作ればよいかわからない人は、とりあえずサーバーにしてあそんでみるのはどうでしょうか。実用的だし、学習にもぴったりです。

この記事では、RaspberryPi4をNAS、クラウドストレージ、ストリーミングサーバーとして活用するところまで書いていきます。
書いているうちに長くなってきたので、2つに分けます。

#必要なもの
- Raspberry Pi4
- Boot用のSSD (容量お好みで。うちは32GB使っています)
- USB接続のSSDケースか、SATA-USB 変換ケーブル
- データ用のHDD/SSD
- USB3.0対応のHDD/SSDのケース

# Raspberry Piのセットアップ
軽量化の為にデスクトップ機能は省きます。
[Raspberry Pi OS Lite 64bit版](https://downloads.raspberrypi.org/raspios_lite_arm64/images/raspios_lite_arm64-2020-08-24/2020-08-20-raspios-buster-arm64-lite.zip)をダウンロードして、[Etcher](https://www.balena.io/etcher/)でSSDにコピーしましょう。


# WiFi設定とsshの有効化
コピーしたSSDのbootにWiFi設定とSSHの有効化をします。
有線でつないでいる場合には、WiFi設定は飛ばしてかまいません。

SSHの設定は、bootにsshのファイルを作成するだけで有効になります

```sh
$touch boot/ssh
```

WiFi設定は/bootにwpa_supplicant.confファイルを作成します。

```sh
$vi boot/wpa_supplicant.confg
ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev
update_config=1
country=JP

network={
    ssid="<アクセスポイントのSSID>"
    psk="<パスワード>"
}
```

# 起動して初期設定とアップデート
起動の際に、SDカードがない場合は、USBを読みにいくので、SSDをUSBにつなげて起動して、必要な初期設定を実行します。
ここでアップデートもして、一度再起動します。

```sh
sudo apt update
sudo apt dist-upgrade
sudo reboot
```


# Openmediavalut5をインストール
piユーザーで行ってください。
インストールに時間がかかるのでインストールされるまで待ちます。
ドキュメントによると30分かかることもあるらしいですが、そんなにはかからなかった気がします。

```sh
wget -O - https://github.com/OpenMediaVault-Plugin-Developers/installScript/raw/master/install | sudo bash
```
インストールが終わったら、もう一度再起動します。

```sh
sudo reboot
```

再起動から復帰したあと、今までのインストール作業がうまくいっていれば、ブラウザからのアクセスでログインできます。
IPアドレスが判明してる場合にはそのIPアドレスから、そうでなければ「ホスト名.local」からアクセスできるはずです。
デフォルトのホスト名だと下記になります。

```sh 
http://raspberrypi.local
```

ブラウザからアクセスしたらログイン画面がでるので、初期ユーザー名と初期パスワードでログインします。
- 初期ユーザー名：admin
- 初期パスワード：openmediavault

![スクリーンショット 2020-12-12 105147.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/887071/89bea7e7-994f-01f4-9d92-cf622f1e4f1d.png)

こんな画面がでたら成功です

![スクリーンショット 2020-12-12 105553.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/887071/16d5aa22-4dbc-8742-53df-09d385abe323.png)


#NASの設定
左側のペインの項目から設定していきますが、ペインの項目すべてを設定しなくても、NASとして動作させられます。
最低限として以下の項目を設定します。
- 基本設定としてシステムのすべて
- ストレージのディスク、SMART、ファイルシステム
- アクセス権の管理のユーザー、共有フォルダ
- サービスのSMB/CIFS
順々に設定していきます。

##システム

###一般設定
システム→一般設定→Web管理者パスワード
からログインしたadminのパスワードを変更します。新しいパスワードを入れて保存、適用します。
![スクリーンショット 2020-12-12 115449.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/887071/ddc590eb-c993-93e5-cc12-b93a5af5d289.png)



###日付と時刻
タイムゾーンのプルダウンから、自分の環境に合わせて選択します。
![スクリーンショット 2020-12-12 110614.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/887071/706c33d1-061b-c99e-6a95-f050a8932d17.png)

###ネットワーク
ネットワークでは一般とインターフェースのタブから設定を変更します。

一般では、ホスト名とドメイン名を任意のものに変更します。
![スクリーンショット 2020-12-12 110152.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/887071/f15a6141-97fb-0f4a-7c33-05d38ce056d1.png)


インターフェースでは、自分のネットワーク環境に合わせてネットワーク接続の設定をしていきます。
![スクリーンショット 2020-12-12 110711.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/887071/edd2d53f-f270-84af-3352-38d7aeb7dd24.png)

###モニタリング
システム→モニタリングから設定します。
モニタリングは有効（緑色）にするだけです。
SMARTの設定を有効にするのに必要です。

![スクリーンショット 2020-12-12 115913.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/887071/a9101a14-fff2-7401-954e-407e00b02fbe.png)


##ストレージ
###ディスク
外付けのHDDなどを制御します。
「編集」では、電源管理などのオプションが選べます。
「ワイプ」では、ストレージの内容を消去できます。新しいHDDをフォーマットしたりするのに使用します。

![スクリーンショット 2020-12-12 120019.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/887071/a6e20c8e-f223-2912-a485-dadfd0db1a34.png)


###S.M.A.R.T
設定タブで有効にするだけです。

![スクリーンショット 2020-12-12 120214.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/887071/df9454e4-65e1-05c2-a044-84914a1de406.png)

その後、デバイスタブでHDDを選択して編集と押すと、有効化できます。
設定の際は、一台づつ、保存→適用してください。

![スクリーンショット 2020-12-12 120324.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/887071/699eed58-15bc-c8b7-f3e5-28c182e50dfe.png)

##ファイルシステム
Linux系では標準になっているとおり、外付けのストレージはまずマウントをしないと使えません。
「デバイス」の項目にある「/dev/sda1, /dev/sdb1」などがストレージです。
「利用可能」の項目に「n/a」「マウント済み」に「いいえ」と表示してあれば、つながっていない状態です。
デバイスを選択して、マウントボタンを押してマウントします。

マウントできないとエラーがでる場合には

- フォーマット形式が異なる
- 別のシステムから移行したストレージ
- 未フォーマット

などの場合が挙げられます。
一度ストレージの中身を真っ新にする必要があるので、ディスク項目のワイプでストレージの中身を削除することで、ここで利用可能になります。
ワイプする際のポイントとしては、接続するデータ用のストレージのフォーマットはext4にしてください。
ntfs、exfat等、他のファイルシステムでも一応は機能しますが、いまのところ細かい不具合やバグなんかで動作が不安定です。
設定する際は、1台づつ保存→適用するようにしてください。

マウントできると以下のように、「利用可能」の項目に「ファイルサイズ」、「マウント済み」に「はい」と表示されるようになります。

ストレージをマウントしただけでは、NASとしては利用できないので、後ほど、共有フォルダの設定をする必要があります。

![スクリーンショット 2020-12-12 120749.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/887071/8f55b979-2aad-4995-d710-c3599bb0fb3b.png)

##アクセス権の管理
samba上でネットワークドライブとして認識させるために、

- ユーザーの作成
- 共有フォルダの指定
- sambaで共有する設定

上記の３つを設定していきます。

###ユーザー
ユーザーにはRaspberry Pi OSのデフォルトユーザーのpiがすでにいますが、ネットワークから参照するのに使う専用のユーザーを作成します。
アクセス権の管理→ユーザーから追加していきます。
名前とパスワード、グループを設定してください。グループはとりあえずusersの指定があれば大丈夫です。
![スクリーンショット 2020-12-12 121809.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/887071/7c058d9d-8ee3-46a6-f55d-5b361b52e49f.png)


###共有フォルダ
後ほど、sambaの設定で、sambaで共有するフォルダを選択しないといけません。
そのために、共有するフォルダを作成する必要があります。
アクセス権の管理→共有フォルダから設定していきます。

デバイスのプルダウンメニューに、さきほどマウントしたストレージがでてくるので、デバイスを選択して、名前とパスを設定します。
ストレージ全体を共有したい場合は、パスは「/」のみで大丈夫です。

![スクリーンショット 2020-12-12 122130.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/887071/49f323c1-ccd1-fe6f-b11a-272f249bdec8.png)

##サービス
サービスにはFTP,NFS,RSYNC,SMB/CIFS,SSHといろいろと設定したい項目がありますが、とりあえずNASとして活用するにはSambaの設定だけあれば大丈夫です。

###SMB/CIFS
まずは、sambaサービスを有効にします。

![スクリーンショット 2020-12-12 122545.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/887071/1a16afb6-ec15-93c7-c5a5-5a387326ea8e.png)

次に、共有タブでSambaで共有するフォルダを選択します。
追加ボタンで出てきた項目のうち、さきほど設定した共有フォルダを指定します。
下にスクロールすると、その他、読み込み設定やパーミッションの設定もできるので任意に指定してください。単に共有するだけであれば、デフォルトのままで大丈夫です。
![スクリーンショット 2020-12-12 122756.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/887071/315fa265-f999-c4ed-c2f3-b119a61bf558.png)

共有フォルダが追加されると、下記のようにリストにでてきます。
![スクリーンショット 2020-12-12 122955.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/887071/a32e2b15-77a7-690c-8f0e-247a3da8b3af.png)


ここまでの設定が正しく反映されていれば、SAMBAで接続できるようになっているはずです。
NASとしての設定は以上です。

次に、クラウドストレージとストリーミングサーバーの構築に必要な環境をセットアップしていきます。

#DockerとPortainerのインストール
サーバーを追加していくにあたって、OpenmediavaultではDockerとPortainer（DockerのGUI管理）をサポートしていて非常に便利なのでインストールしていきます。
OMV-ExtrasのペインのDockerのタブに移動して、プルダウンからDockerとPortainerをそれぞれインストールします。

![スクリーンショット 2020-12-12 111929.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/887071/f13b0d0f-8ab6-b2e6-aba3-6e038c86e991.png)

インストールが終了したら、Open Portainerのプルダウンメニューを使って、Portainerにブラウザからアクセスします。
ログインユーザー名とパスワードを設定するよう誘導されるのでそれに従い、設定していきます。
こんな画面が出たら導入成功です。

![スクリーンショット 2020-12-12 112436.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/887071/7a7d75d8-aa64-6ee4-2032-61e1ec3eed1c.png)

あとは、基本的には、Dockerを使って、好きなサーバーをずいずい構築していけばOKです。
クラウドストレージとストリーミングサーバーの導入については、その２に続きます。

[RaspberryPI4をサーバーにして遊び倒す。その２](https://qiita.com/miyukiaizawa/items/37d4d386150eddaaeddb)