清水理史の「イニシャルB」
やっぱりDockerって便利 QNAP TS-453Aで数クリックで「Aipo」を動かす
2016年7月4日 06:00
QNAPやSynologyのNASには、Dockerを利用したコンテナ型の仮想化機能が搭載されている。この機能を利用すると、Docker Hubからイメージをダウンロードし、わずか数クリックするだけで、さまざまなサーバーアプリを動作させることができる。QNAPのTS-453Aで国産オープンソースグループウェアの「Aipo」を動かしてみた。
クラウドか? 自前か?
仮に、グループウェアの「Aipo」の導入を検討したとしよう。
開発元のTOWN株式会社が提供するクラウドサービスで利用した場合、メッセージやスケジュールなどの基本機能のみなら1ユーザーあたりの月額費用は0円だが、ワークフローや報告書まで使えるようにしたいとなると、1ユーザーあたりの月額費用は420円。さらにWebデータベースやプロジェクト管理まで含めると、月額費用は840円となる。
※参考:Aipoの利用料金(http://www.aipo.com/price/)
社員が10人の小さなオフィスを考えた場合、フル機能のプランLで契約した場合の金額は840円×10人=月々8400円。年換算で10万800円となる。一人当たりの月額料金はわずかなのだが、年間トータルで考えるとそこそこの負担だ。
そこで利用を検討したいのが、オープンソース版のAipoだ。自前でインストールや運用をする覚悟さえあれば、上記のコストを「0(ゼロ)」にすることができる。
コストがかからないと言っても、インストールや管理の労力を考えると割に合わないというのが、現状のオープンソースの課題の1つだが、このうちインストールの手間がなくなったとしたら、どうだろうか?
無料で使えるオープンソースのアプリケーションがハードルが高い理由の1つに、インストールのハードルの高さがある。
自力で環境を整え、決してわかりやすいとは言えないドキュメントを参考にしながら、環境の違いなどによる数々のトラブルを乗り越えたとしても、なかなか稼働までたどり着かない状況は、趣味として楽しむなら話は別だが、とても業務の一環としてやろうとは思えない。
もちろん、運用管理ともなれば、それを上回る苦労が待っている可能性もあるが、少なくともインストールの手間がなくなれば、本番導入前のテストや部門単位での個別運用で使ってみようかという気にもなるだろう。
それを実現できるのが、QNAPやSynologyのNASに搭載されているコンテナ型の仮想化技術だ。
Docker Hubなどのリポジトリから動作させたいイメージをダウンロードし、簡単な設定をすれば、すぐにOSやCMS、開発環境、データベース、グループウェアなど、さまざまな環境を稼働させることができる。
前述したAipoも、Dockerのイメージから稼働させれば、ダウンロード時間を含めても10分程度、わずか数クリックという手軽さで、NAS上でフル機能のグループウェアを、もちろん無料で動かすことができる。
コンテナステーションを利用
では、実際にどのようにどうさせれるのかをQNAP TS-453Aを例に見ていこう。
まずは、コンテナ型の仮想化機能である「Container Station]をインストールする。x86ベースのTS-x53A,TS-x51+,TS-x51,TS-x53,TS/TVS-x63,TVS-x70,TVS-x71,TS/SS-x79,TS/TVS-x80シリーズ向けの機能となるが、ARMベースのTS-531P,TS-x31+シリーズでも利用できる(最低1GBのメモリが必要)。
インストールが完了したら、コンテナを作成するためのイメージを入手する。Container Stationの「コンテナの作成」をクリックし、検索ボックスに「aipo」と入力する。時期によって表示される結果が異なる可能性があるが、「Docker Hub」上にいくつかのイメージが表示されるはずだ。
今回は表示されたイメージの中から「mikoim/docker-aipo」を利用した。ビルドしたユーザーによってさまざまなイメージを使えるのもDockerの特徴であるが、NASは一般的なサーバー環境と異なる部分もあるため、すべてのイメージが動作するとは限らない。筆者がテストしてみた限りでは、上記イメージが最新の8.1.1であるうえ、QNAP/Synologyで問題なく動作することを確認できた。
「インストール」ボタンをクリックすると、コンテナを作成するための画面が表示される。起動時のコマンドを指定したり、CPUやメモリの使用量を制限できるのはもちろんだが、「詳細設定」でネットワークや共有フォルダのマウントなどの設定も可能となっている。
基本的に標準設定のままでかまわないが、今回はネットワーク設定を変更しておく。標準ではコンテナのポート80(Aipoにアクセスする際に利用する)に対して、自動的にホスト側のポートが割り当てられるが、起動する度に変更されると面倒なので「32700」に固定しておくことにする。
設定が完了すると、実際にイメージのダウンロードとコンテナの作成が実行される。前述したイメージは700MB前後なので、回線環境にもよるが5分もあればコンテナが作成され、自動的に起動されるはずだ。
起動が開始されたら、コンテナの一覧から作成されたコンテナをクリックすることで詳細を確認できる。OSなどのコンテナを作成した場合、「コンソール」からコマンドを使って仮想環境を管理することができるが、今回のイメージの場合、自動的にAipoを起動するためのスクリプトが実行されるため、ここからの操作はできない。
Aipoの起動にはしばらく時間がかかるが、コンソールに「Access URL:http://10.0.3.2」などと表示されれれば準備は完了だ。
実質的なインストール作業は、たったこれだけとなる。イメージを探してコンテナを作成するまでの操作はわずか数クリック、時間にしても10分もかからない。これでAipoがインストールされ、NAS上でグループウェアを稼働させることができてしまったことになる。
Aipoを使ってみよう
実際にAipoを利用するには、コンテナの詳細画面上、「実行中」というラベルの下に表示されているURLのリンクをクリックする。
コンソールに表示されたURL(http://10.0.3.2)と上部のURL(http://192.168.1.171:32700)が異なるのは、Dockerの仮想ネットワークを介してアクセスするためだ。ホスト側のNICをコンテナに割り当てることも可能だが、標準ではNAT環境でコンテナにアクセスすることになる。
リンクをクリックするか、ブラウザにアドレス(http://192.168.1.171:32700)を直接指定すると、Aipoの初期設定画面が表示される。標準の管理者アカウントはadmin/adminなので、このアカウントでログインする。
あとはAipoの設定になるので、開発元が公開しているドキュメント(http://doc.aipo.com/)を参照してほしいが、ユーザーを追加したり、使いたい機能を選択したりと簡単な基本設定をするだけで、すぐに利用できるようになる。
この製品は、古典的なグループウェアと異なり、タイムラインと呼ばれる社内SNS的な機能を利用できるほか、サイボウズのKintoneほど高機能ではないが、似たような機能が使えるWebデータベースを使えるなど、かなり高機能だ。
タイムカードを使えば簡単な勤怠管理ができたり、スマートフォン経由でのアクセスも可能だったりと、かなり使い勝手がいい。
コンテナ利用時の注意点
以上、QNAPのTS-453AのContainerStationでAipoを動かしてみたが、予想以上に簡単に動かせることに驚いたことだろう。
今回はAipoを動作させたが、Docker Hubなどにイメージさえあれば、ほかにもさまざまなアプリケーションを動作させることができる。もちろん、CentoOSやUbuntuをインストールして、その上に自分で何かオープンソースのアプリをインストールしてもかまわない。
なお、ContainerStationはハイパーバイザー型の仮想化と異なり、使用するリソースもさほど多くない。Aipoの例では一時的にCPU使用率が30%前後になることがあるものの、アイドル時は2~3%とあまり高い負荷はかからない。メモリはそれなりに必要なので、NAS側のメモリを増設しておくことをおすすめするが、仮想化といってもさほどリッチな環境でなくても快適に動作させられる。
ただし、欠点もある。Aipoの場合、ユーザーアプリと呼ばれる外部の企業が作成したアプリを追加することで機能強化できるのだが、コンテナで動作させた場合、ネットワークの関係でこの機能追加ができない(エラーになってしまう)。標準機能だけでも十分に高機能ではあるが、このあたりをうまく回避できる方法があれば、うれしいところだ。