トップページ»3.1.Linux/UNIX»FC3にZoneMinderをインストールしてみた

3.1.Linux/UNIX



FC3にZoneMinderをインストールしてみた

最近セキュリティ×2と以前にも増してうるさくなってきた。 ネットワーク上のセキュリティは前々から騒がれてきたが、今では重要な部屋などには物理的な認証、つまり指紋認証やら静脈認証といったところまで必須だということになってきている。

それが済むと今度は映像によるビデオ監視が必要だという話が出てきた。 恐らく今後本格的に導入することになるだろう。

そんな切っ掛けがあり、前々から試してみたかった「ZoneMinder」を試してみることにした。 本番稼働時には別の市販ソフトウェアを導入することになるかもしれないが、オープンなソフトを一つの基準として検証しておくのも悪くないと思ったからだ。

ZoneMinder
Linux Video Camera and CCTV Security with Motion Detection

http://www.zoneminder.com/

このソフトウェアはGPLなLinuxベースのビデオ監視システムだ。 Feature Listから特徴を抜粋すると、




ZoneMinderの特徴(抜粋)

  • いくつかのLinuxディストリビューションで動作する
  • USBカメラ、ネットワークカメラをサポート
  • カメラごとに監視ゾーン、感度などを定義可能
  • ウェブインターフェースによるユーザーフレンドリーな操作が可能
  • mpegやマルチパートjpegによるスチルイメージ録再生が可能
  • 異常検知時emailやSMSによる通知可能
  • 異常発生時自動的に外部FTPストレージにアップロード可能
  • ZoneMinder操作可能ユーザー及びアクセスレベルの定義が可能
  • マルチランゲージ対応(日本語も一部対応済み、但しSJISベース)
  • その他多数(詳しくは上のリンクからどうぞ)

これだけの機能があるにもかかわらず事実上無料であるのだから使ってみない手はない。 GPLということで商用、非商用関わらないし。

今回はこのZoneMinderをFedora Core3にインストールしてみた。 良く調べてみると分かることだが、実はFedora Core 3にはrpmでの提供をしている所がある。 通常はこちらを使った方が楽だし良いかも知れない。

だが今回はあえてコンパイルしてみることにした。 Googleで検索してみると日本語によるZoneMinderの情報が殆どなく、ほんの少しでも今後本ソフトウェアを別のOSにインストールする人の情報源となればと思ったからだ。

正直言って今回の作業はそれなりに手間がかかる。 環境にもよりけりだが、少なくとも2~3時間、場合によっては半日あるいはそれ以上かかるボリュームだと思う。 私も手が空いている合間を使って約2日間かけて作業した。 パッケージを使わずにコンパイルされる方はある程度時間が必要だと覚悟した方がいいだろう。

ハードウェア環境

まず今回使ったハードウェア環境を列記する。

  • CPU - Intel Celeron 433MHz
  • MEM - 384MB
  • HDD - 6G
  • Camera - AXIA ix-1, Che-ez SPYZ

ビデオ監視サーバーと呼ぶにはかなり貧弱だが、使える機材がなかったので我慢する事に。(苦笑) またカメラはLinuxで標準的に認識するものをかき集めた。 できるだけ手間を掛けたくなかったからだ。

さて、結論から書くようだが、正直上記スペック程度のPCでZoneMinderを動作させるのはかなり厳しいと感じた。 結構「重い」部類のソフトウェアのようだ。

デフォルト設定のままでカメラ2台を接続し監視状態にしただけでCPUの負荷が100%を常にキープするような状況になる。 監視を毎秒4フレーム程度に落とした状態で平均20%程度をキープ、ようやく普通に使える状態になった。 当然のことだがバックグラウンドでCPUを使い切っている状態ではウェブのインターフェースで状況を確認する事もままならない状態になる。

本気でカメラ複数台を接続して使う場合は最低でもPentium3 1G以上、できればPentium 4の2GオーバークラスのPCをZoneMinder専用で立てた方がいいのではないかと思う。

また負荷が高いと言うことは発熱の問題も考慮しておいた方が良いだろう。 仮に自宅サーバーで導入する場合、夏場でもエアコンが効いていないシーンで運用する事も考えられる。 発熱はハードウェア故障につながる一つの要因だ。 lm-sensors等を活用して十分に検証、留意する必要があるだろう。

ハードディスクも今回のように6G程度では心許ない。 ZoneMinderではmpegによる動画記録もできるようだが(未検証)、今回使った非力な環境では厳しいと判断しjpegによるスチルイメージにした。 それにも関わらず2日稼働で2G程度使用してしまった。 今回カメラを設置した場所はかなり動きがある場所だった事が原因の様だ。 動きの少ない場所にカメラを設置した場合であればさほどディスクを使わずに済むと思うが、それでも備えあれば憂いなし。 ディスクは大きい方がいいのではないかと思う。
カメラについては本気で使う場合はAXIS 206W等のネットワークカメラが良いかも知れない。 ネットワークカメラの特性上、Linuxとのマッチングも考えなくて済む。 絶対的に楽だ。(笑) またこちらのカメラであればZoneMinderのサイトにも紹介があるくらいなのでベストマッチなのではないだろうか。

