OpenMediaVault6によるDIY高機能NAS
June 02, 2023
linux openmediavault目次
はじめに
OpenMediaVault(OMV)はDebian LinuxをベースとしたNASシステムで、Webブラウザからシステム管理が出来ます。
OpenMediaVaultをPCやラズパイにインストールするとバッファローのLinkStationやI-O DATAのLAN DISKのようなものになる、という見方ができます。NASよりももう少し高機能で「NASも付いたホームサーバ」的なSynologyやQNAPのようなもの、という見方もできます。 単にLinuxにWebminもどきやPortainer.ioをインストールしてWebブラウザからシステム管理が出来るようにしたもの、という見方もできます。
その実態はDebian Linux派生のディストリビューションの1つです。
このOpenMediaVaultをVirtualboxにインストールしてみます。何故にVirtualboxなのかと言いますと、最終的にはminiPC(NUC)にインストールしてホームサーバーにしたいのですが、その予行演習でまずはVirtualboxにインストールしてみて、その特徴を理解したいためです。
VirtualboxへのインストールがうまくいったらminiPC CHUWI LarkBoxにOpenMediaVaultをインストールして手のひらサイズNASに仕上げたいと思います。
OpenMediaVaultインストーラーの入手
公式ダウンロードサイトからopenmediavault stable versionをダウンロードします。
https://www.openmediavault.org/download.html
openmediavault download
筆者がアクセスした時点では、openmediavault_6.0.24-amd64.iso がダウンロード出来ました。
Virtualbox仮想マシンの設定
まずは、OpenMediaVaultをVirtualbox7にインストールしてみます。
Virtualbox7を起動し、
仮想マシン(M)>新規(N)
仮想マシンの設定をしていきます。openmediavault6はDebian 11から派生したディストリビューションなんで、バージョン(V)は「Debian 11 Bullseye(64-bit)」を指定します。
メモリは4GBとしましたが、NASとして使うだけなら2GBで十分でしょう。dockerをインストールしてアプリケーションサーバとして使用するなら相応のメモリを確保しましょう。
openmediavaultを動かすにはシステムディスクとデータディスクの2ドライブ必要です。仮想マシン作成ウィザードではシステムディスクについての設定をしておきます。
仮想マシン作成ウィザードを「完了(F)」で終了し、仮想マシンが作成できたら、「設定(S)」で詳細設定していきます。
設定(S)>システム>マザーボード(M)
設定(S)>ディスプレイ>スクリーン(S)
設定(S)>ストレージ
openmediavaultを動かすにはシステムディスクとデータディスクの2ドライブ必要です。システムディスクは先に仮想マシン作成ウィザードによりopenmediavault.vdiという名前で作成できています。データディスクdata.dviを作成していきます。
ストレージデバイス(S)の「コントローラー:SATA」の「ハードディスクの追加」アイコンをクリックし、「openmediavault - ハードディスクの選択」ウィンドウをポップアップさせます。ここでデータディスクを作成するために「作成(C)」アイコンをクリックします。
「仮想ハードディスクの作成」ウィサードに遷移します。DVIを選択し「次へ(N)」。
さらに「次へ(N)」。
データディスクの名前とサイズを指定し「完了(F)」。
仮想データディスクdata.dviが完成。
設定(S)>ネットワーク
サーバなんで、「割り当て(A)」はブリッジアダプターに。
設定(S)>USB
USB3.0を有効に。
以上でopenmediavault用の仮想マシンが出来上がりました。
Virtualbox仮想マシンにopenmediavault6をインストール
openmediavaultインストーラーのisoファイルから起動。Enterキー入力で次に進む。
言語の選択
国を選択
キーボードの選択
ホスト名の入力
ドメイン名の入力。筆者宅の自宅LANの場合、localをhome.arpaにしました。
rootのパスワード
ディスクのパーティショニングとありますが、要はシステムディスクのドライブを選択する訳です。
システムディスクにする方を選びます。sdaが先に作ったopenmediavault.dvi、sdbがdata.dviのはず。sdaを選びます。
ダウンロードサイトのある国を選択
ダウンロードサイトを選択
プロキシが必要ならば入力
以上でopenmediavault6のインストール完了
この時点ではネットワークはIPv4のDHCPを見に行く設定になっています。
OpenMediaVault6の起動
インストーラーのisoファイルのマウントを解除し、仮想マシンを再起動すると、コンソールが立ち上がるのでrootでログインします。
Virtualboxのコンソールで作業するとコピペが使えないとかいろいろ不便なので、以降はsshからrootでログインすることにします。コンソールでOpenMediaVaultのIPアドレスを確認しておきます。今回の例では192.168.1.112。
$ ssh 192.168.1.112
login as: root
root@192.168.1.112's password:
Linux openmediavault 5.16.0-0.bpo.4-amd64 #1 SMP PREEMPT Debian 5.16.12-1~bpo11+1 (2022-03-08) x86_64
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.
root@openmediavault:~#
いきなりsshは使えるはsshからrootでログインできるはで、セキュリティはズブズブ。
今後はsshでログインすることなしに、大半のサーバメンテナンス作業をWebブラウザからできるようになります。これがOpenMediaVaultの本質。
Webブラウザからサーバ設定
WebブラウザからOpenMediaVaultにアクセス。今回の例では192.168.1.112。
http://192.168.1.112/
ここにアクセス
なんともクールなログインページ。 アカウントはadmin、初期パスワードはopenmediavaultを入れてログイン。
ログインして最初にやることはadminのパスワード変更。これだけは必ずやっておくこと。
User Settings>Change Password
言語を日本語にしておきます。
設定>言語>日本語
ホーム(家のアイコン)ページ
設定(右上のヒトのアイコン)>ダッシュボード
必要なものにチェックを入れ(全てにチェックを入れ)、「保存」ボタンをクリック。
ホーム>ダッシュボード
こんなかんじで設定していく。
アカウントの設定
ホーム>ユーザー>作成
普段使うアカウントを作成しておきます。
固定IPアドレスの設定
サーバーとして使うので、固定IPアドレスに変更します。
ホーム>ネットワーク>インタフェース
OpenMediaVaultインストール直後はこんなかんじになっている。IPv4はdhcp設定でIPv6は無効。
デバイス「enp0s3」の行を選択し、編集ボタン(鉛筆アイコン)クリック。
IPv4アドレスをdhcpから固定IPアドレス 192.68.1.12 に変更
IPv6アドレスも固定IPアドレス aaaa:bbbb:cccc:dddd::12 にする。
変更して「保存」をクリック
IPアドレスが変わるので一旦接続が切れます。WebブラウザのURL欄を変更して再開。今回の例では192.168.1.12。
http://192.168.1.12/
ここにアクセス
Sambaの設定
ホーム>サービス>SMB/CIFS>設定
ホーム>サービス>SMB/CIFS>共有
Windows PCからアクセス例
PhotoPrism
写真管理サーバーPhotoPrismもOpenMediaVaultなら超簡単にインストールできます。
ホーム>システム>プラグイン>openmediavault-photoprism 6.0.7-1
amd64をタップし、インストールボタン(上段のゴミ箱の右隣のアイコン)クリック
ホーム>サービス>PhotoPrism
PhotoPrism二アクセス。
アカウント:admin
初期パスワード:admin
PhotoPrism自体の解説は本記事では割愛します。本サイトにPhotoPrism導入記事がありますのでそちらをご参照ください。
Dockerをインストール
OMV-ExtrasをインストールすることでDockerをインストールします。OMV-ExtrasにはOpenMediaVaultの機能を拡張するパッケージやプラグインが数多く含まれています。
【参考】
https://www.wundertech.net/how-to-install-docker-on-openmediavault/
How to Install Docker on OpenMediaVault
OMV-Extras自体はWebからはインストールできません。sshでログインしてコマンドラインからインストールしなければなりません。
ホーム>サービス>SSH
[レ]有効<br/>
Port:22<br/>
[レ]rootアカウントでのログインの許可
sshでrootアカウントでOpenMediaVaultにログインし、
以下のコマンドでOMV-Extrasをインストールします。
# wget -O - https://github.com/OpenMediaVault-Plugin-Developers/packages/raw/master/install | bash
OMV-Extrasをインストール後、ブラウザでCtrl+Shift+Rでページを更新すると、新たにOMV-Extrasメニューが使えるようになっています。
Dockerでサーバーアプリをインストールするには、docker-compose.ymlを書いていかなければなりませんが、これをターミナルから入力するのではなく、Webで入力するのがOpenMediaVault流です。その方法は2通り有り、
1つは「openmediavault-compose」プラグインをインストールして、
サービス>Compose
メニューからdocker-compose.yml相当を書く方法。
もう1つは、Portainerというdockerを管理するWebアプリをインストールし、Portainer上でdocker-compose.yml相当を書く方法です。
どちらかといえば、Portainerでやったほうが同時にdocker imageやコンテナの管理も出来るので便利かと思います。
ホーム>システム>OMV-Extras
以下のように設定/Docker/Portainer/Yachtのサブメニュー(アイコン)が表示されていたら、やることは簡単です。
プラグインも増えています。
ホーム>システム>OMV-Extras>Docker
「インストール」ボタンをクリックし、Dockerをインストール。 Dockerのインストールに成功すると、ステータスが「Installed and running」に変わります。
ホーム>システム>OMV-Extras>Portainer
「Install」ボタンをクリックし、Portainerをインストールし、起動。
もし ホーム>システム>OMV-Extras に設定/Docker/Portainer/Yachtのサブメニュー(アイコン)が表示されず、
Please install the openmediavault-compose to provide docker functionality within the OMV web interface.
このようなメッセージを含む図のような設定ページだったら、
以下の公式ドキュメント
https://wiki.omv-extras.org/doku.php?id=omv6:docker_in_omv
Docker in OMV
この公式ドキュメントに従い煩雑な手順を踏んでインストールしてももちろんいいのですが、今回はOMV-ExtrasのDockerからインストールするのはPortainerのみとし、他のアプリはOMV-ExtrasのDockerからではなくPortainerからインストールするという方針で臨みたいと思います。
OMV-ExtrasのDockerからインストールするのはPortainerだけなので、公式ドキュメントには従わず、まぁ適当にインストールしてしまいます。
ただし、適当にインストールするとdockerはコンテナやらイメージやらの置き場として /var/lib/docker 以下に大量の領域を使用します。/varはシステムドライブ上にあり、OpenMediaVaultはシステムドライブは最小容量しか確保しない場合も多いので、そのような場合は、公式ドキュメントに従いdockeをインストールすべきです。
以下は適当にインストールする手順
(1) ホーム>システム>omv-extras
「Docker repo」にチェックを入れて「保存」をクリック
(2) ホーム>システム>プラグイン>openmediavault-compose
を選択し、openmediavault-composeをインストール
(3) ホーム>ストレージ>共有フォルダ
を選択し、Docker用のフォルダー「docker/」を作成します。絶対パスカラムを表示させて、作成したパスの絶対パスをクリップボードにコピーしておきましょう(後の(7)で使用します。)
(4) サービス>Compose>設定
「Shared folder」に(6)で作成した「docker」フォルダーを割り当てます。
「保存」をクリック後、「Reinstall Docker」をクリック。
以上でDockerが使えるようになりました。あとはdockerを管理するWebアプリ「portainer」をDockerでインストールし、以降はdockerの管理は「portainer」でやることにします。
ホーム>サービス>Compose>設定
で、Dockerのステータスが「Install and Running」になるように「Reinstall Docker」をクリック後「Restart Docker」をクリックします。
次に、
(6) ホーム>サービス>Compose>Files>Add from Example(白十字のアイコン)
から、portainerを選び、portainerファイルを作成しコンテナをUp(上矢印アイコン)します。
これでportainerが起動しますが、その前に…
(7) ホーム>サービス>Compose>Files>編集(鉛筆のアイコン)
で、docker-compose.ymlのvolumeを書き換えてきます。例えば、
volumes:
- /path/to/docker/docker-data/portainer-data:/data
を共有フォルダー「docker/」に割り当てます。共有フォルダーのフルパスは(3)でクリップボードにコピーしたものですが、ログインして確認してもいいです。
volumes:
- /srv/dev-disk-by-uuid-xxxxxxxx-yyyy-zzzz-wwww-xxxxxxxxxxxx/docker/docker-data/portainer-data:/data
に変更します。あとは、コンテナをUp(上矢印アイコン)するだけ。
PortainerでWebアプリのインストール
PortainerはdockerをGUIで管理するWebアプリです。
Portainerへのアクセス
最初にadminのパスワードを設定すると、以下のHomeページに遷移。
「local」枠内をクリックし、Local環境のDashboardを開きます。
でわ、docker-composeでサーバーアプリを追加していきます。
Portainerでは、docker-composeで追加するアプリ毎にTemplateを作成します。Template≒docker-compose.ymlと考えると分かりやすいでしょう。
あらかじめいくつかのTemplateが用意されています。
local>App Templates
で一覧することができます。
例としてWordPressを追加するため、「WordPress」の枠内をクリック。
必要なパラメータを埋めて、「Deploy the stack」ボタンをクリック。
Containersタブでコンテナリストを参照すると、Portainer自身のコンテナと、今立ち上げたWordPressのコンテナ、WordPressで使用するMySQLのコンテナが立ち上がっているのがわかります。「Published Port」欄を見るとWordPressにアクセスするポート番号は32769番であることもわかります。
いま立ち上げたWordPressにアクセス。お馴染みのWordPressの5分間インストールプロセスのページが開きます。
WordPressのインストール自体は本記事では割愛します。
次に、あらかじめ用意されているTemplateからコンテナを立ち上げるのではなく、Custom Templateを作成して任意のアプリケーションを立ち上げてみます。これはdocker-compose.ymlを自分で1から作ってアプリを立ち上げることに相当します。
ますは、
local>Template>Custom Template>+Add Custom Template
により、Custom Templateを新規作成。
「Create Custom Template」ページ
例としてPukiWikiサーバを立ち上げるCustom Templateを書いてみます。必須事項を入力し、
下にスクロールして、Web Editorの中にdocker-compose.ymlを直接書き込む。
version: '3'
services:
pukiwiki:
image: pengo/pukiwiki
restart: unless-stopped
ports:
- 3400:80
volumes:
- ./pukiwiki:/ext
全部書いたらページの一番下にある「Create Custom Template」ボタンをクリック
pukiwiki Templateが作成できた。pukiwikiをクリックし、
「Deploy the stack」ボタンをクリックするとpukiwikiコンテナが起動する。
http://192.168.1.12:3400/
今立ち上げたpukiwikiにアクセスしてみる。
こんなかんじで任意のサーバーアプリをdocker composeでインストールできます。GUIで出来るとはいっても、結局docker-compose.ymlは書かなければならないので別に手間が減る訳ではありません。
以上でVirtualbox7へのOpenMediaVaultのインストール実験は一旦終了。次は実機CHUWI LarkBoxにOpenMediaVaultをインストールして手のひらサイズNASを作っていきます。
CHUWI LarkBoxにOpenMediaVaultをインストール
OpenMediaVaultをVirtualboxにインストールしてみて感触は掴めたので、こんどはOpenMediaVaultを手のひらサイズのnucCHUWI LarkBoxにインストールしていきます。
このLarkBoxは以前はAlpine Linuxを入れて自宅サーバとして活躍していたもので、Windowsを動かすにはスペックはショボすぎて心許ないのですが、サーバとしてならば十分使えていました。
サーバには必須の有線LANポートが無いのが致命的といえばそうなんですが、有線LANケーブルから開放されるので置き場所を選ばない点は逆に魅力です。
単3乾電池4本分相当のフットプリント。
LarkBoxのいいところはシステムドライブの128GB eMMCに、2TBまでのM.2 SSD(2242サイズ)を追加でき、2ドライブ構成に出来る点です。これはまさに2ドライブ必須のOpenMediaVaultのためにあると言えると思います。
では早速LarkBoxにOpenMediaVault6をインストールしていきます。
まずはインストールメディアの作成から。VirtualboxにインストールしたときはOpenMediaVault6インストーラーのISOイメージをVirtualboxの仮想ドライブとしてマウントするだけで良かったのですが、実機の場合ISOイメージをusbメモリ等に焼いてインストールメディアを作る必要があります。
Windows上でISOファイルをUSBメモリに焼くには、Rufusなどのツールを使用します。rufus-3.15.exeでISOイメージをusbメモリに焼いてみます。
インストーラーのISOイメージはハイブリッドISO形式ということで、「ISOイメージモードで書き込む」を選択。
焼き上がったUSBメモリをLarkBoxに挿してブート。事前にVirtualboxで予習しておいたので、すんなりインストールできると思いきや、不測の事態に。
インストーラーがLarkBoxの無線LANデバイスを認識できず、インストールが先に進まない!LarkBoxには有線LANポートもなく、あっけなく詰んでしまった。で、調査開始。
LarkBoxの無線モジュールは「Intel Wireless-AC 9461」。このデバイスのドライバは、
https://www.intel.co.jp/content/www/jp/ja/support/articles/000005511/wireless.html
Intel製品サポート
で調べると、「iwlwifi-9000-pu-b0-jf-b0-34」という名前のようだ。OpenMediaVault6はDebian11だから、
https://packages.debian.org/bullseye/firmware-iwlwifi
debianパッケージ
ここで調べると「firmware-iwlwifi (20210315-3)」というパッケージに「iwlwifi-9000-pu-b0-jf-b0-34」が含まれている。
...
* Intel Wireless 9000 firmware, version 34.ba501b11.0
(iwlwifi-9000-pu-b0-jf-b0-34.ucode)
パッケージのファイル名は「firmware-iwlwifi_20210315-3_all.deb」ということがわかった。
インストーラーUSBメモリをExplorerで眺めてみると、なんと該当ファイルは2箇所に存在している!
\
firmware\
firmware-iwlwifi_20210315-3_all.deb
pool\
non-free\
f\
firmware-nonfree\
firmware-iwlwifi_20210315-3_all.deb
よくみるとpool以下のfirmware-iwlwifi_20210315-3_all.debは実際のファイルなんだけど、firmware以下のファイルはサイズが0の実体がない名前だけのファイルだった。
そこで、実際のファイルを\firmwareにコピーしてみる。
\> copy \pool\non-free\f\firmware-nonfree\firmware-iwlwifi_20210315-3_all.deb \firmware
該当ファイルだけでなくサイズが0の実体がない名前だけのファイルは全て\poolディレクトリからコピーしてくる。
これでうまくいった。
これがRufusで焼いたことが原因で起こったことなのか、元々そういうものなのかは不明。
あとは、Virtualboxでの予習通りにOpenMediaVaultのインストール完了。
筆者の環境ではネットワークの自動設定が失敗し、インストール直後にはネットワークが正しく設定されていなかった。
コンソールからログインし、/etc/network/interfacesを以下のように書き換えて再起動
auto lo
iface lo inet loopback
auto wlo2
iface wlo2 inet dhcp
wpa-ssid 自宅アクセスポイントのSSID
wpa-psk 自宅アクセスポイントのパスワード
とりあえず、無線LANでdhcpで接続し、Webインターフェースにアクセスし、
ホーム>ネットワーク>インターフェース>wlo2
を正しい値に書き換えた。
あとはVirtualboxで予習した通りサーバー構築を進めていける。
おわりに
サーバー構築の全てがWebブラウザのGUIで完結しているOpenMediaVaultは便利なのかは微妙なところなのですが、コンセプトとしてはとてもおもしろいシステムだと思う。とりあえずはバックアップ用のファイルサーバーとして使っていくつもり。