ZoneMinder の OS を入れ替える(ほぼ新規インストール)

ubuntu

先日 ZoneMinder が動作している fedora(36 がでているがあえて 35 のまま)で dnf update をしたところ,Web 管理画面が接続できなくなりました.動画データは収集できているようです.おそらく,ZoneMinder と php の組合せが悪いのでしょう.この際 OS を動作実績の多い ubuntu 22.04 Server に変更してみます.

基本方針

次の方針で OS を変更作業を行います.

  • OS は ubuntu 22.04 Server とする
  • 標準リポジトリのみ使用する
  • 同一 VM を利用する
  • 旧 OS ディスクを削除し,新 OS ディスクを作成する(移行期間中は zm は停止)
  • ZoneMinder の設定およびデータベースはバックアップしておき,再利用できるものは極力利用する
  • OS 領域から分離した画像格納領域(詳細はこちら)はそのまま利用する.(中のデータは利用しない)

この後は,作業の進捗にあわせて記載していきます.

バックアップ

移行作業の前にバックアップを取得します.

ZoneMinder データベースのバックアップ

ZoneMinder のデータベースのバックアップを行います.ZoneMinder が動作しているサーバにログインしてスーパーユーザ権限で実行します.mysql データベースのバックアップを以下のコマンドで行います.

% sudo su -
# mysqldump -u${MYSQL_USER} -p${MYSQL_PASS} $database | bzip2 > $filename

上記の変数($ つきの文字列)はそれぞれ zm で設定したデータベースの利用者・そのパスワード・データベース名・バックアップファイル名です.このサーバはなくなりますので,私の場合バックアップ先のファイルを NFS 上に作成しました.ローカルディスクに作成した場合は,scp などで他のサーバに退避しておきます.

ZoneMinder 設定のバックアップ

つづいて zm の定義ファイルのバックアップです.私は tar コマンドを利用しました.$filename はバックアップファイル名です.

# cd /etc
# tar cf $filename zm

データベースの時と同様にバックアップ先のファイルを NFS 上に作成しました.ローカルディスクに作成した場合は,scp などで他のサーバに退避しておきます.

Proxmox VE での操作

OS のシャットダウン

PVE で操作する前に OS をシャットダウンします.

% sudo shutdown -h now

VM のリソース変更

以下の画面は OS シャットダウン直後の VM のリソースの状態です.以下の赤枠で囲ったものが OS 用のディスクです.

ディスクの削除

削除するディスクを選択すると画面上部のメニューが変わります.

「Detach」を選択します.

本当に「Detach」していいかどうか聞いてきますので「Yes」をクリックします.

以下の画面のように「Unused Disk 0」として表示されます.

つづいて「Unused Disk 0」を選択し,画面上部の「Remove」をクリックします.

本当に「Remove」していいかどうか聞いてきますので「Yes」をクリックします.

未使用ディスク「Unused Disk 0」が削除されます.

ディスクの追加

新 OS 用にディスクの追加を行います.追加する VM を選択し,「Hardware」→「Add」→「Hard Disk」を選択します.

以下の画面が表示されますので,必要な情報を入力し「Add」をクリックします.

以下のように新規ディスクが追加されます.

インストールメディアの設定

あらかじめ ubuntu サーバのインストール用 ISO をダウンロードし PVE の /var/lib/vz/template/iso に格納しておきます.つづいて VM の CD-ROM にこの ISO イメージを割り当てます.

以下の画面が表示されますので,ISO イメージがある場所を指定して「OK」をクリックします.

以下のように CD-ROM に ISO イメージが割り当てられます.

これで OS インストールの準備が整いました.

OS のインストール

VM を選択し画面上部のコンソールをクリックします.

以下の画面が表示されますので,「Start Now」をクリックします.

つづいて CD-ROM に接続された ISO イメージからのブートが成功すると以下の画面になります.

すると,ubuntu インストーラーが起動しますのでつづけて作業を実施します.

ubuntu サーバーのインストールについては割愛します.

OS インストール後の PVE の設定

起動デバイスの設定

OS インストールが終了後いったん VM を停止します.つづいて,VM を選択し「Options」→「Boot Order」→「Edit」をクリックします.

すると Boot Order の編集画面が表示されますので,以下のように ubuntu をインストールしたデバイスを一番上に移動し,ide2(CD-ROM) のチェックをはずし「OK」をクリックします.

以下のように Boot Order が scsi0 のみになれば設定完了です.

CD-ROM デバイスの設定(ISO イメージの Detach)

CD-ROM デバイスから ubuntu の ISO イメージをでタッチしておきます.「Hardware」→「CD-DVD Drive(ide2)」→「Edit」をクリックします.

「Do not use any media」を選択して「OK」をクリックします.

以下のようになれば OK です.

OS の起動

上記の設定が完了したら画面上部の「Start」をクリックして OS を起動してください.

