【OMV】Docker-composeプラグインでNextCloudとtailscale環境を構築

スポンサーリンク
04 OpenMediaVault
本記事はPRによる消費税込みの価格表示です

OpenMediaVaultはTrueNASよりも軽量で、古い非力なパソコンでもサクサク動作します。

そして豊富なプラグインで機能拡張できる仕組みもあり、このプラグインを活用することでdockerを使ったアプリサーバーとして利用することもできます。

OpenMediaVaultをdockerと組み合わせて使うことで、ただのファイルサーバーとしてだけでなく市販のNASに負けないくらいの多機能NASにすることができます。

本記事ではOpenMediaVaultで構築したNAS上にdocker-composeを使ったdocker環境を構築していきます。

OpenMediaVaultでdockerを使う

OpenMediaVaultはLinux(Debian)環境をベースとしたフリー(OSS)のNASシステムです。

だれでも自由に自己責任で使えるNASサーバーとして人気があります。

同様の人気サーバーとしてTrueNASがありますが、TrueNASが高機能・高性能として実績がある反面求められるハードウェアスペックが非常に高いのに対し、OpenMediaVaultは小型・軽量のNASシステムでありちょっと古いスペックの低いパソコンでもサクサク動くことで人気となっています。

OpenMediaVaultをdockerで高機能アプリサーバーに!

そして、OpenMediaVaultにdockerの動作環境を構築することで、本来のファイルサーバーとしての機能に加えてストレージ関連を中心としたさまざまなアプリケーションをdockerで実現できるようになり、QNAPやSynologyなどの商用高機能NASに負けない機能を持つプライベートクラウドサーバーに仕立て上げることができます。

本記事はOpenMediaVaultの環境でdockerアプリを動作させるための環境構築手順を説明していきます。

docker compose?portainer?

dockerの動作環境を構築したりdockerを動作させる場合の基本はコマンド操作ですが、やはりWebGUIからサクサクやりたくなります。

dockerを管理できるWebUIの選択肢として「docker compose」と「portainer」があります。

どちらもブラウザを使ったWeb画面からdockerアプリのインストールや動作制御などの管理が可能です。

OpenMediaVaultではプラグインとしてdocker-composeを活用できる機能を提供しています。

本記事ではまずOpenMediaVaultでdocker-cmopose環境を構築しdockerアプリを動作させていきます。

※また、portainerの環境構築についても言及していきます。

本記事の前提条件

本記事は「OpenMediaVaultの環境にdocker-compose/Portainer環境を追加構築する」という内容になります。

そのため、本記事の前提として「すでにOpenMediaVault環境は構築されている」とします。

OpenMediaVaultでdocker-compose環境を構築する

OpenMediaVaultにはさまざまな拡張機能がプラグインとして実装・提供されています。

OpenMediaVaultをインストールすると初期状態で利用可能となる標準のプラグインに加え、有志が開発してる拡張プラグイン(OMV Extras)も利用可能です。

OpenMediaVaultでは拡張プラグイン「OMV Extras」を導入することでdockerを利用可能となります。

STEP① プラグイン集「OMV Extras」のインストール

OpenMediaVaultでdocker環境を構築する一番簡単な方法は、拡張プラグイン集「OMV Extra」が提供する「docker-compose」プラグインを利用する方法です。

このため、まずは拡張プラグイン集「OMV Extras」をインストール(リポジトリ登録)する必要があります。

OMV-Extras | OMV Plugin-Developersプロジェクト

本記事で使うSnapRAIDやMergerFSのプラグインもこのOMV Extrasに含まれています。

OMV-ExtrasはWebUIからのインストールではなくコンソールからインストールします。

OpenMediaVaultへSSHログインし、以下の手順にてOMV Extrasをインストールします。

wget -O - https://github.com/OpenMediaVault-Plugin-Developers/packages/raw/master/install | bash

OMV Extrasがインストールされると、WebUIには「omv-extras」のメニューが追加表示されます。

OpemMediaVaultへSnapRAIDとMergerFS

以上でプラグイン集「OMV-Extras」のインストールは完了です。

STEP② docker-composeプラグインのインストール

プラグイン集「OMV-Extras」のインストール(リポジトリ登録)が完了したら、プラグイン「docker-compose」をインストールしdocker環境を構築していきます。

OpenMediaVaultでのdocker環境は以下の手順で構築します。

docker環境の構築

  1. dockerリポジトリの有効化
  2. docker-composeのインストール

dockerリポジトリの有効化

まず最初にdockerリポジトリを有効化します。

