【自作NAS】まさかデータが吹っ飛んじゃうなんてェ...もう疲れちゃってバックアップも面倒くさくてェ...

## はじめに

本記事はプロもくチャット Adevent Calendar2023の1日目です

https://qiita.com/advent-calendar/2023/puromoku

## 自作NASを作ろう

PCを仕事道具とする人なら当然ご存知のように、データのバックアップを定期的に作成することは重要です。最近はクラウドサービスを使うことが当たり前になっていますが、それでも消えたら困るローカルのデータなんていくらでもあるでしょう

ある日突然、そんな大切なデータが吹っ飛んだ日にはコ◯グになるしかありません

>:leaves: (:3_ヽ) _「もう疲れちゃって全然動けなくてェ...」

ということで、重い腰を上げて**自宅にあった材料を使って簡易NAS**を構築してみました。自らの備忘録も兼ねて、セットアップ手順について説明したいと思います


### 本記事の対象読者

- メインPCとしてMacを使用している
- ラズパイ買ったはいいものの、使い道が思いつかない
- 出来るだけ安価＆省スペースでNASの環境を構築したい

## 材料

NASを錬成するための材料です

- [Raspberry Pi 3 ModelB](https://www.switch-science.com/products/3050) :strawberry:
- [外付けHDD](https://www.westerndigital.com/ja-jp/products/portable-drives/wd-my-passport-for-mac-usb-3-0-hdd?sku=WDBA2D0020BBL-JESE)
- microSDカード(16GB)

ラズパイ3Bは私の自宅にあったものなので、今なら4ですかね。HDDも使わないで引き出しに眠ってたやつなので、お値段は驚愕の:zero:円です

>:boy_tone1::ramen:「え！！ 同じ値段でネットワークストレージを！？」

外付けHDDはラズパイが認識可能なデバイスならなんでもOKなので、予算や必要な容量に応じて自由に選定しましょう。microSDカードも8GBで全然動くと思われます。自作の強みはこの自由度の高さですね:gear:

以下は構築にあたって必要なデバイス類です

- Ethernetケーブル
- microSDカードリーダー
- ラズパイ用電源ケーブル(5V/3A) 
- 有線キーボード
- HDMIケーブル・モニター

## 完成形

![ネットワーク (1).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/174766/f1bb4fe7-5449-ab34-754c-dd8c25d7159e.png)

今回のゴールです
目的がMacBookのTimeMachineによるバックアップなので、あまり速度は気にしていません。ネフェルピトーの円みたいにNASの電波がMacに触れていれば良いのです

## ラズパイにOSをインストールする

ではラズパイをセットアップしていきましょう
SDカードリーダーをMacにぶっ刺して、ラズパイのOSイメージを書き込んで行きます

### Raspberry Pi Imager

OSイメージのライターツールです。GUIでほとんどの設定が終わるので重宝します。Win/Mac両方対応しているので、とりあえずインストールしましょう

https://www.raspberrypi.com/software/

後述のNASソフトの関係で、OSはRaspberry Pi OSのLite版(CUI)を選びます

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/174766/4c6f8365-bc38-ae2e-7000-9bea112c64ad.png)

:::note warn
Desktop版(GUI)だとインストール出来ないので注意しましょう。私はこれで1時間半くらい無駄にしました
:::


OSのカスタマイズについて聞かれたら"設定を編集する"を選びます

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/174766/ddfb9ea8-6088-b05b-9a34-9b3c71c1f713.png)

ユーザー設定とネットワーク設定を入力して"保存"をクリックします

私はこんな感じで設定しました

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/174766/b75e7610-9a05-efd8-c079-bdb21902b19d.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/174766/43d7cbc0-a3dc-730f-b0ea-416413f75410.png)

しばらくすると書き込みが終了するので、早速SDカードをラズパイに差し込んで電源を入れてみましょう

## ラズパイとSSHで接続する

ネットワーク設定に問題が無ければ、電源を入れた後で無線LANによりラズパイとのSSH接続が可能になるはずです

```
$ ssh pi@pi.local
pi@pi.local's password:
Linux pi 6.1.21-v8+ #1642 SMP PREEMPT Mon Apr  3 17:24:16 BST 2023 aarch64

The programs included with the Debian GNU/Linux system are free software;
the exact distribution terms for each program are described in the
individual files in /usr/share/doc/*/copyright.

Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent
permitted by applicable law.
Last login: Tue Nov 28 22:40:17 2023 from 240b:10:8701:200:f88c:ba32:5bf9:f5fe
pi@pi:~ $
```

