File: debian.rst

package info (click to toggle)
zoneminder 1.36.35%2Bdfsg1-1
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid, trixie
  • size: 53,728 kB
  • sloc: php: 219,767; perl: 127,535; javascript: 75,411; cpp: 59,876; sql: 6,635; sh: 2,472; ansic: 1,467; makefile: 534; xml: 240; asm: 157; python: 74
file content (663 lines) | stat: -rw-r--r-- 18,169 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
Debian
======

.. contents::

Debian 12 (Bookworm)
--------------------

This procedure will guide you through the installation of ZoneMinder on Debian 12 (Bookworm).

**Step 1:** Setup Sudo (optional but recommended)

By default Debian does not come with sudo, so you have to install it and configure it manually.
This step is optional but recommended and the following instructions assume that you have setup sudo.
If you prefer to setup ZoneMinder as root, do it at your own risk and adapt the following instructions accordingly.

::

    apt install sudo
    usermod -a -G sudo <username>
    exit

Now your terminal session is back under your normal user. You can check that 
you are now part of the sudo group with the command ``groups``, "sudo" should
appear in the list. If not, run ``newgrp sudo`` and check again with ``groups``.

**Step 2:** Update system

Run the following commands.

::

    sudo apt update
    sudo apt upgrade

**Step 3:** Install MariaDB and do initial database configuration

Run the following commands.

::

    sudo apt install mariadb-server

Switch into root user and create database and database user

::

    sudo su
    mariadb
    CREATE DATABASE zm;
    CREATE USER zmuser@localhost IDENTIFIED BY 'zmpass';
    GRANT ALL ON zm.* TO zmuser@localhost;
    FLUSH PRIVILEGES;
    exit;
    exit

By default MariaDB uses `unix socket authentication`_, so no root user password is required (root MariaDB user access only available to local root Linux user). If you wish, you can set a root MariaDB password (and apply other security tweaks) by running `mariadb-secure-installation`_.

**Step 4:** Install zoneminder

By default Debian will install the version published in Debian (stable). However there may be newer versions by using backports.
At the time of this writing, bookworm (stable) ships with v.1.36.33.

To install the version in bookworm stable, just run the following command.

::

    sudo apt install zoneminder


If instead you prefer to install the newer version using backports, run the following commands.
The first line will add this bookworm-backports repository.
The backports repository is deactivated by default, so with the second line we explicityly state we want the backported version of zoneminder.

::

    sudo echo 'deb http://deb.debian.org/debian bookworm-backports main contrib' >> /etc/apt/sources.list
    sudo apt update
    sudo apt -t bookworm-backports install zoneminder


**Step 5:** Configure database

:: 

    mariadb -u zmuser -p zm < /usr/share/zoneminder/db/zm_create.sql

**Step 6:** Setup permissions for zm.conf

To make sure zoneminder can read the configuration file, run the following command.

::

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

**Step 7:** Tweak Apache configuration

::

    sudo a2enconf zoneminder
    sudo systemctl reload apache2.service
    sudo systemctl restart zoneminder.service
    sudo systemctl status zoneminder.service
    sudo systemctl enable zoneminder.service    # start zoneminder automatically at boot

If the zoneminder.service show to be active and without any errors, you should be able to access zoneminder at ``http://yourhostname/zm``

Debian 11 (Bullseye)
--------------------

This procedure will guide you through the installation of ZoneMinder on Debian 11 (Bullseye).

**Step 1:** Setup Sudo (optional but recommended)

By default Debian does not come with sudo, so you have to install it and configure it manually.
This step is optional but recommended and the following instructions assume that you have setup sudo.
If you prefer to setup ZoneMinder as root, do it at your own risk and adapt the following instructions accordingly.

::

    apt install sudo
    usermod -a -G sudo <username>
    exit

Now your terminal session is back under your normal user. You can check that 
you are now part of the sudo group with the command ``groups``, "sudo" should
appear in the list. If not, run ``newgrp sudo`` and check again with ``groups``.

**Step 2:** Update system and install zoneminder

Run the following commands.

::

    sudo apt update
    sudo apt upgrade
    sudo apt install mariadb-server

Switch into root user and create database and database user

::

    sudo su
    mariadb
    CREATE DATABASE zm;
    CREATE USER zmuser@localhost IDENTIFIED BY 'zmpass';
    GRANT ALL ON zm.* TO zmuser@localhost;
    FLUSH PRIVILEGES;
    exit;
    exit