メニュー「システム > omv-extras」画面を開きます。

OpenMediaVaultでdockerを動かす

「Docker repo」をチェックし「保存」ボタンで設定を確定します。

以上でdockerリポジトリの有効化は完了です。

docker-composeプラグインのインストール

次にdockerの動作環境としてのdocker-composeをインストールします。

OpenMediaVault(OMV-Extras)ではdocker-compopseはプラグインとして提供されているので、プラグインをインストールするだけでdocker-composeの環境ができてしまいます。

メニュー「システム > プラグイン」画面を開きます。

OpenMediaVaultでdockerを動かす

利用可能なプラグインが一覧表示されるので、検索欄から「docker-compose」と入力し、docker-composeプラグインを絞り込みます。

docker-composeプラグインを選択(黄色表示)し、インストールボタン(↓)でインストールします。

docker-composeのインストールが完了すると、メニュー「サービス > compose」が追加されています。

OpenMediaVaultでdockerを動かす

以上でdocker-composeのインストールは完了です。

STEP③ docker-composeの環境設定

docker-composeのインストールが完了したら、次は環境設定を行います。

docker-composeの環境設定とは今後構築していくdockerアプリが利用するディスク領域を指定する、という内容です。

本記事では、OpenMediaVaultのシステム領域(システムディスク)をdockerで使いたくないため、本環境設定ではすべて共有フォルダ(データディスク)を指定していきます。

docker-composeの設定内容

docker-composeの設定はメニュー「サービス > compose > 設定」より行います。

設定すべきディスク領域は以下の通りです。

Compose Files docker-compose本体が利用するディスク領域
Data dockerアプリが利用するディスク領域
Backup dockerアプリのバックアップ領域
Docker dockerのシステム領域
※初期値は「var/lib/docker(システムディスク内)
※共有フォルダへ再定義

共有フォルダの作成

本記事ではdocker-composeのディスク領域設定として、以下の共有フォルダを指定します。

Compose Files /docker/docker-files
Data /docker/data
Backup /docker/backup
Docker /docker/lib/docker

よって、まずは上記の共有フォルダを作成します。

最初に上記共有フォルダを作成し、その次にDocker-Compose環境設定でその共有フォルダを指定します。

メニュー「ストレージ > 共有フォルダ」画面を開きます。

OMVにdocker環境を構築

上記のように、共有フォルダを作成します。

docker-composeへ共有フォルダを登録

次に、メニュー「サービス > Compose > 設定」画面を開きます。

OMVにdocker環境を構築

上記のように、docker-composeの各共有フォルダに作成した共有フォルダを指定していきます。

以上でdocker-composeの環境設定は完了です。

STEP④ portainer-ceをインストールしてみる

では構築されたdocker-compose環境を使ってみましょう。

まずは「portainer-ce」をインストールしてみます。

portainer-ceは複数のdockerアプリをウェブベースで管理できる仕組みを提供してくれるアプリケーションであい、docker形式で配布されています。

前提:docker-composeの使い方

docker-composeの環境でdockerアプリをインストールし運用するためには「docker-compose.yml」という形式の定義ファイルを理解する必要があります。

docker-composeはこの「yml形式」の定義ファイルに従ってdocker環境を構築していきます。

たとえば、これからインストールする「portainer-ce」のdocker-compose.ymlファイルは、GithubのPortainer公式ページで以下の定義ファイルがサンプル提供されています。

portainer docker-compose.yml | Github

このような定義ファイルを自分のサーバー環境に合わせてカスタマイズし、docker-composeとしてインストールします。

OMV-composeプラグインなら!?

OMV-composeプラグインを導入した環境においても、これらdockerアプリの「docker-compose.yml」ファイルを使ってdockerアプリをインストールしていきます。

一方で、OpenMediaVault-composeプラグインをインストールすると、多くのメジャーなdockerアプリの「docker-compose.yml」ファイルがサンプルとして提供されています。

つまり、自分でdocker-compose.yml定義ファイルを書いたり、ネット上で検索して探してくる必要もなく、サンプルから選んでdockerをインストールできる仕組みて提供されています。

portainer-ceのdocker-compose.ymlを定義

ではportainer-ceをインストールしてみます。

まずはportainer-ceの「docker-compose.yml」定義ファイルを定義します。

メニュー「サービス > Compose > Files」画面を開きます。

OMVにdocker環境を構築

画面上部の「追加」アイコン(+マーク)から「Add from Example」を選びます。

OMVにdocker環境を構築

このように、非常にたくさんのdockerアプリ(のdocker-compose.yml定義ファイル)がサンプル提供されています。