尚、今回USBカメラのセットアップに関しては一切説明しない。 USBにさくっと挿して完了となるものを選定したからだ。 必要な方は別途ネットなどで調べて欲しい。

前準備1 - Fedora Core3のインストール

今回はまずベースとなるOSを新規にインストールするところから始めた。 選定したのはFedora Core 3。 このカテゴリでとりあげているのはFedora Core 2だろ?と怒られそうだが、今回は単に使ってみたかったという安易な理由で選定した。(笑) 恐らくFedora Core 2でも殆ど同じ方法で作業可能だと思うのでお許し頂きたい。

サーバーのインストールは以下の要領でパパッと簡単に済ませた。

  • インストールのモードは「サーバー」を選定
  • ファイアウオール(iptable)は無効にした
  • その他の設定は全てデフォルト
  • インストール完了後yumで全パッケージをアップデート

ここまでの作業は特に説明しない。 分からない場合は他のサイトなどの記事を参考にして欲しい。
この時点でZoneMinderの必要とするapacheはインストールされるはずだ。

前準備2 - コンパイラのインストール

ZoneMinderをコンパイルするのに当然コンパイラが必要となる。 今回のコンパイルではgccとgcc-c++が必要らしいので、

yum install gcc gcc-c++

依存関係で5つ程他のパッケージがインストールされるはずだ。

前準備3 - mysqlのインストール

ZoneMinderではデータベースとしてMySqlを必須とする。 サーバー以外にライブラリなども必要なようなので、

yum mysql mysql-server mysql-devel

依存関係で2つ他のパッケージがインストールされるはずだ。

前準備4 - phpのインストール

既にphp本体は入っているので、他の必要なものを入れる

yum install php-mysql

前準備5 - その他のインストール

その他にZoneMinderが必要とするパッケージをインストールする。 詳しく書くと以下のファイルが入っているパッケージをインストールする必要がある。

  • libjpeg.a
  • libz.a
  • libpcre.a

libpcre.aはリモートカメラを使う場合必要となる。 USB接続のカメラだけの場合は必要ない。

yum install libjpeg-devel
yum install zlib-devel
yum install pcre-devel

ここまでは標準のリポジトリだけでyumできるはずだ。

前準備6 - ffmpegのインストール

ZoneMinderは動画のエンコードを行うのにffmpeg又はBerkeley MPEG encoderを使用する。 マニュアルにはあくまで「if necessary」と書いてある通り必須ではないのだが、折角ビデオ監視なのだからインストールしておきたいもの。 これを入れることでmpegの動画として閲覧することなどができる。

今回はrecommendedなffmpegをインストールすることにした。

とはいえ標準のリポジトリには入っていない。 今回は有名なサードパーティリポジトリであるDAGにお世話になることにした。

DAG Apt/Yum RPM repository
http://dag.wieers.com/home-made/apt/

yumでの使い方は以下のURLに説明がある。
http://dag.wieers.com/home-made/apt/FAQ.php#B3

忘れがちだがGPG-KEYのインストールもしておこう。

rpm --import http://dag.wieers.com/packages/RPM-GPG-KEY.dag.txt

準備が出来たらffmpegのインストールを行う。 ヘッダファイル等も必要っぽいのでそれらも入れる。

yum install ffmpeg ffmpeg-devel

依存関係で20個以上別のパッケージが入るはずだ。

perlモジュールのインストール

2005-04-04追記:

ZoneMinderにはPerlスクリプトも含まれ、それらはいくつかのPerlモジュールも必要とするらしい。 と言うわけでインストールしておく。

yum install perl-MIME-tools
yum install perl-TIME-HiRes

実はZoneMinder動作後もしばらく気がついていなかったのだが、これらPerlモジュールが入っていないとzmfilter.pl等付随するスクリプトがエラーとなり動作しない。 表面的にはエラーとして現れてこないので気がつかなかった。 ちなみにマニュアルによるとzmfilter.plはフィルターに定義したアクションを自動的に実行する為に必要となるとのこと。

ここまでで前準備は終わりとなる。

ZoneMinderのダウンロード

さて、ようやく本番の作業に移れる。 ZoneMinderをダウンロードしuntarをする。

wget http://www.zoneminder.com/fileadmin/downloads/zm-1.20.1.tar.gz
tar xvzf zm-1.20.1.tar.gz

