2016-07-03 18:21:13 +08:00
Ubuntu
======
2014-07-13 20:25:30 +08:00
2015-12-19 04:08:56 +08:00
.. contents ::
2015-08-15 08:00:11 +08:00
2019-08-28 22:53:24 +08:00
Easy Way: Ubuntu 18.04 (Bionic)
-------------------------------
2019-02-13 06:56:40 +08:00
These instructions are for a brand new ubuntu 18.04 system which does not have ZM
installed.
It is recommended that you use an Ubuntu Server install and select the LAMP option
during install to install Apache, MySQL and PHP. If you failed to do this you can
achieve the same result by running:
::
2019-08-28 22:53:24 +08:00
sudo apt-get install tasksel
2019-02-13 06:56:40 +08:00
sudo tasksel install lamp-server
Installing LAMP is not ZoneMinder specific so you will find plenty of resources to
guide you with a quick search.
**Step 1:** Either run commands in this install using sudo or use the below to become root
::
sudo -i
**Step 2:** Update Repos
.. topic :: Latest Release
ZoneMinder is now part of the current standard Ubuntu repository, but
sometimes the official repository can lag behind. To find out check our
`releases page <https://github.com/ZoneMinder/zoneminder/releases> `_ for
the latest release.
Alternatively, the ZoneMinder project team maintains a `PPA <https://askubuntu.com/questions/4983/what-are-ppas-and-how-do-i-use-them> `_ , which is updated immediately
following a new release of ZoneMinder. To use this repository instead of the
official Ubuntu repository, enter the following from the command line:
::
2021-08-04 01:15:41 +08:00
add-apt-repository ppa:iconnor/zoneminder-1.36
2019-02-13 06:56:40 +08:00
Update repo and upgrade.
::
apt-get update
apt-get upgrade
apt-get dist-upgrade
**Step 3:** Configure MySQL
.. sidebar :: Note
2021-02-09 01:07:02 +08:00
The MySQL default configuration file (/etc/mysql/mysql.cnf) is read through
2019-02-13 06:56:40 +08:00
several symbolic links beginning with /etc/mysql/my.cnf as follows:
| /etc/mysql/my.cnf -> /etc/alternatives/my.cnf
| /etc/alternatives/my.cnf -> /etc/mysql/mysql.cnf
| /etc/mysql/mysql.cnf is a basic file
Certain new defaults in MySQL 5.7 cause some issues with ZoneMinder < 1.32.0,
the workaround is to modify the sql_mode setting of MySQL. Please note that these
2021-02-09 01:07:02 +08:00
changes are NOT required for ZoneMinder 1.32+ and some people have reported them
2019-02-13 06:56:40 +08:00
causing problems in 1.32.0.
To better manage the MySQL server it is recommended to copy the sample config file and
replace the default my.cnf symbolic link.
::
rm /etc/mysql/my.cnf (this removes the current symbolic link)
cp /etc/mysql/mysql.conf.d/mysqld.cnf /etc/mysql/my.cnf
To change MySQL settings:
::
nano /etc/mysql/my.cnf
In the [mysqld] section add the following
::
sql_mode = NO_ENGINE_SUBSTITUTION
CTRL+o then [Enter] to save
CTRL+x to exit
Restart MySQL
::
systemctl restart mysql
**Step 4:** Install ZoneMinder
::
apt-get install zoneminder
**Step 5:** Configure the ZoneMinder Database
This step should not be required on ZoneMinder 1.32.0.
::
mysql -uroot -p < /usr/share/zoneminder/db/zm_create.sql
2021-02-09 01:07:02 +08:00
mysql -uroot -p -e "grant lock tables,alter,drop,select,insert,update,delete,create,index,alter routine,create routine, trigger,execute,references on zm.* to 'zmuser'@localhost identified by 'zmpass';"
2019-02-13 06:56:40 +08:00
**Step 6:** Set permissions
Set /etc/zm/zm.conf to root:www-data 740 and www-data access to content
::
chmod 740 /etc/zm/zm.conf
chown root:www-data /etc/zm/zm.conf
chown -R www-data:www-data /usr/share/zoneminder/
**Step 7:** Configure Apache correctly:
::
a2enmod cgi
a2enmod rewrite
a2enconf zoneminder
You may also want to enable to following modules to improve caching performance
::
a2enmod expires
a2enmod headers
**Step 8:** Enable and start Zoneminder
::
systemctl enable zoneminder
systemctl start zoneminder
CTRL+o then [Enter] to save
CTRL+x to exit
**Step 10:** Reload Apache service
::
systemctl reload apache2
**Step 11:** Making sure ZoneMinder works
1. Open up a browser and go to `` http://hostname_or_ip/zm `` - should bring up ZoneMinder Console
2. (Optional API Check)Open up a tab in the same browser and go to `` http://hostname_or_ip/zm/api/host/getVersion.json ``
If it is working correctly you should get version information similar to the example below:
::
{
2021-02-09 01:07:02 +08:00
"version": "1.34.0",
"apiversion": "1.34.0.1"
2019-02-13 06:56:40 +08:00
}
**Congratulations** Your installation is complete
PPA install may need some tweaking of ZMS_PATH in ZoneMinder options. `Socket_sendto or no live streaming`_
2019-08-28 22:53:24 +08:00
Easy Way: Ubuntu 16.04 (Xenial)
-------------------------------
2016-07-03 18:21:13 +08:00
These instructions are for a brand new ubuntu 16.04 system which does not have ZM
installed.
2014-07-16 21:36:10 +08:00
2015-08-15 08:00:11 +08:00
2016-07-03 18:21:13 +08:00
It is recommended that you use an Ubuntu Server install and select the LAMP option
during install to install Apache, MySQL and PHP. If you failed to do this you can
achieve the same result by running:
2015-12-19 04:08:56 +08:00
2016-07-03 18:21:13 +08:00
::
2016-07-05 05:52:37 +08:00
2017-09-29 06:03:39 +08:00
sudo tasksel install lamp-server
2015-12-19 04:08:56 +08:00
2016-07-03 18:21:13 +08:00
During installation it will ask you to set up a master/root password for the MySQL.
2017-09-29 06:03:39 +08:00
Installing LAMP is not ZoneMinder specific so you will find plenty of resources to
guide you with a quick search.
2015-08-15 08:00:11 +08:00
2016-07-05 05:15:01 +08:00
**Step 1:** Either run commands in this install using sudo or use the below to become root
2015-08-15 08:00:11 +08:00
::
2016-07-03 18:21:13 +08:00
sudo -i
2015-08-15 08:00:11 +08:00
2016-07-05 05:15:01 +08:00
**Step 2:** Update Repos
2015-08-15 08:00:11 +08:00
2016-07-03 18:21:13 +08:00
.. topic :: Latest Release
2015-08-15 08:00:11 +08:00
2018-01-21 07:34:37 +08:00
ZoneMinder is now part of the current standard Ubuntu repository, but
2018-01-21 07:46:53 +08:00
sometimes the official repository can lag behind. To find out check our
2018-01-21 07:46:15 +08:00
`releases page <https://github.com/ZoneMinder/zoneminder/releases> `_ for
the latest release.
2018-01-21 07:34:37 +08:00
2018-10-03 03:19:19 +08:00
Alternatively, the ZoneMinder project team maintains a `PPA <https://askubuntu.com/questions/4983/what-are-ppas-and-how-do-i-use-them> `_ , which is updated immediately
2018-01-21 07:34:37 +08:00
following a new release of ZoneMinder. To use this repository instead of the
official Ubuntu repository, enter the following from the command line:
2015-08-15 08:00:11 +08:00
2016-07-03 18:21:13 +08:00
::
2016-07-05 05:52:37 +08:00
2016-07-03 18:21:13 +08:00
add-apt-repository ppa:iconnor/zoneminder
2018-10-03 03:19:19 +08:00
add-apt-repository ppa:iconnor/zoneminder-1.32
2016-07-03 18:21:13 +08:00
Update repo and upgrade.
2014-07-16 21:36:10 +08:00
2015-08-15 08:00:11 +08:00
::
2016-07-05 05:52:37 +08:00
2016-07-03 18:21:13 +08:00
apt-get update
apt-get upgrade
apt-get dist-upgrade
2015-08-15 08:00:11 +08:00
2018-10-03 03:19:19 +08:00
2016-07-05 05:15:01 +08:00
**Step 3:** Configure MySQL
2014-07-16 21:36:10 +08:00
2016-07-03 18:21:13 +08:00
.. sidebar :: Note
2014-07-16 21:36:10 +08:00
2016-07-03 18:21:13 +08:00
The MySQL default configuration file (/etc/mysql/mysql.cnf)is read through
several symbolic links beginning with /etc/mysql/my.cnf as follows:
2015-08-15 08:00:11 +08:00
2016-07-05 05:52:37 +08:00
| /etc/mysql/my.cnf -> /etc/alternatives/my.cnf
2016-07-03 18:21:13 +08:00
| /etc/alternatives/my.cnf -> /etc/mysql/mysql.cnf
| /etc/mysql/mysql.cnf is a basic file
2015-08-24 01:20:04 +08:00
2018-10-03 03:19:19 +08:00
Certain new defaults in MySQL 5.7 cause some issues with ZoneMinder < 1.32.0,
the workaround is to modify the sql_mode setting of MySQL. Please note that these
changes are NOT required for ZoneMinder 1.32.0 and some people have reported them
causing problems in 1.32.0.
2016-07-03 18:21:13 +08:00
To better manage the MySQL server it is recommended to copy the sample config file and
replace the default my.cnf symbolic link.
2015-08-24 01:20:04 +08:00
::
2016-07-05 05:52:37 +08:00
2016-07-03 18:21:13 +08:00
rm /etc/mysql/my.cnf (this removes the current symbolic link)
cp /etc/mysql/mysql.conf.d/mysqld.cnf /etc/mysql/my.cnf
2015-08-24 01:20:04 +08:00
2016-07-03 18:21:13 +08:00
To change MySQL settings:
2015-12-19 04:08:56 +08:00
2016-07-03 18:21:13 +08:00
::
2016-07-05 05:52:37 +08:00
2016-07-03 18:21:13 +08:00
nano /etc/mysql/my.cnf
2015-12-19 04:08:56 +08:00
2016-07-03 18:21:13 +08:00
In the [mysqld] section add the following
2015-12-19 04:08:56 +08:00
::
2016-07-05 05:52:37 +08:00
2016-07-03 18:21:13 +08:00
sql_mode = NO_ENGINE_SUBSTITUTION
CTRL+o then [Enter] to save
2015-12-19 04:08:56 +08:00
2016-07-03 18:21:13 +08:00
CTRL+x to exit
2015-12-19 04:08:56 +08:00
2016-07-03 18:21:13 +08:00
Restart MySQL
2015-12-19 04:08:56 +08:00
::
2016-07-05 05:52:37 +08:00
2016-07-03 18:21:13 +08:00
systemctl restart mysql
2015-12-19 04:08:56 +08:00
2016-07-05 05:15:01 +08:00
**Step 4:** Install ZoneMinder
2015-12-19 04:08:56 +08:00
::
2016-07-03 18:21:13 +08:00
apt-get install zoneminder
2015-12-19 04:08:56 +08:00
2016-07-05 05:15:01 +08:00
**Step 5:** Configure the ZoneMinder Database
2015-12-19 04:08:56 +08:00
2018-10-03 03:19:19 +08:00
This step should not be required on ZoneMinder 1.32.0.
2015-12-19 04:08:56 +08:00
::
2016-07-03 18:21:13 +08:00
mysql -uroot -p < /usr/share/zoneminder/db/zm_create.sql
2018-10-03 03:19:19 +08:00
mysql -uroot -p -e "grant lock tables,alter,drop,select,insert,update,delete,create,index,alter routine,create routine, trigger,execute on zm.* to 'zmuser'@localhost identified by 'zmpass';"
2015-12-19 04:08:56 +08:00
2016-07-05 05:52:37 +08:00
**Step 6:** Set permissions
2016-07-03 18:21:13 +08:00
Set /etc/zm/zm.conf to root:www-data 740 and www-data access to content
2015-12-19 04:08:56 +08:00
::
2016-07-03 18:21:13 +08:00
chmod 740 /etc/zm/zm.conf
chown root:www-data /etc/zm/zm.conf
chown -R www-data:www-data /usr/share/zoneminder/
2015-12-19 04:08:56 +08:00
2016-07-05 05:15:01 +08:00
**Step 7:** Configure Apache correctly:
2015-12-19 04:08:56 +08:00
::
2018-10-03 03:19:19 +08:00
a2enmod cgi
2016-07-03 18:21:13 +08:00
a2enmod rewrite
2018-10-31 06:35:50 +08:00
a2enconf zoneminder
2015-08-24 01:20:04 +08:00
2018-10-03 03:19:19 +08:00
You may also want to enable to following modules to improve caching performance
::
a2enmod expires
a2enmod headers
2016-07-05 05:15:01 +08:00
**Step 8:** Enable and start Zoneminder
2015-08-24 01:20:04 +08:00
2016-07-03 18:21:13 +08:00
::
2015-08-24 01:20:04 +08:00
2016-07-03 18:21:13 +08:00
systemctl enable zoneminder
2016-07-05 05:15:01 +08:00
systemctl start zoneminder
2015-08-24 01:20:04 +08:00
2016-07-05 05:15:01 +08:00
**Step 10:** Reload Apache service
2015-08-15 08:00:11 +08:00
2016-07-03 18:21:13 +08:00
::
2015-08-15 08:28:03 +08:00
2016-07-05 05:15:01 +08:00
systemctl reload apache2
2015-08-15 08:00:11 +08:00
2016-07-05 05:15:01 +08:00
**Step 11:** Making sure ZoneMinder works
2015-08-15 08:00:11 +08:00
2016-07-03 18:21:13 +08:00
1. Open up a browser and go to `` http://hostname_or_ip/zm `` - should bring up ZoneMinder Console
2015-08-15 08:00:11 +08:00
2016-07-03 18:21:13 +08:00
2. (Optional API Check)Open up a tab in the same browser and go to `` http://hostname_or_ip/zm/api/host/getVersion.json ``
2015-08-17 03:13:28 +08:00
2016-07-03 18:21:13 +08:00
If it is working correctly you should get version information similar to the example below:
2015-12-19 04:08:56 +08:00
2016-07-03 18:21:13 +08:00
::
2015-12-19 04:08:56 +08:00
2016-07-03 18:21:13 +08:00
{
2021-02-09 01:07:02 +08:00
"version": "1.34.0",
"apiversion": "1.34.0.1"
2016-07-03 18:21:13 +08:00
}
2015-12-19 04:08:56 +08:00
2016-07-03 18:21:13 +08:00
**Congratulations** Your installation is complete
2015-12-19 04:08:56 +08:00
2016-07-03 18:21:13 +08:00
PPA install may need some tweaking of ZMS_PATH in ZoneMinder options. `Socket_sendto or no live streaming`_
2015-12-19 04:08:56 +08:00
Harder Way: Build Package From Source
2016-07-03 18:21:13 +08:00
-------------------------------------
2015-12-19 04:08:56 +08:00
(These instructions assume installation from source on a ubuntu 15.x+ system)
2016-01-22 22:39:19 +08:00
**Step 1:** Grab the package installer script
2015-12-19 04:08:56 +08:00
::
2016-01-22 22:39:19 +08:00
wget https://raw.githubusercontent.com/ZoneMinder/ZoneMinder/master/utils/do_debian_package.sh
chmod a+x do_debian_package.sh
2015-12-19 04:08:56 +08:00
2016-02-22 23:18:46 +08:00
**Step 2:** Update the system
2015-12-19 04:08:56 +08:00
::
2016-01-22 22:39:19 +08:00
sudo apt-get update
2015-12-19 04:08:56 +08:00
2016-01-22 22:39:19 +08:00
**Step 3** Create the package
2015-12-19 04:08:56 +08:00
2016-01-22 22:39:19 +08:00
To build the latest master snapshot:
2015-12-19 04:08:56 +08:00
::
2017-04-25 05:01:24 +08:00
./do_debian_package.sh --snapshot=NOW --branch=master --type=local
2015-12-19 04:08:56 +08:00
2016-01-22 22:39:19 +08:00
To build the latest stable release:
2015-12-19 04:08:56 +08:00
::
2017-04-25 05:01:24 +08:00
./do_debian_package.sh --snapshot=stable --type=local
2015-12-19 04:08:56 +08:00
2017-04-25 05:01:24 +08:00
Note that the distribution will be guessed using `` lsb_release -a 2>/dev/null | grep Codename | awk '{print $2}' ``
2021-02-09 01:07:02 +08:00
which simply extracts your distribution name - like "xenial", "bionic" etc. You
2017-04-25 05:01:24 +08:00
can always specify it using --distro=your distro name if you know it. As far as the script
2016-07-05 05:52:37 +08:00
goes, it checks if your distro is "trusty" in which case it pulls in pre-systemd
release configurations and if its not "trusty" it assumes its based on systemd
and pulls in systemd related config files.
2015-12-19 04:08:56 +08:00
2016-07-05 05:52:37 +08:00
(At the end the script will ask if you want to retain the checked out version of
ZoneMinder. If you are a developer and are making local changes, make sure you
select "y" so that the next time you do the build process mentioned here, it
keeps your changes. Selecting any other value than "y" or "Y" will delete the
checked out code and only retain the package)
2015-12-19 04:08:56 +08:00
2016-01-22 22:39:19 +08:00
This should now create a bunch of .deb files
2015-12-19 04:08:56 +08:00
2016-01-22 22:39:19 +08:00
**Step 4:** Install the package
2015-12-19 04:08:56 +08:00
::
2016-01-22 22:39:19 +08:00
sudo gdebi zoneminder_<version>_<arch>.deb
2021-02-09 01:07:02 +08:00
(example sudo gdebi zoneminder_1.34.0-bionic-2021020801_amd64.deb)
2015-12-19 04:08:56 +08:00
2016-01-22 22:39:19 +08:00
**This will report DB errors - ignore - you need to configure the DB and some other stuff**
2015-12-19 04:08:56 +08:00
2016-01-22 22:39:19 +08:00
**Step 5:** Post install configuration
2015-12-19 04:08:56 +08:00
2016-07-05 05:52:37 +08:00
Now that you have installed from your own package you can resume following the
2016-07-05 05:15:01 +08:00
standard install guide for your version, start at the step after Install Zoneminder.
2014-07-13 20:25:30 +08:00
2016-07-03 18:21:13 +08:00
Hints
-----
Make sure ZoneMinder and APIs work with security
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
1. Enable OPT_AUTH in ZoneMinder
2. Log out of ZoneMinder in browser
2016-07-05 05:52:37 +08:00
3. 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
2016-07-03 18:21:13 +08:00
4. Go to another tab in the SAME BROWSER (important) and log into ZM
5. Repeat step 3 and it should give you the ZM and API version
Socket_sendto or no live streaming
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
After you have setup your camera make sure you can view Monitor streams, if not
check some of the common causes:
* Check Apache cgi module is enabled.
* Check Apache /etc/apache2/conf-enabled/zoneminder.conf ScriptAlias matches PATH_ZMS.
ScriptAlias **/zm/cgi-bin** /usr/lib/zoneminder/cgi-bin
From console go to `` Options->Path `` and make sure PATH_ZMS is set to **/zm/cgi-bin/** \ nph-zms.
Changed Default DB User
^^^^^^^^^^^^^^^^^^^^^^^
If you have changed your DB login/password from zmuser/zmpass, you need to
2017-04-22 01:43:16 +08:00
update these values in zm.conf.
2016-07-03 18:21:13 +08:00
1. Edit zm.conf to change ZM_DB_USER and ZM_DB_PASS to the values you used.