では、画面上部の絞り込み欄に「portainer」と入力し絞り込んでみましょう。

OMVにdocker環境を構築

「portainer」を選択(黄色反転)し、画面上部の「追加」ボタン(+マーク)を押下します。

OMVにdocker環境を構築

追加画面が表示されるので、「説明欄」に適用な説明文を入力し、「追加」ボタンを押下します。

下図のように、portainer-ceのdocker-compose.yml定義ファイルが登録されます。

OMVでdockerアプリを使う

docker-compose.ymlの定義修正(必要があれば)

docker-compose.yml定義ファイルに修正を行う必要があれば、「編集アイコン(鉛筆マーク)」より編集を行います。

OMVでdockerアプリを使う

「編集」を開くと、サンプルより登録されたportainer-ceのdocker-compose.yml定義ファイルが編集可能となります。

OMVにdocker環境を構築

サンプルを使ったインストールに対し、定義の変更が必要である場合はこの画面よりdocker-compose.ymlファイルを編集していきます。

※今回のportainer-ceインストールでは編集は不要です。

docker-compose.ymlの構文チェック

ここまでで定義された「docker-compose.yml」定義ファイルが構文的に正しいのか?をチェックすることができます。

画面上部のチェックアイコンからdocker-compose.yml定義ファイルをチェックします。

OMVでdockerアプリを使う

構文的にエラーがあればその旨エラー表示されるので、定義ファイルを修正します。

docker-compose.ymdの実行(docker起動)

では、docker-compose.yml定義ファイルを使って、portainer-ceのdockerを起動します。

dockerアプリの起動はスタートアイコン(↑マーク)から行います。

OMVでdockerアプリを使う

しばらくするとdockerアプリ(portainer-ce)が起動され、ステータス「UP」とポート番号が表示されます。

OMVでdockerアプリを使う

portainer-ceがインストールできたので、ウェブブラウザーから「http://OpenMediaVaultのIPアドレス:9000」と入力してみましょう。

OMVにdocker環境を構築

portainer-ceのログイン画面が表示されました。

以上で(たったこれだけで)portainer-ceのインストールは完了です。

docker-composeを使ってNextCloudインストール

では、docker-composeを使ってNextCloudをインストールしてみます。

NextCloudはGoogleドライブのようなアプリで、サーバー(OpenMediaVault)とクライアント(スマホ/PCなど)にアプリを入れることでクライアントのファイル(写真など)をサーバーへ同期して保存してくれます。

OpenMediaVaultの大容量ディスク領域を保存領域として利用できるので、クラウドサービスで容量が気になる方などへおすすめです。

STEP① NextCloudのdocker-compose.yml定義ファイル

では、NextCloudアプリをdockerを使ってインストールしていきます。

OpenMediaVault-composeではNextCloudのdocker-compose.yml定義ファイルもサンプルとして提供されているので、ほぼそのまま使えます。

メニュー「サービス > Compose > Files」画面から「nextcloud」で絞込、一覧からNextCloudを選択(黄色反転)し「追加(+マーク)」ボタンを押下します。

OMVでdockerアプリを使う

一覧画面にNextCloudが表示されるので選択(黄色反転)し「編集(鉛筆マーク)」ボタンを押下します。

OMVでdockerアプリを使う

サンプルとしてインストールされたNextCloudのdocker-compose.yml定義ファイルが表示されるので、若干修正します。

OMVでdockerアプリを使う

説明 ご自由に
Files environment タイムゾーンを日本(TZ=Asia/Tokyo)へ修正

以上を設定したら「Save」ボタンで保存します。

一覧から「UP」ボタンを押下し、NextCloudアプリを起動します。

OMVでdockerアプリを使う

ステータスが「UP」となれば起動完了です。

STEP② NextCloudアプリの初期設定

NextCloudは初回ログイン時にNextCloudアプリの環境設定が必要です。

NextCloudへの接続はブラウザから「https://OpenMediaVaultのIPアドレス:443」で接続されます。

初回の接続時には以下のように環境設定のための情報入力が必要です。

OMVでdockerアプリを使う

環境設定に必要な各種情報の入力を行います。

本記事では以下のように設定しました。

新しい管理者アカウント名 ご自由に
※本記事では”admin”
新しい管理者パスワード 管理者アカウントのパスワード
データフォルダ 初期値”/data”のまま
データベース ご自由に
※本記事では”SQLite”を選択
データベースアカウント ご自由に
※本記事では”root”
データベースパスワード ご自由に
データベース名 ご自由に
※本記事では”nextcloud_db”
データベースのホスト名 “localhost”のまま