IPアドレスは動的に割り振られるのでホスト名でアクセスしています。もしホスト名で上手く繋がらない場合は`arp`コマンドなどでそれらしいアドレスを探してみても良いでしょう

```bash
$ apr -a
# LAN内のIPアドレスが一覧表示される
```

:::note
詰まった場合は、HDMIケーブルでラズパイとモニターを接続して直接コマンドを叩きましょう
:::

## ソフトウェアのアップデート

OSを入れた直後なので、パッケージをアップデートします

```
$ sudo apt update
$ sudo apt upgrade
```

それなりに時間がかかるので、気長に待ちましょう:tea:

## OpenMediaVaultのインストール

OSSのNASソフトをインストールします。インストール後はブラウザ経由で各種設定が可能となるのでコマンドと戯れる時間もあと少しです

https://www.openmediavault.org/

概要は誰が書いても変わらないのでAIに外注しました
ChatGPT様はなんでも知っている:robot:

> *OpenMediaVaultは、主にホームサーバーまたは小規模なオフィスサーバー向けのフリーでオープンソースのネットワークアタッチドストレージ（NAS）ソリューションです。これは、ストレージデバイスの管理、ファイル共有、データバックアップなどの機能を提供し、Linuxオペレーティングシステム上で動作します*

インストールスクリプトについてはこちらの記述を参考にします

https://github.com/OpenMediaVault-Plugin-Developers/installScript

```bash
$ sudo wget -O - https://github.com/OpenMediaVault-Plugin-Developers/installScript/raw/master/install | sudo bash
```

それなりに時間がかかるので、気長に(2回目):tea:


> *The installation will take some time, so enjoy the text flying on the screen.*
> 
> (意訳)インストールは長えから画面を飛び交う文字でも楽しんでくれ

公式もこう言ってるのでね。ちなみに私の環境だと60分ほどかかりました。インストールが完了すると自動的にラズパイがリブートします


## OpenMediaVaultを設定する

正しくインストールが完了していれば、再起動後にWebサーバーが立ち上がります

:::note alert
注意
OMVインストール後に[無線LANの設定が消える](https://qiita.com/shimajiroxyz/items/96f49ac8565f62c840c1
)場合があります。その場合は、Ethernetケーブルを使って有線で接続し、後述の管理画面から無線LANを有効化しましょう
:::

ブラウザ経由でラズパイと接続すると、トップ画面が表示されます

```bash
http://pi.local/
# ホスト名でアクセス出来ない場合はIPアドレスでアクセスしてください
```

OMVのインストール時に管理者ユーザーも作成されるので、ログイン情報は下記を入力してください

- ユーザー名: admin
- パスワード: openmediavault

ログインに成功するとダッシュボード画面が表示されます。
見やすいですね:raised_hands:

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/174766/4291517f-8302-dd2a-9c8b-362764850250.png)

### パスワードの変更

さすがにデフォルトのパスワードのままでは不安なので、右上のユーザーアイコンから`Change Password`を選択して、管理者ログイン用のパスワードを変更しておきましょう

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/174766/af144c09-15fc-30eb-7231-9346286196b1.png)

### SSH接続の有効化

もしSSHで接続出来なくなった場合は、`Users > Users`から変更したいユーザーのGroupsに`ssh`を追加しましょう

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/174766/42d2f4d7-a357-7147-dad4-962757adaaea.png)


### 無線LANの有効化

無線LANの有効化とIPアドレスの固定化をしておきます

`Network > Interfaces`から+ボタンを押してWi-Fiを選び、Deviceとして`wlan0`を追加します

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/174766/74b14d1f-c839-bb60-7fcc-8a4780d509f3.png)

IPアドレスを`Static`にして、固定化します。設定が終わったら右下のSaveボタンで保存します

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/174766/d9e28beb-b076-1fbf-84d0-2d82676b2efc.png)

とりあえずここまで設定出来たら、無線LAN経由でSSH/ブラウザの両方からアクセス出来ることを確認しておきましょう。続いてHDDをマウントしていきます


## NASにストレージをマウントする

ラズパイのUSBポートにHDDを接続して、NAS用のストレージとして設定していきます

### 初期化

`Storage > Disks`から対象のHDDを選択し、`Wipe`ボタンをクリックして初期化します

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/174766/24427006-d9c1-2fa9-f4bf-1729a7a751c0.png)

初期化方法はQuickとSecureがあるのですが、どちらでも構いません。私はQuickを選択しました。

### ファイルシステムの作成からマウント

