Az előző posztban az UniFi Controller telepítéséről, illetve frissítéséről volt szó. Lássuk hát a ZoneMinder frissítését.
Az alábbi dokumentáció elkészítéséhez segítségemre volt a közösségi plugin, illetve annak szkriptjei. Itt találjátok: https://github.com/freenas/iocage-plugin-zoneminder
A wiki szerint a mentés és visszaállítás egyrészt a fájlrendszer visszaállítását (események, konfiguráció), másrészt a MySQL adatbázis visszaállítását jelenti.
Ezen felül a webszerver (nginx) konfigurációját is érdemes elmenteni.
Kezdjük az adatbázissal. A munkát a jail-ben kezdem, a szolgáltatást leállítom:
root@truenas:/ #iocage console ZoneMinder
root@ZoneMinder:~ #service zoneminder stop
Mivel nem ismerem az adatbázist, ezért mindent exportálok:
root@ZoneMinder:~ # mysqldump --user=root --password --set-gtid-purged=OFF --add-drop-database --triggers --routines --events --databases zm > /tmp/dump.sql
A mentés a jail-ben van, ezért ki kell másolnunk valahova, ahol az új jail-ből hozzáférünk:
root@ZoneMinder:~ #exit
logout root@truenas:/ #cd /mnt/vol0/iocage/jails/ZoneMinder/root/tmp/
root@truenas:/mnt/vol0/iocage/jails/ZoneMinder/root/tmp #cp dump.sql /mnt/vol0/dataset2/Backup/ZoneMinder/
Folytassuk a fájlrendszerrel, de hol található a konfiguráció?
root@truenas:/mnt/vol0/iocage/jails/ZoneMinder/root # find . -name zm.conf
./usr/local/etc/zm.conf
Várjunk csak, nem ez kell nekünk, hanem a zoneminder mappa alatti fájlok:
root@truenas:/mnt/vol0/iocage/jails/ZoneMinder/root #cd usr/local/etc
root@truenas:/mnt/vol0/iocage/jails/ZoneMinder/root/usr/local/etc #cat zm.conf
========================================================================== # ZoneMinder Base Configuration # ========================================================================== # *** DO NOT EDIT THIS FILE *** # To make custom changes to the variables below, create a new configuration file, with an extention of .conf, under the /usr/local/etc/zoneminder folder, containing your desired modifications. #
Akkor mentsük ki fájlokat a jail-ből az egyik dataset-re:
root@truenas:/mnt/vol0/iocage/jails/ZoneMinder/root #cd zoneminder
root@truenas:/mnt/vol0/iocage/jails/ZoneMinder/root/usr/local/etc/zoneminder #cp *.conf /mnt/vol0/dataset2/Backup/ZoneMinder/
Következnek az események. Az események könyvtára a 01-system-paths.conf fájlban ZM_DIR_EVENTS változóban található (/var/db/zoneminder/events). Én ezekkel most nem foglalkozom, de ugyanúgy menthetőek, mint a konfiguráció.
root@truenas:/mnt/vol0/iocage/jails/ZoneMinder/root/usr/local/etc/zoneminder # grep ZM_DIR_EVENTS < 01-system-paths.conf
ZM_DIR_EVENTS=/var/db/zoneminder/events
Végül a webszerver konfigurációjának mentését végezzük el:
root@truenas:/mnt/vol0/iocage/jails/ZoneMinder/root/usr/local/etc/nginx #cp nginx.conf /mnt/vol0/dataset2/Backup/ZoneMinder/
root@truenas:/mnt/vol0/iocage/jails/ZoneMinder/root/usr/local/etc/nginx #cp conf.d/zoneminder.conf /mnt/vol0/dataset2/Backup/ZoneMinder/
A TrueNAS felhasználói felületén keresztül a közösségi plugin-ek között elérhető a Zoneminder, viszont a plugin a 12.1-es verzióra épül, ezért nem így fogom telepíteni.
Helyette létrehozok egy új jail-t a felhasználói felületen, majd frissítem a csomagokat és telepítem a zoneminder-t.
root@truenas:~ #iocage console ZoneMinder
root@ZoneMinder:~ #pkg update && pkg upgrade
root@ZoneMinder:~ #pkg install zoneminder
root@ZoneMinder:~ #exit
A poszt írásakor az 1.34.9-es verzió volt elérhető. Telepítés után kapunk egy több oldalas leírást, hogy mit kell még telepítenünk, beállítanunk. Következzenek sorban a lépések:
1. ZoneMinder konfigurációs fájlok és adatbázis mentés visszaállítása:
root@truenas:/mnt/vol0/iocage/jails/ZoneMinder/root/usr/local/etc/zoneminder #cp /mnt/vol0/dataset2/Backup/ZoneMinder/*.conf .
root@truenas:/mnt/vol0/iocage/jails/ZoneMinder/root/tmp #cp /mnt/vol0/dataset2/Backup/ZoneMinder/dump.sql .
2. MySQL telepítés, adatbázis import
A kezdeti root jelszó a szolgáltatás indítása untán a /root/.mysql_secret fájlban található és illik rögtön megváltoztatni. Ezen felül létrehozunk egy felhasználót a ZoneMinder-nek zmuser néven. Ez a felhasználó szerepel az előző lépésben visszaállított konfigurációs fájlban:
root@truenas:~ #iocage console ZoneMinder
root@ZoneMinder:~ #pkg install mysql57-server
Initial password for first time use of MySQL is saved in $HOME/.mysql_secret ie. when you want to use "mysql -u root -p" first you should see password in /root/.mysql_secret root@ZoneMinder:~ #sysrc mysql_enable="YES"
root@ZoneMinder:/ #service mysql-server start
root@ZoneMinder:/ #mysql --user=root --password
Enter password: root@localhost [(none)]>ALTER USER 'root'@'localhost' IDENTIFIED BY '*****';
Query OK, 0 rows affected (0.02 sec) root@localhost [(none)]>GRANT ALL PRIVILEGES ON zm.* TO 'dbadmin'@'localhost' IDENTIFIED BY '****';
Query OK, 0 rows affected, 1 warning (0.03 sec) root@localhost [(none)]>FLUSH PRIVILEGES;
Query OK, 0 rows affected (0.02 sec) root@localhost [(none)]>exit
Bye root@ZoneMinder:/ #mysql --user=root --password < /tmp/dump.sql
Enter password:
3. nginx webszerver telepítése:
root@ZoneMinder:~ #pkg install nginx
root@ZoneMinder:~ #sysrc nginx_enable="YES"
root@ZoneMinder:~ #exit
nginx konfiguráció visszatöltése:
root@truenas:/mnt/vol0/iocage/jails/ZoneMinder/root/usr/local/etc/nginx #cp /mnt/vol0/dataset2/Backup/ZoneMinder/nginx.conf .
root@truenas:/mnt/vol0/iocage/jails/ZoneMinder/root/usr/local/etc/nginx #mkdir conf.d
root@truenas:/mnt/vol0/iocage/jails/ZoneMinder/root/usr/local/etc/nginx #cp /mnt/vol0/dataset2/Backup/ZoneMinder/zoneminder.conf
conf.d/
ideiglenes SSL tanúsítvány generálása, ha van, akkor a tanúsítvány visszaállítása
root@truenas:~ #iocage console ZoneMinder
root@ZoneMinder:~ ## /usr/bin/openssl req -new -newkey rsa:2048 -days 366 -nodes -x509 -subj "/O=Temporary Certificate Please Replace/CN=*" -keyout /usr/local/etc/ssl/key.pem -out /usr/local/etc/ssl/cert.pem
szolgáltatás indítása
root@ZoneMinder:~ # service nginx start
4. cgi-wrapper telepítése, beállítása
root@ZoneMinder:~ #pkg install fcgiwrap
root@ZoneMinder:~ #sysrc fcgiwrap_enable="YES"
root@ZoneMinder:~ #sysrc fcgiwrap_user="www"
root@ZoneMinder:~ #sysrc fcgiwrap_socket_owner="www"
root@ZoneMinder:~ #sysrc fcgiwrap_flags="-c 4"
5. php beállítása
root@ZoneMinder:~ #touch /usr/local/etc/php-fpm.d/zoneminder.conf
root@ZoneMinder:~ #vi /usr/local/etc/php-fpm.d/zoneminder.conf
Az alábbi sorok bemásolása: listen = /var/run/php-fpm.sock listen.owner = www listen.group = www env[PATH] = /usr/local/bin:/usr/bin:/bin root@ZoneMinder:~ #echo date.timezone = '"UTC"' > /usr/local/etc/php/overrides.ini
root@ZoneMinder:~ #sysrc php_fpm_enable="YES"
root@ZoneMinder:~ #service php-fpm start
6. Könyvtárak létrehozása
Az alábbi lépéseket utólag dokumentáltam, mivel ezekre hibakeresés során derült fény:
root@ZoneMinder:~ #mkdir /var/log/zm
root@ZoneMinder:~ #chown www:www /var/log/zm
root@ZoneMinder:~ #su -m www -c 'mkdir /var/db/zoneminder/events'
root@ZoneMinder:~ #su -m www -c 'mkdir /var/db/zoneminder/images'
7. ZoneMinder indítása
root@ZoneMinder:~ #sysrc zoneminder_enable="YES"
root@ZoneMinder:~ #service zoneminder start
root@ZoneMinder:~ #exit
Készen vagyunk.
Ráadás: Ideiglenes fájlrendszer (tmpfs)
A leírás szerint a ZoneMinder a kamerák felvételeinek utolsó néhány képkockáját megtartja, riasztás esetére. Ajánlott ezeket a felvételeket a memóriában tárolni, hogy a tárolókat kíméljük.
Az alábbi linken találtam egy jó leírást a beállításokról.
A felhasználói felületen a jail beállításaiban kapcsoljuk be az „allow_raw_sockets”-t és az „allow_mount”-ot és alatta válasszuk ki az „allow_mount_tmpfs”-t.
Adjuk hozzá az alább sort a jail fájlrendszer táblájához (fstab):
root@truenas:/mnt/vol0/iocage/jails/ZoneMinder # echo tmpfs /mnt/vol0/iocage/jails/ZoneMinder/root/tmp tmpfs rw,nosuid,noexec,mode=01777 0 0 >fstab
A tmpfs csak akkor csatolható a jail-ben, ha az enforce_statfs 2-nél kisebb értékre van beállítva, ezért állítsuk 1-re:
root@truenas:/mnt/vol0/iocage/jails/ZoneMinder # iocage set enforce_statfs=1 ZoneMinder
enforce_statfs: 2 -> 1
A jail-ben ellenőrizzük a fájlrendszert:
root@ZoneMinder:/ # mount
vol0/iocage/jails/ZoneMinder/root on / (zfs, local, nfsv4acls)
tmpfs on /tmp (tmpfs, local, noexec, nosuid)
devfs on /dev (devfs, local, multilabel)
fdescfs on /dev/fd (fdescfs)
A ZoneMinder így már üzemképes.