環境設定が完了するとアプリの追加画面が表示されます。

アプリは後からでも追加できますが、本記事ではそのまま「推奨アプリをインストール」で先へ進めます。

OMVでdockerアプリを使う

以上でNextCloudのインストールは完了です。

STEP③ クライアント(スマホ)での使い方

docker-composeを使ってOpenMediaVault上にNextCloudサーバーアプリを導入しました。

あとはパソコンやスマホなどのクライアントにアプリを入れて、サーバーの機能を使っていきます。

NextCloudのクライアントアプリは公式サイトで案内されています。

Download NextCloud | NextCloud

NextCloudの機能

NextCloudの主たる機能はGoogleクラウドのようなストレージサービスす。

パソコンやスマホのデータ(書類/写真/動画など)をNextCloudサーバー上に保管する、などの使い方です。

加えて、NextCloudはさまざまな機能も追加されており、LINEのようなコミュニケーションやOfficeのような文書管理も可能、それぞれ必要なアプリをクライアントにインストールして使っていきます。

以下のようなサービス(アプリ)があります。

Nextcloud Files 各種ファイルのアップロード/同期/ダウンロードなどの管理
Nextcloud Talk NextCloudサーバーを使って音声通話/ビデオ通話ができます
また、Web会議やチャットサービスなど

本記事ではファイル管理に関する「NextCloud Files」アプリを使ってスマホのデータをNextCloudサーバー(OpenMediaVault上)に保管する仕組みを確認してみます。

docker-composeを使ってtailscaleインストール

外出先からもOpenMediaVaultのサービスを利用したくなります。

この場合、tailscaleをインストールすると簡単に外出先から自宅ネットワーク(OpenMediaVault含む)へVPN接続できるようになります。

そして、OMV-composeにはこのtailscaleのdockerアプリ導入もサンプルとして提供されています。

ここからは、OMV-composeプラグインを前提に、OpenMediaVaultへtailscaleをインストールしていきます。

STEP① 準備:tailscale利用者登録と認証キーの取得

Tailscaleは最新のVPNプロトコルであるWireGuardプロトコルを使った軽量・高速なVPNを簡単に構築・運用できるクラウドサービスです。

通常のVPN環境構築ではVPN接続する各デバイスのIPアドレスや認証鍵などの細かな情報管理が結構面倒なのですが、Tailscaleのサービスを使えばそんなの気にすることもなくサクッとVPN環境を構築してくれます。

クラウドサービスなので、まずはTailscaleサービスへの利用者登録が必要です。

無料/有料のさまざまなプランが提供されていますが、個人で利用する範囲においては(多くの場合)無料プランで十分です。

tailscaleへの利用者登録

tailscale利用者登録 | tailscale

OMVでdockerアプリを使う

OMVでdockerアプリを使う

tailscaleの仕組み、利用者認証とタグ認証

tailscaleでのVPNを構築する場合には登録するデバイスごとに(当然ながら)認証(認証鍵)が必要です。

この認証(鍵)には「利用者認証」と「タグ認証」があります。

利用者認証とは利用者登録した利用者IDを使ってデバイス認証します。

タグ認証とは利用者(管理者)が許可したタグを使ってデバイスを登録します。

dockerアプリを利用する場合には「タグ認証」によりデバイス認証を行います。

タグの有効化

dockerアプリでtailscaleを利用するためには認証鍵(タグ認証)が必要です。

このため、まずは「タグ」を有効化してあげる必要があります。

メニュー「Access Control」画面を開きます。
OMVでdockerアプリを使う

「Access Controls」定義が表示されるので、タグ定義部分を以下のように修正します。

// Define the tags which can be applied to devices and by which users.
	"tagOwners": {
	     "tag:example": ["autogroup:admin"],
 },
  • 行頭のコメント”//”を外す(4行分)
  • “example”(タグ名)はお好きな名前に!

タグを有効化したら「Save」ボタンで保存します。

認証鍵の取得

タグを有効化したら認証鍵を生成します。

メニュー「Settings > Keys」画面から「Generate auth key…」ボタンを押下します。

OMVでdockerアプリを使う

認証鍵生成画面が表示されるので、以下のように入力します。

OMVでdockerアプリを使う

Description ご自由に(認証鍵一覧の見出しみたいなもの)
Reusable オン(右へスライド)
Tags オン(右へスライド)し、”Add tags”の一覧からタグを選択

以上を入力・設定し、「Generate key」ボタンを押下します。