私が作業をしたときはZoneMinderのバージョンは1.20.1であったが、執筆現在既に1.21.0が出てしまっている。 試しにそちらもインストールしてみたが、あまり変わりないようなのでそちらの説明はしない。

configure

続いてconfigureを行う。 尚、現在のままconfigureすると以下のエラーが出る。

configure: error: zm requires libmysqlclient.a

当該ファイルは既に上の方の作業でインストールされているはず。 なので上記ライブラリをconfigureで見える位置にシンボリックリンクしておく。

ln -s /usr/lib/mysql/libmysqlclient.a /usr/lib

できたらconfigure

cd zm-1.20.1
./configure --with-mysql=/var/lib/mysql --with-webdir=/var/www/html/zm/ --with-cgidir=/var/www/cgi-bin/ --with-ffmpeg=/usr/include/ffmpeg/ --with-lame=/usr/lib/

公開する場所を変えたい場合は--with-webdirの値を変更する等して欲しい。 暫くすると以下のメッセージが表示される。

configure: WARNING: Now run 'perl zmconfig.pl' to create your ZoneMinder configuration

これでconfigure完了。

zmconfig.plの実行(1)

続いてマニュアルの指示通りzmconfig.plを実行する。

perl ./zmconfig.pl

ここの設定は非常に長く面倒な作業だ。 しかも全て英語のため、いちいち考えながら作業するのは骨が折れる。

と言うわけで私はEnterで進める場所は全てデフォルトの設定で進んでしまった。 しかしEnterで進めない部分もあるので、その部分だけ私が行った設定内容を以下に書いておこう。

  • DB user name, needs at least select, insert, update and delete privileges (alphanumeric) [] :zm
  • DB user password (alphanumeric) [] :hoge
  • Default language used by web interface (directory) [en_gb] :ja_jp
  • Secret used when encoding authentication information (string) [] : ZoneMinder
  • What width should each monitor in the montage view be (integer) [0] :0
  • What height should each monitor in the montage view be (integer) [0] :0

バージョン1.21.0ではこれ以外にもEnterで進めない部分があるがメモを取るのを忘れてしまった。(苦笑) 適当に入力して欲しい。

全て終わると

Now please create your database and database users and then run 'perl zmconfig.pl -noi' to import your configuration into the database

と表示されるはずだ。

データベースの準備

続いて上記指示通りデータベースの準備をする。 mysqlが起動していない場合は起動してから行う。

/etc/rc.d/init.d/mysqld start
mysql mysql < db/zmschema.sql
mysql mysql
grant select,insert,update,delete on zm.* to zm@localhost identified by 'hoge';
quit
mysqladmin reload

zmconfig.plの実行(2)

指示通り、zmconfig.plの2回目の実行を行う。

perl zmconfig.pl -noi
perl ./zmconfig.pl ZM_STRICT_VIDEO_CONFIG

2つ目の方は問い合わせが来るが、そのままEnterで良さそうだ。

インストール

ここでようやく準備が終わってインストールが出来る状態になった。

make
make install

Cambozolaのインストール

Cambozolaはブラウザ上でmpegビデオ等を受信、再生するJavaアプレットだ。 ZoneMinderはCambozolaによる動画閲覧をサポートしている。 これをインストールしなくてもZoneMinderだけでjpegスチルイメージとして表示することは可能だが、やはり動画としてみれた方が良い。 またCambozolaではjpegスチルイメージで記録された画像を擬似的に動画として再生することができる。

CambozolaのアプレットはZoneMinderサイト内に置いてある。
http://www.zoneminder.com/fileadmin/downloads/cambozola.jar
基本的にこれをZoneMinderの公開用webフォルダにコピーするだけでZoneMinder上で使用することができる(はず、未検証)。

しかしCambozolaのオフィシャルサイトを見ると、ZoneMinder上で再配布されているアプレットのバージョンはかなり古そうだ。 以下はCambozolaのオフィシャルサイトのアドレスである。

README File for Cambozola
http://www.charliemouse.com/code/cambozola/

というわけで今回はこちらのサイトからソースを落としコンパイルすることにした。

CambozolaのコンパイルにはApache ANTが必要になる。 Apache ANTにはJava SDKが必要になる。 というわけで両方を準備しよう。 まずはJAVA SDKから。

Download Java 2 Platform, Standard Edition, v 1.4.2 (J2SE)
http://java.sun.com/j2se/1.4.2/download.html

上記ページからj2sdk-1_4_2_07-linux-i586-rpm.binをダウンロードする。 現在J2SE 5.0がメインぽいが、Cambozolaのコンパイル時にエラーになるためJ2SE 1.4.2を使う。 ダウンロードできたら、

chmod 755 j2sdk-1_4_2_07-linux-i586-rpm.bin
./j2sdk-1_4_2_07-linux-i586-rpm.bin
rpm -ivh j2sdk-1_4_2_07-linux-i586.rpm

