« ZoneMinder » : différence entre les versions
| Ligne 195 : | Ligne 195 : | ||
= Optimisation MYSQL = | = Optimisation MYSQL = | ||
[https://wiki.zoneminder.com/MySQL Source] | [https://wiki.zoneminder.com/MySQL Source] | ||
Dans cet exemple: | |||
* Serveur ZoneMinder : znsrv0, znsrv1... | |||
* Serveur MariaDB (SQL) : zmdatabase | |||
= ZoneMinder Multi-Serveurs = | |||
[https://zoneminder.readthedocs.io/en/stable/installationguide/multiserver.html Source] | |||
== Serveur de Fichier == | |||
Tous les serveurs ZoneMinder doivent partager le même dossier "events". Ici, sous Ubuntu, le dossier est " /var/cache/zoneminder/events ". | |||
== Serveur ZoneMinder== | |||
{{Méta bandeau | |||
| niveau = modéré | |||
| icône = important | |||
| texte = Procédure à effectuer sur tous les serveurs ZoneMinder. | |||
}} | |||
On installe les dépendances : | |||
znsrv0:~# apt update && apt upgrade | |||
znsrv0:~# apt install apache2 php php-mysql libapache2-mod-php | |||
On installe "software-properties-common" si nécessaire et on ajoute le dépôt "iconnor/zoneminder-master" aux sources : | |||
znsrv0:~# apt install software-properties-common | |||
znsrv0:~# add-apt-repository ppa:iconnor/zoneminder-master | |||
On install ZoneMinder sans MariaDB/MySQL : | |||
znsrv0:~# apt update | |||
znsrv0:~# apt install zoneminder mysql-server*- | |||
On ajoute l'utilisateur de Apache au groupe "video" : | |||
znsrv0:~# adduser www-data video | |||
On règle le fuseau horaire de PHP : | |||
znsrv0:~# vi /etc/php/7.4/apache2/php.ini | |||
<font color = grey>...</font> | |||
[Date] | |||
; Defines the default timezone used by the date functions | |||
; <nowiki>http://</nowiki>php.net/date.timezone | |||
<font color = blue>date.timezone = <font color = green>Europe</font>/<font color = green>Paris</font></font> | |||
<font color = grey>...</font> | |||
Egalement celui du système : | |||
znsrv0:~# timedatectl set-timezone <font color = blue>Europe</font>/<font color = blue>Paris</font> | |||
On active ZoneMinder sur Apache avec divers modules, ssl, etc.. | |||
znsrv0:~# a2enconf zoneminder | |||
znsrv0:~# a2enmod rewrite headers expires ssl | |||
znsrv0:~# a2ensite default-ssl | |||
znsrv0:~# service apache2 reload | |||
Il faut également configurer Apache pour pouvoir lire plus de 6 flux simultanément, dans cet exemple on utilise les port 30.000 et au dessus, en fonction du nombre de caméras (1 port par caméra) : | |||
{{Méta bandeau | |||
| niveau = information | |||
| icône = loupe | |||
| texte = Penser à rediriger la plage de ports multicast de votre routeur sur le proxy... | |||
}} | |||
znsrv0:~# vi /etc/apache2/ports.conf | |||
<font color =grey>...</font> | |||
<IfModule ssl_module> | |||
Listen 443 | |||
<font color= blue>Listen 30000 | |||
Listen 30001 | |||
Listen 30002 | |||
Listen 30003 | |||
Listen 30004</font> | |||
<font color =grey>...</font> | |||
<font color =grey>...</font> | |||
</IfModule> | |||
<font color =grey>...</font> | |||
znsrv0:~# vi /etc/apache2/sites-enabled/default-ssl.conf | |||
<IfModule mod_ssl.c> | |||
<VirtualHost _default_:443 <font color = blue>*:30000 *:30002 *:30004</font> <font color =grey>...</font> > | |||
ServerAdmin webmaster@localhost | |||
<font color =grey>...</font> | |||
znsrv0:~# service apache2 reload | |||
On configure ZoneMinder : | |||
znsrv0:~# vi /etc/zm/zm.conf | |||
<font color =grey>... | |||
# Acceptable formats include hostname[:port], ip_address[:port], or localhost:unix_socket</font> | |||
ZM_DB_HOST=<font color = blue>IP_OU_HOSTNANE_BASE_DE_DONNEES</font> | |||
<font color =grey>...</font> | |||
<font color =grey>... | |||
# ZoneMinder database password</font> | |||
ZM_DB_PASS="<font color =blue>supermotdepassebdd</font>" | |||
<font color =grey>...</font> | |||
<font color =grey>... | |||
# in the Servers tab under Options</font> | |||
ZM_SERVER_HOST=<font color = violet>nom_serveur_zoneminder</font> | |||
{{Méta bandeau | |||
| niveau = information | |||
| icône = loupe | |||
| texte = <font color = violet>nom_serveur_zoneminder</font> nom unique du serveur sur lequel est effectué la modification, servira pour attribuer le serveur en charge de chaques caméras. | |||
}} | |||
== Base de données == | |||
{{Méta bandeau | |||
| niveau = information | |||
| icône = important | |||
| texte = Installer la base de données sur un disque SSD (fortement recommandée à partir de 10 caméras). | |||
}} | |||
On installe MariaDB en fonction de sa distribution, exemple avec Alpine Linux : | |||
zmdatabase:~# apk update && apk upgrade | |||
zmdatabase:~# apk add mariadb mariadb-common mariadb-client | |||
zmdatabase:~# service mariadb setup | |||
zmdatabase:~# rc-update add mariadb default | |||
zmdatabase:~# service mariadb start | |||
On sécurise MariaDB : | |||
zmdatabase:~# mysql_secure_installation | |||
Set root password? [Y/n] '''y''' | |||
Remove anonymous users? [Y/n] '''y''' | |||
Disallow root login remotely? [Y/n] '''y''' | |||
Remove test database and access to it? [Y/n] '''y''' | |||
Reload privilege tables now? [Y/n] '''y''' | |||
... Success! | |||
On configure mariaDB pour écouter sur le réseau : | |||
zmdatabase:~# vi /etc/my.cnf.d/mariadb-server.cnf | |||
* On commente la ligne suivante pour ne pas ignorer le réseau : | |||
<font color =grey>... | |||
[mysqld]</font> | |||
<font color = blue>#</font>skip-networking | |||
<font color =grey>...</font> | |||
* Puis on décommente la ligne suivante pour écouter le réseau : | |||
<font color = grey>...</font> | |||
<font color = blue>bind-address=0.0.0.0</font> | |||
<font color = grey>...</font> | |||
zmdatabase:~# service mariadb restart | |||
Pour créer la base de données il faut d'abord récupérer les fichiers "'''/usr/share/zoneminder/db/zm_create.sql'''" et "'''/usr/share/zoneminder/db/triggers.sql'''" sur un serveur ZoneMinder : | |||
*Sur le serveur MariaDB on crée d'abord le chemin des fichiers : | |||
zmdatabase:~# mkdir -p /usr/share/zoneminder/db | |||
*Sur un serveur ZoneMinder on exporte les fichiers sql : | |||
znsrv0:~# scp /usr/share/zoneminder/db/* <font color = blue>IP_SERVEUR_MARIADB</font>:/usr/share/zoneminder/db/ | |||
{{Méta bandeau | |||
| niveau = information | |||
| icône = loupe | |||
| texte = Si votre base de donées est sur Alpine Linux il vous faudra installer un [[SSH#Installation Alpine Linux|'''serveur SSH''']] pour pouvoir transférer via la commande "scp". | |||
}} | |||
De retour sur le serveur MariaDB on crée la base de données à l'aide du fichier récupéré : | |||
zmdatabase:~# mysql -u root -p < /usr/share/zoneminder/db/zm_create.sql | |||
Puis on crée et autorise un utilisateur pour accéder à la base de données "zm" depuis un réseau (ici depuis 192.168.1.X) : | |||
zmdatabase:~# mysql -u root -p -e "grant all on zm.* to 'zmuser'@'<font color =blue>192.168.1</font>.%' identified by '<font color =blue>supermotdepassebdd</font>';" | |||
zmdatabase:~# mysql -u root -p -e "flush privileges;" | |||
==Lancement et fin de la configuration des Serveurs ZoneMinder== | |||
Sur tous les serveurs ZoneMinder on active au démarrage et immédiatement le service idoine : | |||
znsrv0:~# systemctl enable --now zoneminder | |||
On se rend avec son navigateur favori sur l'un des serveur via "<nowiki>https://</nowiki><font color = blue>IP_SERVEUR_ZONEMINDER</font>/zm" et on valide la charte de confidentialité : | |||
[[File:Zmmulti1.PNG|border|On valide la charte de confidentialité..]] | |||
Se rendre dans "Options" -> "Servers" -> "ADD NEW SERVER" : | |||
[[File:Zmmulti2.PNG|border|Menu pour ajouter les serveurs]] | |||
On peuple le formulaire d'ajout avec els paramètres correspondants à ses serveurs : | |||
[[File:Zmmulti3.PNG|border|Formulaire d'ajout de serveur..]] | |||
On répète l'opération pour tous les serveurs puis on active les ports de flux vidéo dans "options" -> "Network" -> "MIN_STREAMING_PORT" : | |||
[[File:Zmmulti4.PNG|border|Exemple avec le port 30.000]] | |||
{{Méta bandeau | |||
| niveau = information | |||
| icône = loupe | |||
| texte = Penser à rediriger la plage de ports multicast de votre routeur sur le proxy... | |||
}} | |||
Le cluster est prêt, il faudra penser à activer l'authentification pour protéger l'accès et distribuer la gestion des caméras entre les serveurs pour équilibrer la charge, enfin on peut créer un vhost si l'on souhaite utiliser un reverse-proxy, il suffira de le rediriger sur l'un des serveurs. | |||
==VHost pour Reverse-Prox Nginx== | |||
{{Méta bandeau | |||
| niveau = information | |||
| icône = loupe | |||
| texte = Penser à rediriger la plage de ports multicast de votre routeur sur le proxy... | |||
}} | |||
server { | |||
if ($host = <font color = blue>zoneminder.exemple.net</font>) { | |||
return 301 <nowiki>https</nowiki>://$host$request_uri; | |||
} # managed by Certbot | |||
listen 80; | |||
listen [::]:80; | |||
server_name <font color = blue>zoneminder.exemple.net</font>; | |||
# return 404; | |||
return 301 <nowiki>https://</nowiki>$host$request_uri; | |||
} | |||
server { | |||
server_name <font color = blue>zoneminder.exemple.net</font>; | |||
error_page 403 https:/<font color = blue>zoneminder.exemple.net</font>; | |||
location / { | |||
return 301 /zm/; | |||
} | |||
location / { | |||
client_max_body_size 0; ##no limites :) | |||
proxy_set_header Host $host; | |||
proxy_set_header X-Real-IP $remote_addr; | |||
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; | |||
proxy_set_header X-Forwarded-Proto $scheme; | |||
proxy_set_header X-Forwarded-Protocol $scheme; | |||
proxy_set_header X-Forwarded-Host $http_host; | |||
proxy_pass https://<font color = blue>ADRESSE_IP_ZONEMINDER</font>/zm/; | |||
} | |||
listen [::]:443 ssl; # managed by Certbot | |||
listen 443 ssl; # managed by Certbot | |||
<font color = blue>listen 30000 ssl; | |||
listen 30001 ssl; | |||
listen 30002 ssl; | |||
listen 30003 ssl; | |||
listen 30004 ssl;</font> # Ports multicast | |||
<font color =grey>...</font> | |||
<font color =grey>...</font> | |||
ssl_certificate /etc/letsencrypt/live/<font color = blue>zoneminder.exemple.net</font>/fullchain.pem; # managed by Certbot | |||
ssl_certificate_key /etc/letsencrypt/live/<font color = blue>zoneminder.exemple.net</font>/privkey.pem; # managed by Certbot | |||
include /etc/letsencrypt/options-ssl-nginx.conf; | |||
ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; | |||
add_header Strict-Transport-Security "max-age=31536000" always; | |||
ssl_trusted_certificate /etc/letsencrypt/live/<font color = blue>zoneminder.exemple.net</font>/chain.pem; | |||
ssl_stapling on; | |||
ssl_stapling_verify on; | |||
} | |||
Version du 6 juin 2021 à 22:36
# apt update && apt upgrade
# apt install software-properties-common
# add-apt-repository ppa:iconnor/zoneminder-master
# apt install zoneminder
# adduser www-data video
# mysql_secure_installation
# vi /etc/zm/zm.conf
# ZoneMinder database password ZM_DB_PASS=zmpass
# mysql -U
mysql> ALTER USER 'zmuser'@'localhost' IDENTIFIED BY 'mdpnouveau'; mysql> FLUSH PRIVILEGES; mysql> exit
# vi /etc/php/7.4/apache2/php.ini
[Date] ; Defines the default timezone used by the date functions ; http://php.net/date.timezone date.timezone = Europe/Madrid
# timedatectl set-timezone Europe/Madrid
# a2enconf zoneminder # a2enmod rewrite # a2enmod headers # a2enmod expires # a2enmod ssl # a2ensite default-ssl # systemctl enable zoneminder # service zoneminder start # service apache2 reload
# apt install php7.4-fpm # a2enconf php7.4-fpm # systemctl reload apache2
Autentification
Options -> System -> OPT_USE_AUTH
multicast
MIN_STREAMING_PORT 30000
# vi /etc/apache2/ports.conf
...
<IfModule ssl_module>
Listen 443
Listen 30000
Listen 30001
Listen 30002
Listen 30003
Listen 30004
...
...
</IfModule>
...
# vi /etc/apache2/sites-enabled/default-ssl.conf
<IfModule mod_ssl.c>
<VirtualHost _default_:443 *:30000 *:30002 *:30004 ... >
ServerAdmin webmaster@localhost
...
# service apache2 restart
NGINX Reverse Proxy
Vhost
- Penser à rediriger la plage de ports multicast de votre routeur sur le proxy...
server {
if ($host = zoneminder.exemple.net) {
return 301 https://$host$request_uri;
} # managed by Certbot
listen 80;
listen [::]:80;
server_name zoneminder.exemple.net;
# return 404;
return 301 https://$host$request_uri;
}
server {
server_name zoneminder.exemple.net;
error_page 403 https:/zoneminder.exemple.net;
location / {
return 301 /zm/;
}
location / {
client_max_body_size 0; ##no limites :)
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header X-Forwarded-Protocol $scheme;
proxy_set_header X-Forwarded-Host $http_host;
proxy_pass https://ADRESS_IP_ZONEMINDER/zm/;
}
listen [::]:443 ssl; # managed by Certbot
listen 443 ssl; # managed by Certbot
listen 30000 ssl;
listen 30001 ssl;
listen 30002 ssl;
listen 30003 ssl;
listen 30004 ssl; # Ports multicast
...
...
ssl_certificate /etc/letsencrypt/live/zoneminder.exemple.net/fullchain.pem; # managed by Certbot
ssl_certificate_key /etc/letsencrypt/live/zoneminder.exemple.net/privkey.pem; # managed by Certbot
include /etc/letsencrypt/options-ssl-nginx.conf;
ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem;
add_header Strict-Transport-Security "max-age=31536000" always;
ssl_trusted_certificate /etc/letsencrypt/live/zoneminder.exemple.net/chain.pem;
ssl_stapling on;
ssl_stapling_verify on;
}
NVR TVT
Minimum à remplir :
- General :
name: un_nom
Source Type: ffmpeg
Function: choisir fonction souhaitée (Description uniquement disponlible avec le serveur en anlais chez moi, penser à régler le langage de ce compte sur "en_us" dans "Option" -> "Users" -> "admin*" -> "Language")
- Source :
Source Path : rtsp://utilisateur:motdepasse@IP_ADRESSE_OU_DNS:554/?chID=NUMERO_CAMERA&streamType=main&linkType=tcp
Capture Resolution (pixels): 1080P (reel :960x1072)
Installation
Ubuntu Sever 20.04
# apt update && apt upgrade # apt install apache2 php mariadb-server php-mysql libapache2-mod-php
# mysql_secure_installation
# apt install software-properties-common # add-apt-repository ppa:iconnor/zoneminder-master
Press [ENTER] to continue or Ctrl-c to cancel adding it.
Entrée pour valider
# apt update # apt install zoneminder
# vi /etc/zm/zm.conf
# ZoneMinder database password ZM_DB_PASS="nouveaumotdepasse"
# mysql -U
mysql> ALTER USER 'zmuser'@'localhost' IDENTIFIED BY 'nouveaumotdepasse'; mysql> FLUSH PRIVILEGES; mysql> exit
# vi /etc/php/7.4/apache2/php.ini
[Date] ; Defines the default timezone used by the date functions ; http://php.net/date.timezone date.timezone = Europe/Paris
# timedatectl set-timezone Europe/Paris
# adduser www-data video
# a2enconf zoneminder # a2enmod cgi # a2enmod rewrite # a2enmod headers # a2enmod expires # a2enmod ssl # a2ensite default-ssl # service apache2 reload # systemctl enable zoneminder # service zoneminder start
Optimisation MYSQL
Dans cet exemple:
- Serveur ZoneMinder : znsrv0, znsrv1...
- Serveur MariaDB (SQL) : zmdatabase
ZoneMinder Multi-Serveurs
Serveur de Fichier
Tous les serveurs ZoneMinder doivent partager le même dossier "events". Ici, sous Ubuntu, le dossier est " /var/cache/zoneminder/events ".
Serveur ZoneMinder
On installe les dépendances :
znsrv0:~# apt update && apt upgrade znsrv0:~# apt install apache2 php php-mysql libapache2-mod-php
On installe "software-properties-common" si nécessaire et on ajoute le dépôt "iconnor/zoneminder-master" aux sources :
znsrv0:~# apt install software-properties-common znsrv0:~# add-apt-repository ppa:iconnor/zoneminder-master
On install ZoneMinder sans MariaDB/MySQL :
znsrv0:~# apt update znsrv0:~# apt install zoneminder mysql-server*-
On ajoute l'utilisateur de Apache au groupe "video" :
znsrv0:~# adduser www-data video
On règle le fuseau horaire de PHP :
znsrv0:~# vi /etc/php/7.4/apache2/php.ini
... [Date] ; Defines the default timezone used by the date functions ; http://php.net/date.timezone date.timezone = Europe/Paris ...
Egalement celui du système :
znsrv0:~# timedatectl set-timezone Europe/Paris
On active ZoneMinder sur Apache avec divers modules, ssl, etc..
znsrv0:~# a2enconf zoneminder znsrv0:~# a2enmod rewrite headers expires ssl znsrv0:~# a2ensite default-ssl znsrv0:~# service apache2 reload
Il faut également configurer Apache pour pouvoir lire plus de 6 flux simultanément, dans cet exemple on utilise les port 30.000 et au dessus, en fonction du nombre de caméras (1 port par caméra) :
znsrv0:~# vi /etc/apache2/ports.conf
...
<IfModule ssl_module>
Listen 443
Listen 30000
Listen 30001
Listen 30002
Listen 30003
Listen 30004
...
...
</IfModule>
...
znsrv0:~# vi /etc/apache2/sites-enabled/default-ssl.conf
<IfModule mod_ssl.c>
<VirtualHost _default_:443 *:30000 *:30002 *:30004 ... >
ServerAdmin webmaster@localhost
...
znsrv0:~# service apache2 reload
On configure ZoneMinder :
znsrv0:~# vi /etc/zm/zm.conf
... # Acceptable formats include hostname[:port], ip_address[:port], or localhost:unix_socket ZM_DB_HOST=IP_OU_HOSTNANE_BASE_DE_DONNEES ...
... # ZoneMinder database password ZM_DB_PASS="supermotdepassebdd" ...
... # in the Servers tab under Options ZM_SERVER_HOST=nom_serveur_zoneminder
Base de données
On installe MariaDB en fonction de sa distribution, exemple avec Alpine Linux :
zmdatabase:~# apk update && apk upgrade zmdatabase:~# apk add mariadb mariadb-common mariadb-client zmdatabase:~# service mariadb setup zmdatabase:~# rc-update add mariadb default zmdatabase:~# service mariadb start
On sécurise MariaDB :
zmdatabase:~# mysql_secure_installation
Set root password? [Y/n] y
Remove anonymous users? [Y/n] y
Disallow root login remotely? [Y/n] y
Remove test database and access to it? [Y/n] y
Reload privilege tables now? [Y/n] y ... Success!
On configure mariaDB pour écouter sur le réseau :
zmdatabase:~# vi /etc/my.cnf.d/mariadb-server.cnf
- On commente la ligne suivante pour ne pas ignorer le réseau :
... [mysqld] #skip-networking ...
- Puis on décommente la ligne suivante pour écouter le réseau :
... bind-address=0.0.0.0 ...
zmdatabase:~# service mariadb restart
Pour créer la base de données il faut d'abord récupérer les fichiers "/usr/share/zoneminder/db/zm_create.sql" et "/usr/share/zoneminder/db/triggers.sql" sur un serveur ZoneMinder :
- Sur le serveur MariaDB on crée d'abord le chemin des fichiers :
zmdatabase:~# mkdir -p /usr/share/zoneminder/db
- Sur un serveur ZoneMinder on exporte les fichiers sql :
znsrv0:~# scp /usr/share/zoneminder/db/* IP_SERVEUR_MARIADB:/usr/share/zoneminder/db/
De retour sur le serveur MariaDB on crée la base de données à l'aide du fichier récupéré :
zmdatabase:~# mysql -u root -p < /usr/share/zoneminder/db/zm_create.sql
Puis on crée et autorise un utilisateur pour accéder à la base de données "zm" depuis un réseau (ici depuis 192.168.1.X) :
zmdatabase:~# mysql -u root -p -e "grant all on zm.* to 'zmuser'@'192.168.1.%' identified by 'supermotdepassebdd';" zmdatabase:~# mysql -u root -p -e "flush privileges;"
Lancement et fin de la configuration des Serveurs ZoneMinder
Sur tous les serveurs ZoneMinder on active au démarrage et immédiatement le service idoine :
znsrv0:~# systemctl enable --now zoneminder
On se rend avec son navigateur favori sur l'un des serveur via "https://IP_SERVEUR_ZONEMINDER/zm" et on valide la charte de confidentialité :
Se rendre dans "Options" -> "Servers" -> "ADD NEW SERVER" :
On peuple le formulaire d'ajout avec els paramètres correspondants à ses serveurs :
On répète l'opération pour tous les serveurs puis on active les ports de flux vidéo dans "options" -> "Network" -> "MIN_STREAMING_PORT" :
Le cluster est prêt, il faudra penser à activer l'authentification pour protéger l'accès et distribuer la gestion des caméras entre les serveurs pour équilibrer la charge, enfin on peut créer un vhost si l'on souhaite utiliser un reverse-proxy, il suffira de le rediriger sur l'un des serveurs.
VHost pour Reverse-Prox Nginx
server {
if ($host = zoneminder.exemple.net) {
return 301 https://$host$request_uri;
} # managed by Certbot
listen 80;
listen [::]:80;
server_name zoneminder.exemple.net;
# return 404;
return 301 https://$host$request_uri;
}
server {
server_name zoneminder.exemple.net;
error_page 403 https:/zoneminder.exemple.net;
location / {
return 301 /zm/;
}
location / {
client_max_body_size 0; ##no limites :)
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header X-Forwarded-Protocol $scheme;
proxy_set_header X-Forwarded-Host $http_host;
proxy_pass https://ADRESSE_IP_ZONEMINDER/zm/;
}
listen [::]:443 ssl; # managed by Certbot
listen 443 ssl; # managed by Certbot
listen 30000 ssl;
listen 30001 ssl;
listen 30002 ssl;
listen 30003 ssl;
listen 30004 ssl; # Ports multicast
...
...
ssl_certificate /etc/letsencrypt/live/zoneminder.exemple.net/fullchain.pem; # managed by Certbot
ssl_certificate_key /etc/letsencrypt/live/zoneminder.exemple.net/privkey.pem; # managed by Certbot
include /etc/letsencrypt/options-ssl-nginx.conf;
ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem;
add_header Strict-Transport-Security "max-age=31536000" always;
ssl_trusted_certificate /etc/letsencrypt/live/zoneminder.exemple.net/chain.pem;
ssl_stapling on;
ssl_stapling_verify on;
}