OMVでdockerアプリを使う

認証鍵が生成されました。

認証鍵はこの画面でしか確認できません(後から確認はできません)。

ここで表示される認証鍵は控えておきます。

以上で認証鍵の生成は完了です。

STEP② tailscale on dockerのインストール

では、OpenMediaVaultへTailscaleをDockerアプリでインストールしていきます。

docker-compose.yml定義ファイル

Tailscaleのdocker-compose.yml定義ファイルはTailscalenの公式サイトで公開されているので、本記事では公式サイトのdocker-compose.yml定義ファイルを利用します。

Using Tailscale with Docker #Code Sample | Tailscale

メニュー「Compose > Files」画面から「追加(+マーク)」を選びます。

OMVでdockerアプリを使う

OMVでdockerアプリを使う

名前 ご自由に
※”tailscale”が良いです
説明 ご自由に
File TS_AUTHKEY 先に取得したtailscale認証キー(AuthKey)を定義
TS_EXTRA_ARGS –advertise-tags=tag:example
※ご自身で設定したタグ名を定義(本記事ではexample)
TS_ROUTES 自宅ネットワークのサブネットを登録
※本記事では”192.168.11.0/24″

以上を設定したら「保存」ボタン押下して保存します。

dockerコンテナの起動

docker-compose.yml定義ファイルの登録が終わったらdockerコンテナを起動します。

メニュー「サービス > Compose > Files」画面からtailscaleを選択(黄色反転)し、起動(UP)アイコン(↑マーク)でdockerコンテナを起動します。

OMVでdockerアプリを使う

ステータスが「UP」になったらdockerコンテナの起動完了です。

Tailscale管理コンソールでサブネット登録

Tailscaleが起動したので最後にTailscale管理画面(Admin Console)からサブネット登録を行います。

Tailscale管理画面(Admin Console)へログインします。

tailscaleが起動したことで管理画面には「tailscale-nginx」というデバイス名でサービス登録されています。

このデバイスのShareメニュー「…」から「Edit route settings…」を選択します。

OMVでdockerアプリを使う

docker-compose.yml定義ファイルに定義した自宅サブネット(TS_ROUTES)が表示されるので、チェックして承認し「Save」ボタンで保存します。

OMVでdockerアプリを使う

以上でOpenMediaVault上のtailscale(dockerアプリ)の登録、および自宅ネットワーク(サブネット)の登録が完了です。

まとめ、OpenMediaVaultでcomposeプラグインを使う

このように、OpenMediaVaultでOMV-Composeプラグインを導入することで通常のdocker-compose環境よりも簡単にインストールでき、また簡単にdockerアプリの構築・運用ができてしまいます。

OpenMediaVaultとOMV-composeプラグインにより、非常に多くのdockerアプリの「docker-compose.yml」がサンプルとして提供されており、一般的なdocker環境よりも導入も運用も簡単になります。

たくさんのdockerアプリがサンプル提供されている

OMV-composeプラグインを導入すると約170以上のメジャーなdockerアプリの「docker-compose.ymd」定義ファイルがサンプル提供されています。

メジャーなdockerアプリはほぼ網羅されており、自分でdocker-compose.ymlファイルを作成・検索してくるよりも簡単にサンプルより一発導入が可能です。

サーバー環境に合わせてくれる

自分で「docker-compose.yml」定義ファイルを作成する場合、自分のサーバー環境に合わせて定義の作成・修正が必要です。

このため、ある程度のdocker-compose.ymlの書式の知識に加えて、dockerの動作環境の仕組みも理解しておく必要があります。

OMV-composeプラグインを使いサンプルよりインストールする場合には、これらサーバー環境の要素がすでに(自動的に)「docker-compose.yml」ファイルに反映されます。

OMV-Composeで最強dockerアプリサーバー

このように、OMV-Composeプラグインを使えば簡単にOpenMediaVaultのストレージ環境・ネットワーク環境に合わせたdockerアプリが簡単に導入できます。

NextCloudのようなストレージサービスアプリケーションであっても、ストレージ領域を自動的にOpenMediaVaultのデータ領域に設定してくれるのでデータのバックアップ運用なども簡単になります。

OMV-ComposeプラグインによりOpenMediaVaultは単なるストレージサーバーというだけでなく、dockerアプリサーバーとしても非常に有効なプラットフォームになります。

OpenMediaVaultをお使いならOMV-composeプラグインは必須プラグインだと思います。

単なるストレージサーバーをdockerアプリによって高機能なアプリサーバーに変身させてくれます。

タイトルとURLをコピーしました