new to ZoneMinder, learned quite a bit by building & configuring it - took a few evenings

Got it running error free but the live view doesn't want to work.
Some "environmental" details first:
OS - Slackware Linux 15
HW - DELL WYSE 5070 - Celeron J4105 4-Cores, 8GB RAM
ZoneMinder version - git clone master from 27.05.2025
Use case: I own two Tapo c520ws cameras that I isolated from the Internet (allowed only NTP in the firewall for time sync), would like to use their intelligence for motion detection/alarm/motion tracking &co (have no alternative for the Tapo App), would like to use ZoneMinder as a simple storage server for events (motion detection events sent/triggered trough ONVIF) and finally control (PTZ) and view them live/recordings remotely on my phone (VPN home) with zmNinja.
Started my journey with the only ZoneMinder build (2018 - ZoneMinder (1.32.2)) officially supported (and apparently abandoned - not updated) by Slackware:
https://slackbuilds.org/repository/15.0 ... oneMinder/
Configured mysql/apache and started ZM. First tried to configure the cameras on ONVIF (was crucial for me to see if it works) and learned that the GUI doesn't allow me to manually configure the ONVIF parameters and some perl script that probes ONVIF uses an impossible perl module (SOAP::WSDL) I failed to install. Currently running perl v5.34.3 and with 'perl -MCPAN -e 'install SOAP::WSDL'' I got about 30 minutes of downloads/compilations and pages of warnings that the stuff I'm downloading is unstable & co. I had to remove/reinstall perl clean after all that mess, couldn't trust it anymore....
Code: Select all
zmonvif-probe.pl probe
Can't locate SOAP/WSDL/Transport/HTTP.pm in @INC (you may need to install the SOAP::WSDL::Transport::HTTP module) (@INC contains: /usr/local/lib64/perl5 /usr/local/share/perl5 /usr/lib64/perl5/vendor_perl /usr/share/perl5/vendor_perl /usr/lib64/perl5 /usr/share/perl5) at /usr/share/perl5/vendor_perl/ONVIF/Client.pm line 33.
Compilation failed in require at /usr/bin/zmonvif-probe.pl line 30.
https://github.com/ZoneMinder/zoneminder/issues/3781
Went for the master snapshot from 27-05-2025 with:
Code: Select all
git clone https://github.com/ZoneMinder/zoneminder.git
&
git submodule update --init --force --remote
Got the cameras manually configured both on RTSP and ONVIF, everything is working fine except the live view (and ONVIF, well the PTZ control works, but motion events/alarms are not received - that's already discussed by @iconnor in another thread and I'll join the conversation there).
Here is a screenshot from the ZM GUI with the broken LiveView (don't mind the broken GUI, looks like crap, but I don't download fonts/icons from the internet

https://imgur.com/a/RXQFXtw
On the host I can view the RTSP stream with VLC and I also have a VirtualBox VM (Host-Only Networking) with Home Assistant running from where I can watch the RTSP streams and also control the cameras through ONVIF (funny, I also receive the ONVIF events (detection alarms) in Home Assistant).
I spent a lot of time trying to understand why the live view doesn't want to work, been though tens of pages of discussions and suggestions on both this forum and github where issues with the zms streamer were discussed. Checked and double-checked my configuration, time zone is consistent everywhere (mysql, phpi.ini, ZM), disabled OPT_USE_AUTH & AUTH_RELAY, checked the cgi-bin permissions/execution, checked the zms path (ZM_PATH_ZMS in both compilation (recompiled ZM a few times) and /etc/conf.d/01-system-paths.conf)... and still failing to get it working.
The debugging instructions I found a little confusing, but tried many combinations - set LOG_LEVEL_FILE on debug, set _zms in LOG_DEBUG_TARGET, set LOG_LEVEL_WEBLOG o debug and LOG_DEBUG_LEVEL on 9 and was not able to catch any errors - the zms.log was empty, apache-error.log was clean and in the huge debug.log I couldn't' find anything of interest.
Monitored the /var/run/zm/ folder to see if a zms-xxxx.sock file gets generated when I trigger a live view from the ZM GUI and got positive, was generated for a second and disappeared (presumably zms crashed/closed without telling why).
Even executed manually zms from a console to make sure it doesn't crash:
Code: Select all
- executed (apache is the httpd default user)
/var/log/zm# su apache -c "/srv/httpd/cgi-bin/zms"
- and got in ZM log (GUI) - copy/paste:
4/28/25, 9:41:42 PM GMT+3 zmc_m2 5254 INF UHU-2: 17800 - Capturing at 26.73 fps, capturing bandwidth 33467bytes/sec Analysing at 0.00 fps zm_monitor.cpp 1845
4/28/25, 9:41:34 PM GMT+3 zmc_m1 5415 INF UHU-1: 15900 - Capturing at 24.98 fps, capturing bandwidth 30547bytes/sec Analysing at 0.00 fps zm_monitor.cpp 1845
[b]4/28/25, 9:41:05 PM GMT+3 zms 5517 FAT No query string. zms.cpp 114[/b]
4/28/25, 9:40:46 PM GMT+3 zmc_m1 5415 INF UHU-1: 14700 - Capturing at 24.23 fps, capturing bandwidth 26165bytes/sec Analysing at 0.00 fps zm_monitor.cpp 1845
4/28/25, 9:40:42 PM GMT+3 zmc_m1 5415 INF UHU-1: 14600 - Capturing at 25.04 fps, capturing bandwidth 12702bytes/sec Analysing at 0.00 fps zm_monitor.cpp 1845
- running it on console:
/srv/httpd/cgi-bin/zms
04/28/25 22:16:21.131483 zms[6252].FAT-zms.cpp/114 [No query string.]
Worth mentioning that initially when I configured manually the second camera (General/Source/ONVIF), by some interesting glitch when I pressed save and close I got a 1 second recording (false motion detection event). This recording looked OK - image was perfect.
Finally I goofed a little with the cgi execution permission settings in httpd.conf and still couldn't make the live view work.
Running apache 2.4.63 and lectured the "rather weird logic" from the official documentation:
https://httpd.apache.org/docs/trunk/howto/cgi.html
Created a test file as suggested in the apache doc, made it executable and planted it next to the zms binary in /srv/httpd/cgi-bin/
When trying to access it with a browser on http://server-ip/cgi-bin/test i got the content (perl code) displayed instead of "Hello World"
That's with the in httpd.conf already included zm.conf that has the section:
Code: Select all
ScriptAlias /cgi-bin "/srv/httpd/cgi-bin"
<Directory "/srv/httpd/cgi-bin">
Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
AllowOverride All
<IfModule mod_authz_core.c>
# Apache 2.4
Require all granted
</IfModule>
<IfModule !mod_authz_core.c>
# Apache 2.2
Order deny,allow
Allow from all
</IfModule>
</Directory>
Code: Select all
ScriptAlias /cgi-bin/ "/srv/httpd/cgi-bin/"
<Directory "/srv/httpd/cgi-bin">
AllowOverride None
Options None
Require all granted
</Directory>
Code: Select all
<IfModule !mpm_prefork_module>
LoadModule cgid_module lib64/httpd/modules/mod_cgid.so
</IfModule>
Besides, before uncommentig LoadModule cgid_module lib64/httpd/modules/mod_cgid.so I tried adding in my httpd.conf the following options (pretty much the same ones as in zm.conf) and I wasn't able to get a hello World from the test script, that's why I called it apache devs "weird logic".
Code: Select all
<Directory "/srv/httpd/cgi-bin">
AllowOverride None
# Options None
Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
Require all granted
</Directory>
I'd be happy to know if the latest git master I'm using now is stable/error free, if not then please advise what source code release to download and how to obtain the submodules for it.
That's pretty much it, I'm out of ideas and I'm really confused about the debugging options in ZM (documentation looks consistent but the logic I find weird/confusing/redundant).
Any help appreciated!