以前、BusterにZoneMinderをインストールした時と打って変わってbullseyeからDebianリポジトリに入ったことでインストールと設定が超簡単になった!...はずが、DB設定が抜け落ちているというオチで、ひと手間増えた話。
その内、Debianの中の人が直して(追加設定して)くれるとは思いますが。
Chromecast対応Miracast非対応AndroidスマホでAnyCastできたのですが、え?もしや、できないの...かも?と思い、届く前に代替策含め、いろいろ試す中でHDMIケーブル接続のRaspberry Pi 2BとTVで動画視聴したりしてサーバのラズパイ2BとサブパソコンRaspberry Pi 3 B+のラズパイを入れ替えてみたり、Raspberry Pi 400を買ってサブパソコン(いや?メイン)の座をRaspberry Pi 400に譲ってみたりしていました。
そんな中、2Bの予備でもよかったのですが、ラズパイ3B+が余り、超高速・爆速で使わずにいられないRaspberry Pi Imagerなどで何度もイメージを焼き直したりした関係でZoneminderもなくなり、Busterからbullseyeにアップグレードしてだいぶ経って改めてZoneminderをインストールすることになった次第。
そこで以前も参照したEasy Way: Debianを見るとEasy Way: Debian bullseyeがあることに気づいてみるとリポジトリに追加されたらしく、インストールと設定の手順が減ってがシンプルになってるじゃないですか!
大喜びしてやってみると...、アクセスできないじゃん...どこがコングラチュレーション(祝・おめでとう!)だよ...。
ということで調べたら、原因が判明し、無事、使用できるまでに漕ぎ着たのでページを改め、アップ。
少なくともラズパイImagerで事前設定もしつつ、64bitカーネルを入れたら、sudoは入っており、ログインユーザーでも使える状態だったので書いていませんが、そうでない場合は、sudoが使えるように要設定。
たったこれだけ!(後述の原因を正せば、ほんとにこれだけで済むはずなんですが。)
と思ったら、同一ネットワーク上のクライアントとなるブラウザからx.local/zmとしてもIPアドレス/zmとしてもアクセスできない...。
systemctl status zoneminderしてみたら、Activeになってない...。
systemctl start zoneminderしてみたら、[errstr:Access denied for user 'zmuser'@'localhost']エラーで開始できない...。
結論から言うと冒頭述べた通り、MariaDB(MySQL)周りの設定が抜け落ちていたことが原因でした。
bullseyeについては、修正が入るまでは、DebianでもRaspbianでも、ここでの対処が必要となります。
で、これって/etc/zm/zm.confのユーザー名やパスワードでデフォルトのzmデータベースにアクセスできてないってことだよね...。
というわけでデータベースの存在を確認してみると、そもそもzmというDBがない...!(あるのはmysqlというDBだけ。)
パスワード設定が漏れているのかとrootでzmuserにzmpassを設定しようとしたら、できない...!
そりゃそうだ、そもそもzmuserなんていない...!
そりゃ、systemdサービスファイルも落ちるわけだ...。
っていうか、追加しようにもzm DBに含まれるテーブル類も構造もさっぱりわからん...どないせーちゅーねん!
と思いつつ、気を取り直して検索、MySQL by zoneminderに行き着き、万事解決。
zoneminderをインストールした時点で存在するはずのzmデータベース作成用SQLファイル/usr/share/zoneminder/db/zm_create.sqlを実行、zmuser/zmpass(/etc/zm/zm.confでデフォルトのユーザー/パスワード)に対して全ての権限を与えてあげればOK。
SQLファイルの読ませ方は、sh/bashと同様の方法ほか、いくつかあるようでしたが、自身は、MariaDB/MySQLにログインしてから、sourceコマンドを使いました。
そこでSQLファイルを読みこませてみるとプロンプトが[MariaDB]に。
最初から、mysql -u rootじゃなくてmariadb -u rootにすれば、最初からプロンプトは[MariaDB]でしたね。
MySQLでもMariaDBでもrootの初期パスワードはカラとのことなので-pは添えずに、mysql -u root/mariadb -u root([2022/02/22] 前回これでいけた気がしたのですが、気のせいだったのか2度めは、mysql -u root -p/mariadb -u root -pでPasswordは未入力+Enterでログインし、先のコマンドを実行します。
rootパスワードがカラというのはなんなのでMySQL/MariaDB内で[set password for root@localhost='new_password';]か、または、[ALTER USER 'root'@'localhost' IDENTIFIED BY 'new_password';]を実行するか、shellから[sudo mariadb-secure-installation]を実行して設定しておくのがよいでしょう。
そこでsystemdサービスファイルを開始してみると今度は、エラーなく、プロンプトが返ってくるはずです。
うまくいったのでシステム起動時にzoneminderも起動するようにしておきます。
こうなったらしめたもの、zoneminderをインストールしたデバイス(今回はラズパイ)上のブラウザでlocalhost/zmや127.0.0.1/zm、同一ネットワーク内のデバイスからx.local/zm、対象デバイスのIPアドレス/zmとします。
初回は、Privacy画面が表示され、「... イメージデータは収集しないし、売ったりとか悪用はしないけど製品向上の為にデータ送ってもよい?」的なことを含め、内容確認の上、[DECLINE](辞退)か[ACCEPT](許諾)を選択し、[APPLY](適用)をクリック。
すると、どちらを選んでも利用可能となり、初期画面に遷移します。
右上を見るとバージョンは、1.36.xじゃなく、v1.34.23になってますね。
もちろん、愛用ブラウザは、Firefox。
ただ、ZoneMinderにカメラを登録・映像表示するにあたり、更に追加設定が必要です。
中の人も慌てて試行錯誤しているのか、現時点では、mariadb -u root/mariadb -u root -p/mysql -u root/mysql -u root -pにおいてsudoをつけないと(もしくはsuしてからでないと)ログインできない状況になっています。
sudoをつけずに実行すると前者は、コマンド実行直後に、後者は、Passwordプロンプトが出て(初期パスワードはカラとのことなので)カラでEnterした時に[ERROR 1698 (28000): Access denied for user 'root'@'localhost']のようなエラーが。
これによるかと思いますが、systemctl reload apache2やsystemctl restart apache2をした後であっても、systemctl start zoneminderで起動に成功してもブラウザでアクセスエラー、sudo a2enconf zoneminder、sudo a2enmod rewrite後にapache2、zoneminderを再起動するとブラウザからアクセスしても画面が真っ白になります。
使えなかったUSBメモリを別で使っていたSSDに交換、改めてZoneMinderをインストールしていて遭遇。
真っ白なのですが、/var/www/htmlには、このindex.htmlファイルがあり、ローカルに落として見てみると、apacheのインストールに成功したか、何らかのメンテナンス中に表示されることがあると書いてあります。
実際のところ、zoneminderのインストールに伴いapacheもインストールされているので単にその成功により表示されるもので、その後のindex.htmlの差し替えがなされていないのか、実は、そこにこのファイルがあったとしてもphpで差し替えられるものなのか、メンテナンス中なのかについては、わかりませんが...。
改めてアンインストールし、まっさらにしてやり直してみると...。
やはり、DBアクセス時にsudoが必要で...
systemctl start zoneminderに成功直後、他端末のブラウザでx.local/zmを見るとエラーもなく、ただただ、真っ白...。
Busterの時には必要だった、これらの手順を踏んでみても...ブラウザでアクセスすると一面、真っ白...。
念の為、ブラウザを全て終了して改めて起動しても同じ...。
尚、ブラウザを閉じた時にキャッシュ全消去に設定してあります。
ちなみにmysql_secure_installationしてみると以前は、設定したパスワードでログインできたmysql|MariaDBも、設定したパスワードでも、カラでもログインできなくなっています...。
となると、今、これやってしまうと、mariadb-server再インストールでもしないとログインできない...ですよね?
ぬー、相性なのか、GUIはグダグダではあったけどbullseyeにzoneminderをインストール・運用できていたUSBメモリからSSDにクローンするか...、直るまで待つか...。
とりあえず、まっさらにしとくべく...、apt purge、purge後に表示されるsudo mysqladmin --defaults-file=/etc/mysql/debian.cnf -f drop zmを実行、/var/cache/zoneminderも削除、apt autoremove...。
少なくとも今日の朝時点、bullseyeにZoneMinderをインストール、管理画面を表示、Webカメラを登録、機能させることができるようになりました。
相変わらず、データベースzmがないので前述のようにmariadbにログインして作成。
その際、先立ってmysql_secure_installationでrootパスワードを設定してもmariadb -u root -pにsudoは必要。
しかもmysql_secure_installationでrootパスワードを設定してあってもsudo mariadb -u root -pログイン時には、カラのパスワードでもいけてしまう...。
前回はそれでもダメだったものの、今日は、Busterで必要だった、これらの設定、再起動することで無事、zoneminderが機能するようになりました。
ちなみに管理画面の項目(zoneminderの機能)が増えている気がします。
が、どうもZoneMinderを起動しておくと短時間でラズパイが落ちるので、まだ、使えない...と思いきや、これは、ZoneMinderに起因するものではなさそう...。
というわけで、まだ、やっていなければ、次回以降、ラズパイ起動時にzoneminderも自動起動するようにsudo systemctl enable zoneminder。
なお、今回は、当初書いた後述のGPU割り当ては増やした方が余裕が生まれるので良いとは思うものの、64のまま、/dev/video0へのchmodもしなくともいけました。
と思いましたが、やはり、ZoneMinderを起動しておくと短時間でラズパイが落ちる模様なのでZoneMinderを停止。
そろそろ解消してるかな...と、久々にZoneMinderを起動...。
当初のUSBカメラに続き、IP|ネットワークカメラとして技適取得済みOV2640カメラ付きESP32-WROVER-DEVをとりあえず2つ登録、[General]で[Ffmpeg]、[Source]で[Source Path]に[IP_ADDRESS_OR_mDNS:81/stream]してみたら、いけました。
安定してる!ラズパイも落ちない!
というわけで、自動起動するようにsudo systemctl enable zoneminder。
当初、zonminderの起動に失敗するなーと思ったら、apache2がコケてて[make_sock: could not bind to address 0.0.0.0:80]なんてエラーが、何かと思って[sudo netstat -lnp | grep '0.0.0.0:80']したら、なぜかnginxが起動してた...からnginxをsystemctl stop/disable...したら、apache2もzoneminderも無事起動しましたとさ。
めでたし、めでたし。
と思ったら、1時間くらい?したら、ラズパイ落ちた...。
もしかして3B+には過酷過ぎるのか...?
今、ラズパイ超品薄だし、気が向いたら400で試してみようかな...。
これからやるのでなんですが、カメラの登録や映像の表示については、Raspberry PiでZoneMinderインストールとカメラ映像表示と同様なはずです。
というわけでUSBカメラを登録してみようと思ったら、これまた、ちょっとハマりました。
結果、映像表示できるまでにやった必要だったかな?と思うことベスト3を発表!?
2=>1の順なら再起動すれば、3は不要ですかね。
できたからいいかなとも思いつつ、これって最初の2つは何れも対処が重複してると思うし、気が向いたら、実際、どれとどれが必要なのか精査してみようかと。