By default MariaDB uses `unix socket authentication`_, so no root user password is required (root MariaDB user access only available to local root Linux user). If you wish, you can set a root MariaDB password (and apply other security tweaks) by running `mariadb-secure-installation`_.

**Step 4:** Install zoneminder

By default Debian will install the version published in Debian (stable). However you also have the option to install a newer version using backports.
For example, at the time of this writing, bullseye (stable) ships with v.1.34.x and bullseye-backports with v.1.36.x.

To install the version in bullseye stable, just run the following command.

::

    sudo apt install zoneminder

When mariadb is installed for the first time, it doesn't add a password to the root user. Therefore, for security, it is recommended to run ``mysql secure installation``.

If instead you prefer to install the newer version using backports, run the following commands.
The first line will add bullseye-backports repository.
The backports repository is deactivated by default, so with the second line we explicityly state we want the backported version of zoneminder.

::

    sudo echo 'deb http://deb.debian.org/debian bullseye-backports main contrib' >> /etc/apt/sources.list
    sudo apt update && sudo apt -t bullseye-backports install zoneminder


**Step 5:** Configure database

:: 

    mariadb -u zmuser -p zm < /usr/share/zoneminder/db/zm_create.sql

**Step 6:** Setup permissions for zm.conf

To make sure zoneminder can read the configuration file, run the following command.

::

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

Congratulations! You should now be able to access zoneminder at ``http://yourhostname/zm``

::

    sudo a2enconf zoneminder
    sudo systemctl reload apache2.service
    sudo systemctl restart zoneminder.service
    sudo systemctl status zoneminder.service

If the zoneminder.service show to be active and without any errors, you should be able to access zoneminder at ``http://yourhostname/zm``

Debian Buster
-------------

This procedure will guide you through the installation of ZoneMinder on Debian 10 (Buster).

**Step 1:** Make sure your system is up to date

Open a console and use ``su`` command to become root.

::

    apt update
    apt upgrade


**Step 2:** Setup Sudo (optional but recommended)

By default Debian does not come with sudo, so you have to install it and configure it manually.
This step is optional but recommended and the following instructions assume that you have setup sudo.
If you prefer to setup ZoneMinder as root, do it at your own risk and adapt the following instructions accordingly.

::

    apt install sudo
    usermod -a -G sudo <username>
    exit

Now your terminal session is back under your normal user. You can check that 
you are now part of the sudo group with the command ``groups``, "sudo" should
appear in the list. If not, run ``newgrp sudo`` and check again with ``groups``.


**Step 3:** Install Apache and MySQL

These are not dependencies for the ZoneMinder package as they could be
installed elsewhere. If they are not installed yet in your system, you have to
trigger their installation manually.

::

    sudo apt install apache2 default-mysql-server

**Step 4:** Add ZoneMinder's Package repository to your apt sources

ZoneMinder's Debian packages are not included in Debian's official package
repositories. To be able to install ZoneMinder with APT, you have to edit the
list of apt sources and add ZoneMinder's repository.

Add the following to the /etc/apt/sources.list.d/zoneminder.list file

::

    # ZoneMinder repository
    deb https://zmrepo.zoneminder.com/debian/release-1.36 buster/

You can do this using:

::

    echo "deb https://zmrepo.zoneminder.com/debian/release-1.36 buster/" | sudo tee /etc/apt/sources.list.d/zoneminder.list

Because ZoneMinder's package repository provides a secure connection through HTTPS, apt must be enabled for HTTPS.
::

    sudo apt install apt-transport-https

Ensure you have gnupg installed before importing the apt key in the following step.
::

    sudo apt install gnupg


Finally, download the GPG key for ZoneMinder's repository:
::

    wget -O - https://zmrepo.zoneminder.com/debian/archive-keyring.gpg | sudo apt-key add -


**Step 5:** Install ZoneMinder

::

    sudo apt update
    sudo apt install zoneminder

**Step 6:** Read the Readme

The rest of the install process is covered in the README.Debian, so feel free to have
a read.

::

    zcat /usr/share/doc/zoneminder/README.Debian.gz


**Step 7:** Enable ZoneMinder service

::

    sudo systemctl enable zoneminder.service

**Step 8:** Configure Apache

The following commands will setup the default /zm virtual directory and configure
required apache modules.