OS の各種設定

ubuntu の各種設定を行っていきます.fedora 系のコマンドとはかなり違います.

時刻同期設定

NTP も chrony もどちらも使用可能です.fedora にあわせて chrony をインストールします.

% sudo apt -y install chrony

定義ファイルは /etc/chrony/chrony.conf です.pool と allow を設定しました.以下のコマンドを実行すると時刻同期が始まります.

% sudo systemctl restart chrony

確認は以下のコマンドを実行します.

% chronyc sources
MS Name/IP address         Stratum Poll Reach LastRx Last sample
===============================================================================
^* ntp-b2.nict.go.jp             1   6   377    46  +5875us[+8260us] +/-   48ms
^+ ntp-k1.nict.jp                1   6   377    45    -21ms[  -21ms] +/-   18ms
^+ ntp-a3.nict.go.jp             1   6   367    44  -8261us[-8261us] +/-   34ms
^+ ntp-b3.nict.go.jp             1   6   377    45    -13ms[  -13ms] +/-   29ms

timezone の設定

システムの timezone 設定を以下のコマンドで行います.

% sudo timedatectl set-timezone Asia/Tokyo

確認します.

% timedatectl
               Local time: Fri 2022-07-01 23:32:52 JST
           Universal time: Fri 2022-07-01 14:32:52 UTC
                 RTC time: Fri 2022-07-01 14:32:52
                Time zone: Asia/Tokyo (JST, +0900)
System clock synchronized: yes
              NTP service: active
          RTC in local TZ: no

パッケージの最新化

パッケージの最新化を行います.

% sudo apt update
% sudo apt list --upgradeable
% sudo apt upgrade

パッケージの最新化が完了したら OS を再起動します.

画像格納ディスクについて

画像格納ディスク上の LVM の情報は OS インストール時に自動的に認識されます.また,前 OS で作成したファイルシステム(xfs)もそのまま認識されます.

データベース(MariaDB)のインストール

標準リポジトリで ZoneMinder をインストールするとデータベースとして mysql が依存関係でインストールされます.MariaDB をインストールしたい人は先にインストールしておきましょう.

% sudo sudo apt -y install mariadb-server

/etc/mysql/mariadb.conf.d/50-server.cnf の character-set-server と collation-server がそれぞれutf8mb4,utf8mb4_general_ci になっていることを確認します.

% sudo sudo vi /etc/mysql/mariadb.conf.d/50-server.cnf

character-set-server  = utf8mb4
collation-server      = utf8mb4_general_ci

また,/etc/mysql/mariadb.conf.d/50-client.cnf の[client]セクションに default-caracter-set を設定します.

% sudo sudo vi /etc/mysql/mariadb.conf.d/50-client.cnf

[client]
default-character-set = utf8mb4

修正があった場合は MariaDB を再スタートします.

% sudo sudo systemctl restart mariadb

つづいて MariaDB の初期設定を行います.

% sudo sudo mysql_secure_installation

数個の質問がありますので適宜回答します.参考までに当サイトでは root のパスワードを入力するところ以外はすべてリターンで回答しました.

ZoneMinder のインストール

ZoneMinder をインストールします.

ZoneMinder のインストール

以下のコマンドを実行します.

% sudo apt -y install zoneminder

つづいて ZoneMinder 用のデータベースの作成およびデータベースアカウントの設定を行います.

% mysql -u root -p < /usr/share/zoneminder/db/zm_create.sql
% mysql -u root -p -e "CREATE USER 'zmuser'@'localhost' IDENTIFIED BY 'zmpass';"
% mysql -u root -p -e "GRANT ALL PRIVILEGES ON zm.* TO 'zmuser'@localhost;"
% mysqladmin -u root -p reload

データベースアカウントやパスワードは適宜設定してください.アカウントとパスワードを変更した場合は,/etc/zm/zm.conf の ZM_DB_USER および ZM_DB_PASS に値を設定します.

ZM_DB_USER=zmuser
ZM_DB_PASS=zmpass

つづいて /etc/zm/zm.conf のグループを apache のグループに変更します.

% sudo chgrp www-data /etc/zm/zm.conf

ZoneMinder の有効化

以下のコマンドを実行し ZoneMinder サービスの有効化を行います.

% sudo systemctl enable zoneminder.service

Web サーバの有効化

Apache2 のサンプル定義体を利用します.

% sudo a2enconf zoneminder

つづいて以下のコマンドを実行します.

% sudo a2enmod cgi
% sudo service apache2 reload

timezone の設定

システムの timezone と php の timezone 設定を合わせます.システムの timezone は timedatectl set-timezone コマンドを利用するか,以下のコマンドで対話型で変更できます.OS インストール後設定を行っている場合は変更不要です.

% sudo dpkg-reconfigure tzdata