続いて`Storage > File Systems`から＋を押してファイルシステムを作成します

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/174766/fd9c2ca0-2b6a-25fc-8e4f-7039e5b37405.png)

今回はNASが動作するOSがラズパイ(Debian)なので、ファイルシステムとして`EXT4`を選択します

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/174766/a3729895-3fa5-185e-72de-a72805736733.png)

しばらく待つとファイルシステムの作成が完了します。そのままマウント設定に移動するので、作成したファイルシステムを選んで保存します

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/174766/74e852fd-2786-5328-4941-eeb0d68e90cb.png)

> 設定によってはapplyアイコンをクリックするまで反映されないものもあるので注意。ちょっと不安になるくらいローディング画面が続く場合もありますが、☕でも淹れて心を落ち着かせましょう
> 
> ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/174766/036cfc97-67d5-ec5a-490b-a76de38cce38.png)

### 共有フォルダの作成

`Storage > Shared Folders`から＋を押して共有フォルダを作成します

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/174766/4d1f08bf-5d7c-03f4-8101-1cb88242cc56.png)

フォルダ名、ファイルシステムを設定して保存します。私は`nas_shared`というフォルダ名を入力しました

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/174766/5747d4d5-c291-423e-63eb-986543f51c5e.png)

### NASユーザーの設定

共有フォルダにアクセスするためのユーザーを作成します

`Users > Users`から＋を押して`Create`を選択します

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/174766/f44b3e13-941e-7f3e-d6e0-9c15bc241472.png)

任意のユーザー名とパスワードを設定しましょう。ここで設定したログイン情報はNASに接続する際に求められるので、忘れにくいものがオススメです

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/174766/766e9f94-1f87-7d46-093d-11df8e7b02c0.png)

**続いて、共有フォルダへのアクセス権を付与していきます**

`Storage > Shared Folders`を開いて共有フォルダを選択し、鍵マークの付いたフォルダアイコンを選択します

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/174766/c290192d-4118-9fac-f4f3-4f5d93d84128.png)

作成したユーザーに`Read/Write`パーミッションを与えて保存しましょう

### SMB(Time Machine)設定

長かった設定もいよいよ大詰めです。最後はSMBを設定していきます

`Services > SMB/CIFS > Shares`から＋ボタンを選択します

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/174766/50dea949-465c-fcd5-f503-f05f6830ce44.png)

共有フォルダとして作成したフォルダ名を選択して、`Time Machine support`にチェックを入れて保存します

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/174766/daa0e0ed-6094-24cd-e960-e49ddedf42b9.png)

さらに、`Services > SMB/CIFS > Settings`から`Enabled`にチェックを入れてSMBを有効化しましょう
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/174766/12034116-7df9-0f5a-6497-ad4db1ff949c.png)


## 接続テスト

設定が上手く行けば、MacのTime Machineでバックアップディスクとして共有フォルダ名が表示されるはずです。設定したユーザー名とパスワードを入力してアクセス出来るか確認してみましょう

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/174766/f4796ee5-808f-d9a9-628d-f6ff16ed7bd8.png)

後はバックアップ頻度を`自動で1日ごと`とかに設定すれば、Macを普段使いしていれば勝手にNAS上にバックアップを作成してくれます。お疲れ様でした:tea:

### 補足

SMBなので、当然Finderから共有フォルダとして扱うことも可能...:bangbang:
普通にHDDをTimeMachine用としてフォーマットしてもこのような使い方は出来ないので、とても助かります

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/174766/87b4ca49-1f4c-b575-b19b-68ca57629415.png)

## まとめ

ということで、自作NASでローカルデータの損失というアクシデントに対する保険を構築してみました。これだと不安という方はOMVでRAIDの設定も可能なので、どんどんストレージ周りを厚くしてやればよいかと思います。

データのロストは発生確率は低いけど、負うダメージは精神的にも物理的にも時間的にも非常に痛いものです。人生全般に言えることですが、こういったリスクが見えてるならば出来る範囲で保険をかけましょう:hospital:

何かの参考になれば幸いです。ご覧いただきありがとうございました🦍

### (2024/4/9加筆) パスワードのリセット

久しぶりに設定をいじろうとしたらウッカリパスワードを忘れて
アカウントに制限がかかってしまいました。

そんな場合は、こちらのコマンドから

- 管理者パスワードの再設定
- アカウントのログイン制限のリセット

を実施することが可能です🙏

```bash
$ sudo omv-firstaid
```

# 参考

https://www.openmediavault.org/

https://take6shin-tech-diary.com/openmediavault

https://zenn.dev/oversleep/articles/3f9ad984a37aba