::

    sudo a2enconf zoneminder
    sudo a2enmod rewrite # this is enabled by default
    sudo a2enmod cgi # this is done automatically when installing the package. Redo this command manually only for troubleshooting.


**Step 9:** Edit Timezone in PHP

Automated way:
::

    sudo sed -i "s/;date.timezone =/date.timezone = $(sed 's/\//\\\//' /etc/timezone)/g" /etc/php/7.*/apache2/php.ini

Manual way
::

    sudo nano /etc/php/7.*/apache2/php.ini

Search for [Date] (Ctrl + w then type Date and press Enter) and change
date.timezone for your time zone. Don't forget to remove the ; from in front
of date.timezone.

::

        [Date]
        ; Defines the default timezone used by the date functions
        ; http://php.net/date.timezone
        date.timezone = America/New_York

CTRL+o then [Enter] to save

CTRL+x to exit


**Step 10:** Start ZoneMinder

Reload Apache to enable your changes and then start ZoneMinder.

::

    sudo systemctl reload apache2
    sudo systemctl start zoneminder

You are now ready to go with ZoneMinder. Open a browser and type either ``localhost/zm`` one the local machine or ``{IP-OF-ZM-SERVER}/zm`` if you connect from a remote computer.

Easy Way: Debian Stretch
------------------------

This procedure will guide you through the installation of ZoneMinder on Debian 9 (Stretch). This section has been tested with ZoneMinder 1.36 on Debian 9.8.

**Step 1:** Make sure your system is up to date

Open a console and use ``su`` command to become Root.

::

    apt update
    apt upgrade


**Step 2:** Setup Sudo (optional but recommended)

By default Debian does not come with sudo, so you have to install it and configure it manually. This step is optional but recommended and the following instructions assume that you have setup sudo. If you prefer to setup ZoneMinder as root, do it at your own risk and adapt the following instructions accordingly.

::

    apt install sudo
    usermod -a -G sudo <username>
    exit

Now your terminal session is back under your normal user. You can check that you are now part of the sudo group with the command ``groups``, "sudo" should appear in the list. If not, run ``newgrp sudo`` and check again with ``groups``.


**Step 3:** Install Apache and MySQL

These are not dependencies for the ZoneMinder package as they could be installed elsewhere. If they are not installed yet in your system, you have to trigger their installation manually.

::

    sudo apt install apache2 mysql-server

**Step 4:** Add ZoneMinder's Package repository to your apt sources

ZoneMinder's Debian packages are not included in Debian's official package repositories. To be able to install ZoneMinder with APT, you have to edit the list of apt sources and add ZoneMinder's repository.

::

    sudo nano /etc/apt/sources.list

Add the following to the bottom of the file

::

    # ZoneMinder repository
    deb https://zmrepo.zoneminder.com/debian/release-1.36 stretch/

CTRL+o and <Enter> to save
CTRL+x to exit

Because ZoneMinder's package repository provides a secure connection through HTTPS, apt must be enabled for HTTPS.
::

    sudo apt install apt-transport-https

Finally, download the GPG key for ZoneMinder's repository:
::

    wget -O - https://zmrepo.zoneminder.com/debian/archive-keyring.gpg | sudo apt-key add -


**Step 5:** Install ZoneMinder

::

    sudo apt update
    sudo apt install zoneminder

**Step 6:** Read the Readme

The rest of the install process is covered in the README.Debian, so feel free to have
a read.

::

    zcat /usr/share/doc/zoneminder/README.Debian.gz


**Step 7:** Enable ZoneMinder service

::

    sudo systemctl enable zoneminder.service

**Step 8:** Configure Apache

The following commands will setup the default /zm virtual directory and configure
required apache modules.

::

    sudo a2enconf zoneminder
    sudo a2enmod rewrite
    sudo a2enmod cgi # this is done automatically when installing the package. Redo this command manually only for troubleshooting.


**Step 9:** Edit Timezone in PHP

Automated way:
::

    sudo sed -i "s/;date.timezone =/date.timezone = $(sed 's/\//\\\//' /etc/timezone)/g" /etc/php/7.0/apache2/php.ini

Manual way
::

    sudo nano /etc/php/7.0/apache2/php.ini

Search for [Date] (Ctrl + w then type Date and press Enter) and change
date.timezone for your time zone. Don't forget to remove the ; from in front
of date.timezone.

::

        [Date]
        ; Defines the default timezone used by the date functions
        ; http://php.net/date.timezone
        date.timezone = America/New_York