binの中身はrpmなので簡単にインストールできるはず。

続いてApach ANTのインストール。

wget http://apache.towardex.com/ant/binaries/apache-ant-1.6.2-bin.tar.gz
tar xvzf apache-ant-1.6.2-bin.tar.gz
mv apache-ant-1.6.2 /usr/local
vi ~/.bash_profile

~/.bash_profileをviで開き、以下を最後辺りに追記する。

export ANT_HOME=/usr/local/ant
export JAVA_HOME=/usr/java/j2sdk1.4.2_07
export PATH=${PATH}:${ANT_HOME}/bin

この内容を環境変数に反映する。 面倒なので.bash_profileをそのままsource。

source ~/.bash_profile

そして最後にCambozolaをダウンロードしコンパイルを行う。

wget http://www.charliemouse.com/code/cambozola/cambozola-latest.tar.gz
tar xvzf cambozola-latest.tar.gz
cd cambozola-0.65
ant

これでdistフォルダにjarファイルが2つできるので、

cp dist/cambozola.jar /var/www/html/zm

などとして、ZoneMinderのwww公開用フォルダにコピーして完了。

SELinuxの設定

Fedora Core3では標準でSELinuxが実装されている。 起動してみると分かるが、標準のままではZoneMinderは動作しないようだ。

今回はあまりにも記事が長くなってしまったのでSELinuxの設定まで言及しない。 とりあえず一時的にSELinuxを無効化する方法だけ書いておこうと思う。

setenforce 0

これでSELinuxが無効化され、ZoneMinderが動作する状態になるはずだ。

実行スクリプトの準備

続いて起動スクリプトの準備を行う。 ZoneMinderのソースを展開したフォルダで、

cp scripts/zm /etc/rc.d/init.d/
chmod 755 /etc/rc.d/init.d/zm
chkconfig --add zm

これで他のサービス同様zmを自動起動したりstart/stop/restartできるようになる。 自動起動の設定を変える場合はntsysv等を使って行う。

ZoneMinderサービスの実行

ようやくZoneMinderが実行できる所まできた。 実行スクリプトの準備のところで用意したスクリプトを使ってZoneMinderを起動してみよう。

/etc/rc.d/init.d/zm start

Apacheが起動していないようだったらこちらも起動しておく。

/etc/rc.d/init.d/httpd start

正常に起動したらブラウザで以下のURLにアクセスしてみよう。

http://server_address/zm/

あとはブラウザの方でカメラや各種設定を行って完成だ。 カメラの追加などは機種によって違うので割愛する。 使用する機種に応じて設定して欲しい。

ZoneMinderの設定(Options)

最後にZoneMinderのウェブインターフェース上にあるOptionsの設定についても少し触れておこう。

メイン画面の右上にあるOptionsをクリックするとZoneMinderの各種設定ができる。 私が行った設定の一部を以下に示す。

Systemタブ

  • 英語表示にしたい場合はZM_LANG_DEFAULTをen_gb。(戻したい場合はja_jp)

Videoタブ

  • ストリームをmpegにしたい場合はZM_VIDEO_STREAM_METHODをmpegに変更

Configタブ

  • 録画した映像の色が変な場合はZM_LOCAL_BGR_INVERTを変更

Toolsタブ

  • ZM_OPT_CAMBOZOLAをチェック
  • ZM_OPT_MPEGをffmpegにする
  • ZM_PATH_FFMPEGを/usr/bin/ffmpegにする

今回はあまりにも記事が長くなったのでここで終わりにする。(暇を見つけては書いていたので4日くらいかかってしまった) 後で暇があったら実際の使用方法とか設定とか書いてみたいと思う。


投稿日 : 2005年3月25日

この記事に関する言及

このエントリーのトラックバックURL:
http://akionweb.com/mt-tb.cgi/174

このリストは、次のエントリーを参照しています: FC3にZoneMinderをインストールしてみた:

» 今度はZoneMinder LiveCDを試してみた from AKI ON WEB
前回こちらでFedora Core 3上にZoneMinderを入れる記事を書い... [続きを読む]

トラックバック時刻: 2005年4月 4日 18:52

コメント

このページに対する感想、意見をお寄せ下さい。




保存しますか?

(書式を変更するような一部のHTMLタグを使うことができます)

おことわり

当サイトに掲載している全ての情報は、全て当サイト管理者が個人的、実験的に試した事、又は独自に調査したものです。 従ってその情報に誤りがある可能性も多分にあります。 当サイトの情報をそのまま鵜呑みにされませんようお願い申し上げます。 また当サイトの情報を元に作業されたりする場合はそれをご理解頂いた上で、あくまで自己責任の元で行ってください。

トップページ»3.1.Linux/UNIX»FC3にZoneMinderをインストールしてみた