OpenMediaVault6によるDIY高機能NAS

June 02, 2023

linuxopenmediavault

目次

はじめに

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)」を指定します。

virtualbox_omv_setting_1.png

メモリは4GBとしましたが、NASとして使うだけなら2GBで十分でしょう。dockerをインストールしてアプリケーションサーバとして使用するなら相応のメモリを確保しましょう。

virtualbox_omv_setting_2.png

openmediavaultを動かすにはシステムディスクとデータディスクの2ドライブ必要です。仮想マシン作成ウィザードではシステムディスクについての設定をしておきます。

virtualbox_omv_setting_3.png

仮想マシン作成ウィザードを「完了(F)」で終了し、仮想マシンが作成できたら、「設定(S)」で詳細設定していきます。

設定(S)>システム>マザーボード(M)

virtualbox_omv_setting_4.png

設定(S)>ディスプレイ>スクリーン(S)

virtualbox_omv_setting_5.png

設定(S)>ストレージ

openmediavaultを動かすにはシステムディスクとデータディスクの2ドライブ必要です。システムディスクは先に仮想マシン作成ウィザードによりopenmediavault.vdiという名前で作成できています。データディスクdata.dviを作成していきます。

virtualbox_omv_setting_6.png

ストレージデバイス(S)の「コントローラー:SATA」の「ハードディスクの追加」アイコンをクリックし、「openmediavault - ハードディスクの選択」ウィンドウをポップアップさせます。ここでデータディスクを作成するために「作成(C)」アイコンをクリックします。

virtualbox_omv_setting_7.png

「仮想ハードディスクの作成」ウィサードに遷移します。DVIを選択し「次へ(N)」。

virtualbox_omv_setting_8.png

さらに「次へ(N)」。

virtualbox_omv_setting_9.png

データディスクの名前とサイズを指定し「完了(F)」。

virtualbox_omv_setting_10.png

仮想データディスクdata.dviが完成。

virtualbox_omv_setting_7.png

設定(S)>ネットワーク

サーバなんで、「割り当て(A)」はブリッジアダプターに。

virtualbox_omv_setting_11.png

設定(S)>USB

USB3.0を有効に。

virtualbox_omv_setting_12.png

以上でopenmediavault用の仮想マシンが出来上がりました。

Virtualbox仮想マシンにopenmediavault6をインストール

openmediavaultインストーラーのisoファイルから起動。Enterキー入力で次に進む。

omv_install_1.png

言語の選択

omv_install_2.png

国を選択

omv_install_3.png

キーボードの選択

omv_install_4.png

ホスト名の入力

omv_install_5.png

ドメイン名の入力。筆者宅の自宅LANの場合、localをhome.arpaにしました。

omv_install_6.png

rootのパスワード

omv_install_7.png

ディスクのパーティショニングとありますが、要はシステムディスクのドライブを選択する訳です。

omv_install_8.png

システムディスクにする方を選びます。sdaが先に作ったopenmediavault.dvi、sdbがdata.dviのはず。sdaを選びます。

omv_install_9.png

ダウンロードサイトのある国を選択

omv_install_10.png

ダウンロードサイトを選択

omv_install_11.png

プロキシが必要ならば入力

omv_install_12.png

以上でopenmediavault6のインストール完了

omv_install_13.png

この時点ではネットワークはIPv4のDHCPを見に行く設定になっています。

OpenMediaVault6の起動

インストーラーのisoファイルのマウントを解除し、仮想マシンを再起動すると、コンソールが立ち上がるのでrootでログインします。

omv_console_login.png

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を入れてログイン。

omv_web_login_1.png

ログインして最初にやることはadminのパスワード変更。これだけは必ずやっておくこと。

User Settings>Change Password

omv_web_login_2.png

言語を日本語にしておきます。

設定>言語>日本語

omv_web_login_3.png

ホーム(家のアイコン)ページ

omv_web_login_4.png

設定(右上のヒトのアイコン)>ダッシュボード

omv_setting_dashboard_1.png

必要なものにチェックを入れ(全てにチェックを入れ)、「保存」ボタンをクリック。

ホーム>ダッシュボード

omv_setting_dashboard_2.png

こんなかんじで設定していく。

アカウントの設定

ホーム>ユーザー>作成

普段使うアカウントを作成しておきます。

omv_setting_user.png

固定IPアドレスの設定

サーバーとして使うので、固定IPアドレスに変更します。

ホーム>ネットワーク>インタフェース

OpenMediaVaultインストール直後はこんなかんじになっている。IPv4はdhcp設定でIPv6は無効。

omv_setting_network_1.png

デバイス「enp0s3」の行を選択し、編集ボタン(鉛筆アイコン)クリック。