CTRL+o then [Enter] to save

CTRL+x to exit


**Step 10:** Start ZoneMinder

Reload Apache to enable your changes and then start ZoneMinder.

::

    sudo systemctl reload apache2
    sudo systemctl start zoneminder

You are now ready to go with ZoneMinder. Open a browser and type either ``localhost/zm`` one the local machine or ``{IP-OF-ZM-SERVER}/zm`` if you connect from a remote computer.


Easy Way: Debian Jessie
-----------------------

**Step 1:** Setup Sudo

By default Debian does not come with sudo. Log in as root or use su command.
N.B. The instructions below are for setting up sudo for your current account, you can
do this as root if you prefer.

::

    apt-get update
    apt-get install sudo
    usermod -a -G sudo <username>
    exit

Logout or try ``newgrp`` to reload user groups

**Step 2:** Run sudo and update

Now run session using sudo and ensure system is updated.
::

    sudo -i
    apt-get upgrade

**Step 3:** Install Apache and MySQL

These are not dependencies for the package as they could
be installed elsewhere.

::

    apt-get install apache2 mysql-server

**Step 4:** Edit sources.list to add jessie-backports

::

    nano /etc/apt/sources.list

Add the following to the bottom of the file

::

    # Backports repository
    deb http://archive.debian.org/debian/ jessie-backports main contrib non-free

CTRL+o and <Enter> to save
CTRL+x to exit

Run the following

::

    echo 'Acquire::Check-Valid-Until no;' > /etc/apt/apt.conf.d/99no-check-valid-until

**Step 5:** Install ZoneMinder

::

    apt-get update
    apt-get install zoneminder

**Step 6:** Read the Readme

The rest of the install process is covered in the README.Debian, so feel free to have
a read.

::

    zcat /usr/share/doc/zoneminder/README.Debian.gz

**Step 7:** Setup Database

Install the zm database and setup the user account. Refer to Hints in Ubuntu install
should you choose to change default database user and password.

::

    cat /usr/share/zoneminder/db/zm_create.sql | sudo mysql --defaults-file=/etc/mysql/debian.cnf
    echo 'grant lock tables,alter,create,select,insert,update,delete,index on zm.* to 'zmuser'@localhost identified by "zmpass";'    | sudo mysql --defaults-file=/etc/mysql/debian.cnf mysql

**Step 8:** zm.conf Permissions

Adjust permissions to the zm.conf file to allow web account to access it.

::

    chgrp -c www-data /etc/zm/zm.conf

**Step 9:** Setup ZoneMinder service

   ::

    systemctl enable zoneminder.service

**Step 10:** Configure Apache

The following commands will setup the default /zm virtual directory and configure
required apache modules.

::

    a2enconf zoneminder
    a2enmod cgi
    a2enmod rewrite

**Step 11:** Edit Timezone in PHP

::

    nano /etc/php5/apache2/php.ini

Search for [Date] (Ctrl + w then type Date and press Enter) and change
date.timezone for your time zone. **Don't forget to remove the ; from in front
of date.timezone**

::

        [Date]
        ; Defines the default timezone used by the date functions
        ; http://php.net/date.timezone
        date.timezone = America/New_York

CTRL+o then [Enter] to save

CTRL+x to exit


**Step 12:** Please check the configuration

    1. Check path of ZM_PATH in '/etc/zm/conf.d/zmcustom.conf' is ZM_PATH_ZMS=/zm/cgi-bin/nph-zms
        ::
            cat /etc/zm/conf.d/zmcustom.conf
            
    2. Check config of /etc/apache2/conf-enabled/zoneminder.conf has the same ScriptAlias /zm/cgi-bin that is configured
       in ZM_PATH. The part /nph-zms has to be left out of the ScriptAlias
       
        ScriptAlias /zm/cgi-bin "/usr/lib/zoneminder/cgi-bin"
        <Directory "/usr/lib/zoneminder/cgi-bin">
        
        ::
            cat /etc/apache2/conf-enabled/zoneminder.conf 

**Step 13:** Start ZoneMinder

Reload Apache to enable your changes and then start ZoneMinder.

::

    systemctl reload apache2
    systemctl start zoneminder

**Step 14:** 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:

    ::

            {
                "version": "1.34.0",
                "apiversion": "1.34.0.1"
            }

**Congratulations**  Your installation is complete