php の timezone の変更は /etc/php/${php-version}/{apache2,fpm}/php.ini のいずれかに設定します.設定内容は以下のとおりです.

[Date]
date.timezone = "Asia/Tokyo"

MariaDB も timezone 設定がありますが通常システムの timezone を利用しますので ZoneMinder と同一サーバで動作するのであれば設定不要です.

データ格納ディスクの設定

今回利用している ZoneMinder の画像格納領域は,/var/cache/zoneminder/events となっていました.その上の階層にもいくつかのファイルがありますのでこれらも移行します.まず apache2 と ZoneMinder を停止します.

sudo systemctl stop zoneminder
sudo systemctl stop apache2

画像格納ディスクのマウントを行います.この作業ではマウントポイントは仮のものでいいです.その前に旧データが存在していますので不要であればファイルシステムを再作成しておくとよいでしょう. rm コマンドで旧データを削除したところかなり時間がかかりました.

sudo mount /dev/mapper/vg_zm-data01 /mnt

/var/cache/zoneminder にあるファイルを画像格納ディスクにコピーします.この作業はスーパーユーザになって作業します.

% sudo su -
# cd /var/cache/zoneminder
# tar xf - . | (cd /mnt ; tar xf -)

正規のマウントポイントを再作成します.

# cd /var/cache
# mv zoneminder zoneminder.old
# mkdir zoneminder
# chown www-data zoneminder
# chgrp www-data zoneminder

つづいて /etc/fstab に以下の行を追加します.

/dev/mapper/vg_zm-data01        /var/cache/zoneminder   xfs defaults 0 1

仮マウントポイントをアンマウントした後,mount /var/cache/zoneminder コマンドを実行します.

# umount /mnt
# mount /var/cache/zoneminder

df コマンドや mount コマンドでマウントできていることを確認した後,以下のコマンドを実行します.このとき旧データが残っているとこのコマンド実行にかなりの時間がかかります.

# cd /var/cache
# chown -R www-data zoneminder
# chgrp -R www-data zoneminder

ここで一旦 OS を再起動します.再度ログインして上記の設定が反映されていることと apahce2 や ZoneMinder が起動していることを確認します.

apache2 の https 化

サーバ証明書の用意

let’s encrypt のサーバ証明書を利用します.

ssl 用定義体の設定

/etc/apache2/sites-available/default-ssl.conf を編集します.ServerAdmin とサーバ証明書関連の設定を行います.

ServerAdmin webmaster@example.com
SSLCertificateFile      /etc/letsencrypt/live/example.com/cert.pem
SSLCertificateKeyFile   /etc/letsencrypt/live/example.com/privkey.pem
SSLCertificateChainFile /etc/letsencrypt/live/example.com/chain.pem

mod_ssl の有効化

以下のコマンドで有効化します.

% sudo a2ensite default-ssl
% sudo a2enmod ssl

リダイレクト設定

HTTP 通信を HTTPS へリダイレクトする設定を行います./etc/apache2/sites-available/000-default.conf の <VirtualHost *:80> に以下の設定を行います.

# HTTP -> HTTPS
RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]

mod_rewrite の有効化と web サーバの再起動を行います.

% sudo a2enmod rewrite
% sudo systemctl restart apache2

これで https 化は完了です.

ZoneMinder の設定

管理画面への接続

HTTPS 化ができていない場合は,ブラウザで http://192.0.2.235/zm/ へアクセスします.192.0.2.235 は当サイトの内部 ZoneMinder サーバのアドレスです.適宜変更してアクセスしてください.https でアクセスする場合は,サーバ証明書のホスト名あるいはドメイン名を指定します.

画面の下の「Decline」を「Accept」に変更し「APPLY」をクリックします.すると以下の画面になります.

カメラの追加

カメラを追加するために「Console」画面の「ADD」をクリックします.

以下の画面になりますので,「Name」にカメラの名前を入力して,画面右上の「ONVIF 探索アイコン」をクリックします.※カメラの名前の入力をここで行わなくてもかまいません.

次の画面になりますので,「Detected Cameras」のプルダウンから目的のカメラのものを選択します.次の例は,3 台のネットワークカメラを検出した中から選択している例です.選択し終えたら「Next」をクリックします.

すると選択したカメラのプロファイルを選ぶ画面になります.

「Detected Profiles」をクリックするとプルダウンメニューが現れますので,SecondStremeProffile の Unicast のものを選択します.つづいて「SAVE」をクリックします.

次の画面で「Name」にカメラ名を入力します.また,「Function」を Mocord にします.

なお,上記の設定は後で変更することも可能です.最後に「SAVE」をクリックします.以下は 3 台のカメラを設定した画面です.

ひととおりの確認が終わったら,/var/cache/zoneminder.old を削除してください.

これで,ubuntu 22.04 Server への ZoneMinder のインストールと初期設定は完了です.

コメント

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