IPv4アドレスをdhcpから固定IPアドレス 192.68.1.12 に変更
IPv6アドレスも固定IPアドレス aaaa:bbbb:cccc:dddd::12 にする。

変更して「保存」をクリック

omv_setting_network_2.png

IPアドレスが変わるので一旦接続が切れます。WebブラウザのURL欄を変更して再開。今回の例では192.168.1.12。

http://192.168.1.12/
ここにアクセス

Sambaの設定

ホーム>サービス>SMB/CIFS>設定

omv_setting_samba_1.png

ホーム>サービス>SMB/CIFS>共有

omv_setting_samba_2.png

Windows PCからアクセス例

omv_setting_samba_3.png

PhotoPrism

写真管理サーバーPhotoPrismもOpenMediaVaultなら超簡単にインストールできます。

ホーム>システム>プラグイン>openmediavault-photoprism 6.0.7-1

omv_setting_photoprism_1.png

amd64をタップし、インストールボタン(上段のゴミ箱の右隣のアイコン)クリック

ホーム>サービス>PhotoPrism

omv_setting_photoprism_2.png

PhotoPrism二アクセス。

http://192.168.1.12:2342/

アカウント:admin
初期パスワード:admin

omv_setting_photoprism_3.png

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_setting_extras_1.png

プラグインも増えています。

ホーム>システム>OMV-Extras>Docker

「インストール」ボタンをクリックし、Dockerをインストール。 Dockerのインストールに成功すると、ステータスが「Installed and running」に変わります。

omv_setting_extras_2.png

ホーム>システム>OMV-Extras>Portainer

「Install」ボタンをクリックし、Portainerをインストールし、起動。

もし ホーム>システム>OMV-Extras に設定/Docker/Portainer/Yachtのサブメニュー(アイコン)が表示されず、

Please install the openmediavault-compose to provide docker functionality within the OMV web interface.

このようなメッセージを含む図のような設定ページだったら、

omv_setting_extras_3.png

以下の公式ドキュメント
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へのアクセス

http://192.168.1.12:9000/

最初にadminのパスワードを設定すると、以下のHomeページに遷移。

portainer_1.png

「local」枠内をクリックし、Local環境のDashboardを開きます。

portainer_2.png

でわ、docker-composeでサーバーアプリを追加していきます。

Portainerでは、docker-composeで追加するアプリ毎にTemplateを作成します。Template≒docker-compose.ymlと考えると分かりやすいでしょう。

あらかじめいくつかのTemplateが用意されています。

local>App Templates

で一覧することができます。

portainer_3.png

例としてWordPressを追加するため、「WordPress」の枠内をクリック。

必要なパラメータを埋めて、「Deploy the stack」ボタンをクリック。

portainer_4.png

Containersタブでコンテナリストを参照すると、Portainer自身のコンテナと、今立ち上げたWordPressのコンテナ、WordPressで使用するMySQLのコンテナが立ち上がっているのがわかります。「Published Port」欄を見るとWordPressにアクセスするポート番号は32769番であることもわかります。

portainer_5.png

いま立ち上げたWordPressにアクセス。お馴染みのWordPressの5分間インストールプロセスのページが開きます。

http://192.168.1.12:32769/

portainer_6.png

WordPressのインストール自体は本記事では割愛します。

次に、あらかじめ用意されているTemplateからコンテナを立ち上げるのではなく、Custom Templateを作成して任意のアプリケーションを立ち上げてみます。これはdocker-compose.ymlを自分で1から作ってアプリを立ち上げることに相当します。

ますは、
local>Template>Custom Template>+Add Custom Template
により、Custom Templateを新規作成。

portainer_7.png

「Create Custom Template」ページ

例としてPukiWikiサーバを立ち上げるCustom Templateを書いてみます。必須事項を入力し、

portainer_8.png

下にスクロールして、Web Editorの中にdocker-compose.ymlを直接書き込む。

version: '3'
services:
  pukiwiki:
    image: pengo/pukiwiki
    restart: unless-stopped
    ports:
      - 3400:80
    volumes:
     - ./pukiwiki:/ext

全部書いたらページの一番下にある「Create Custom Template」ボタンをクリック

portainer_9.png

pukiwiki Templateが作成できた。pukiwikiをクリックし、

portainer_10.png

「Deploy the stack」ボタンをクリックするとpukiwikiコンテナが起動する。

portainer_11.png

http://192.168.1.12:3400/
今立ち上げたpukiwikiにアクセスしてみる。

portainer_12.png

こんなかんじで任意のサーバーアプリを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.png

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イメージモードで書き込む」を選択。

rufus.png

焼き上がった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は便利なのかは微妙なところなのですが、コンセプトとしてはとてもおもしろいシステムだと思う。とりあえずはバックアップ用のファイルサーバーとして使っていくつもり。


Written by questions6768 who lives in Uji, Kyoto.