Easy Way: Ubuntu 14, Install ZoneMinder API from Package - 3esmit/zmNinja GitHub Wiki
These instructions are for a brand new ubuntu 14.x system which does not have ZM installed.
Step 1: Install ZoneMinder
sudo add-apt-repository ppa:iconnor/zoneminder-master
sudo apt-get update
sudo apt-get install zoneminder
(just press OK for the prompts you get)
Step 2: Set up DB
sudo mysql -uroot -p < /usr/share/zoneminder/db/zm_create.sql
mysql -uroot -p -e "grant select,insert,update,delete,create,alter,index,lock tables on zm.* to 'zmuser'@localhost identified by 'zmpass';"
Step 3: Set up Apache
sudo a2enconf zoneminder
sudo a2enmod rewrite
sudo a2enmod cgi
Step 4::Some tweaks that will be needed:
Edit /etc/init.d/zoneminder:
add a sleep 10
right after line 25 that reads echo -n "Starting $prog:"
(The reason we need this sleep is to make sure ZM starts after mysqld starts)
As of Oct 3 2015, zm.conf is not readable by ZM. This is likely a bug and will go away in the next package
sudo chown www-data:www-data /etc/zm/zm.conf
Step 5: If you have changed your DB login/password
If you changed the DB password after installing ZM, the APIs will not be able to connect to the DB.
If you have, go to zoneminder/www/api/app/Config & Edit database.php
There is a class there called DATABASE_CONFIG
- change the $default
array to reflect your new details. Example:
public $default = array(
'datasource' => 'Database/Mysql',
'persistent' => false,
'host' => 'localhost',
'login' => 'mynewDBusername',
'password' => 'mynewDBpassword'
'database' => 'zm',
'prefix' => '',
//'encoding' => 'utf8',`
);
We also need to install php5-gd (as of 1.28.107, this is not installed)
sudo apt-get install php5-gd
Step 6: Edit Timezone in PHP
vi /etc/php5/apache2/php.ini Look for [Date] and inside it you will see a date.timezone that is commented. remove the comment and specific your timezone. Please make sure the timezone is valid (see this)
In my case:
date.timezone = America/New_York
restart:
sudo service apache2 restart
/etc/init.d/zoneminder restart
####Making sure ZM and APIs work:
- open up a browser and go to
http://localhost/zm
- should bring up ZM - (OPTIONAL - just for peace of mind) open up a tab and go to
http://localhost/zm/api
- should bring up a screen showing CakePHP version with some green color boxes. Green is good. If you see red, or you don't see green, there may be a problem (should not happen). Ignore any warnings in yellow saying "DebugKit" not installed. You don't need it - open up a tab in the same browser and go to
http://localhost/zm/api/host/getVersion.json
If it responds with something like:
{
"version": "1.28.107",
"apiversion": "1.28.107.1"
}
Then your APIs are working
###Make sure you can view Monitor View
- Open up ZM, configure your monitors and verify you can view Monitor feeds.
- If not, open up ZM console in your browser, go to
Options->Path
and make surePATH_ZMS
is set to/zm/cgi-bin/nph-zms
and restart ZM (you should not need to do this for packages, as this should automatically work)
###Make sure ZM and APIs work with security:
- Enable OPT_AUTH in ZM
- Log out of ZM in browser
- Open a NEW tab in the SAME BROWSER (important) and go to
http://localhost/zm/api/host/getVersion.json
- should give you "Unauthorized" along with a lot more of text - Go to another tab in the SAME BROWSER (important) and log into ZM
- Repeat step 3 and it should give you the ZM and API version
Congrats you now have ZM working with APIs and with security. The APIs tie into ZM security -- if you are not logged into ZM, the APIs won't work (hence the need to try it from the same browser instance)