Zoneminder

Zoneminder ist ein Service, der dazu in der Lage ist – Überwachungskameras unterschiedlicherster Art und beliebiger Anzahl unter einem Dach zu vereinen.

In der Vergangenheit bin ich am komplizierten Installationsprozess von Zoneminder leider mehrfach gescheitert. Das wollte ich so aber nicht stehen lassen – ehrgeizig, wie ich bin, habe ich mich nochmal daran gesetzt und es tatsächlich geschafft.

Der Dienst wird auf (m)einem Server eingerichtet und kann dann bequem per Webinterface über einen Browser konfiguriert werden. Als, bisher einzige, Kamera wird meine Xiaomi Dafang mit Dafang_Hacks Firmware herhalten.

Installation

Zoneminder benötigt einen Lamp-Server. Was das ist – und wie man ihn installiert habe ich bereits in meinem Tutorial über den Bau & Einrichtung meines NAS-Servers beschrieben.

Wie ebenfalls im NAS-Server Tutorial erwähnt, nutze ich Ubuntu 18.04 LTS Server.
Folgende Anleitung sollte also unter den meisten aktuellen Debian Distros gleichermaßen funktionieren. Der Hauptunterschied wird in der Paketquelle liegen. Schaut dazu am Besten im Downloadbereich auf der Zoneminder-Homepage nach!
Mit etwas glück findet man dort ein fertiges Paket und kann sich einiges an Arbeit sparen.

Bevor ihr mit dem Tutorial beginnt, bitte erst einmal update&upgrade durchführen.

Sql-Server

Hier sind einige Vorbereitungen zu treffen. Diese stehen auch so in der Zoneminder-Eigenen Installationsanleitung

Löschen und Neuanlegen der Konfigurationsdatei:

sudo rm /etc/mysql/my.cnf

sudo cp /etc/mysql/mysql.conf.d/mysqld.cnf /etc/mysql/my.cnf

In die neu eingefügte Datei wird noch etwas Inhalt eingefügt, daher:

sudo nano /etc/mysql/my.cnf

Unter [mysqld] wird folgende Zeile eingefügt:

sql_mode = NO_ENGINE_SUBSTITUTION

Speichern mit STRG+O, Editor mit STRG+X verlassen.

Mit dem folgenden Befehl wird die Sql-Installation konfiguriert, es ist wichtig, dass die Frage zu der Validation des Passwortes mit NEIN beantwortet wird. Alle weiteren Fragen haben keine allzu hohe Relevanz. Ob man den root-Zugang für die Datenbanken erlauben will oder nicht, natürlich das root-Passwort usw. könnt ihr ganz individuell festlegen.

sudo mysql_secure_installation

Wenn die Konfiguration abgeschlossen ist, kann der Dienst mit

sudo systemctl restart mysql.service

neu gestartet werden. Die SQL-Nummer ist damit schon fertig.

Paket bauen & installieren

Zoneminder ist nicht in den offiziellen Paketquellen enthalten, daher muss man hier einen Umweg gehen.
Als erstes laden wir uns ein Skript herunter, das uns ein bischen Arbeit abnimmt:

wget https://raw.githubusercontent.com/ZoneMinder/ZoneMinder/master/utils/do_debian_package.sh

Das Skript muss nun noch ausführbar gemacht werden:

sudo chmod a+x do_debian_package.sh

Sollte bekannt sein:

sudo apt update

Installation benötigter Pakete:

sudo apt install devscripts gdebi-core

Nach der Paketinstallation kann nun endlich das Skript mit

./do_debian_package.sh --snapshot=stable --type=local

ausgeführt werden. Es wird nun ein Paket gebaut, das wir anschliessend installieren können und zwar mit [VERSIONSNUMMER CHECKEN]:

sudo gdebi zoneminder_1.33.1-bionic_amd64.deb

Die Installation des Paketes sollte nun einwandfrei durchlaufen. Spätestens an der Stelle wird sich zeigen, ob irgendwas mit dem Lamp-Server nicht stimmt.
Bei mir lief die Installation reibungslos – weiter geht es dann mit ein paar Kleinigkeiten, wie z.B. dem Anpassen von Rechten:

sudo chmod 740 /etc/zm/zm.conf

sudo chown root:www-data /etc/zm/zm.conf

sudo chown -R www-data:www-data /usr/share/zoneminder/

Apache2-Server

Hier sind ebenfalls noch kleinere Anpassungen vorzunehmen. Nach jedem Befehl, sofern der Mod noch nicht aktiv ist, wird man im Terminal darauf hingewiesen, dass der Apache neu gestartet werden muss. Ihr könnt die Mods aber bedenkenlos erst alle aktivieren und den Apache dann neu starten.

sudo a2enconf zoneminder

sudo a2enmod rewrite

sudo a2enmod cgi

sudo a2enmod expires

sudo a2enmod headers

Jetzt noch neu starten:

sudo systemctl restart apache2.service

Fertig. Nein, doch nicht. Denn leider will Zoneminder eine Zeitzone haben, diese muss in folgende Datei eingetragen werden:

sudo nano /etc/php7.2/apache2/php.ini

Die Datei ist recht umfangreich, daher nutzen wir die Suchfunktion von Nano um die korrekte Stelle direkt zu ermitteln, dazu STRG+W drücken und date.timezone suchen.

Der Editor sollte nun zu einer Zeile springen, die in etwa so aussieht:

;date.timezone = America / Los_Angeles

Falls ihr in Los Angeles lebt und nun hier mein Tutorial abarbeitet – Respekt. Über eine Einladung inkl. Flug für mich und meine Traumfrau würde ich mich sehr freuen.
In allen anderen Fällen wird die Zeile in

date.timezone = Europe / Berlin

abgeändert. Das Semikolon muss in jedem Fall entfernt werden, da die Zeile sonst auskommentiert bleibt. Falls ihr in einer anderen Zeitzone lebt, dann könnt ihr hier nachschauen, wie die Bezeichnung abgeändert werden muss.

Datei mit STRG+O abspeichern, Editor mit STRG+X verlassen. Apache2 neu starten.

sudo systemctl restart apache2.service

Zoneminder Service

Zum Abschluss noch die Einrichtung des Services, sodass Zoneminder auch bei jedem Systemstart seinen Dienst verrichtet, zum Abschluss wird der Dienst gestartet:

sudo systemctl enable zoneminder.service

sudo systemctl start zoneminder.service

 

Wenn alles ohne Probleme durchgelaufen ist, dann herzlichen Glückwunsch!

ZM-Webinterface

Weiter geht’s nun mit dem spaßigen Teil.
Zoneminder kann über ein Webinterface, mit einem beliebigen Browser aufgerufen werden.
Das Webinterface bietet die Möglichkeit Kameras hinzuzufügen, das aktuelle Live-Bild aufzurufen, E-Mail Benachrichtigungen einzurichten – und weitere zahllose Features.

Ich beschränke mich  an dieser Stelle mal auf das Hinzufügen meiner Dafang-Kamera. Dank der Dafang_Hacks Firmware bietet sich die Möglichkeit, das Live-Bild per RTSP-Stream zu Übertragen. Abnehmer für solch einen Stream kann zum Einen z.B. der VLC-Player sein – oder natürlich Zoneminder – darum geht’s ja hier.

Das Webinterface wird mit der IP-Adresse eures Servers und dem Anhang /zm erreicht:

http(s)://192.168.178.XX/zm

Beim ersten Aufruf des Webinterface werden euch noch einige Nutzungshinweise aufgezeigt, die ihr natürlich aufmerksam durchlesen und im Anschluss akzeptieren werdet.
Danach befindet man sich auf dem Webinterface und kann mit der Einrichtung beginnen. Am besten fängt man in den „Options“ unter „System“ an und ändert die Spracheinstellung auf de_de um.

image4

Bitte erwartet kein perfektes Ergebnis, die Übersetzung ist eher lückenhaft.

In den Optionen können noch weitere Einstellungen vorgenommen werden. Wer sich per E-Mail über Events informieren lassen möchte, kann das natürlich unter „E-Mail“ einrichten.

Ebenfalls kann der Speicherort für Aufnahmen, Bilder etc. unter „Storage“ gesetzt werden.
In meinem Fall sollen die Daten natürlich nicht auf die System-SSD geschrieben werden, sondern auf die üppige Festplatte.
Dazu muss man nichts weiter tun, als unter „Storage“ auf „Add new Storage“ zu klicken und den gewünschten Speicherort eintragen.

image5

Es sollte berücksichtig werden, dass der User www-data, unter dem Zoneminder ausgeführt wird, auch die notwendigen Schreibrechte für das Verzeichnis besitzt.

Kamera hinzufügen

Endlich was produktives!
Um eine Kamera hinzuzufügen klickt man oben in der Menüleiste auf „Konsole“ – eine nackte Übersicht erscheint

image6.jpg

Hier klickt man auf „Neuer Monitor“ um eine Kamera hinzuzufügen. Die Kamera ansich sollte zu diesem Zeitpunkt selbstverständlich schon eingerichtet sein.

image7.jpg

Hier können diverse Einstellungen vorgenommen werden. Der Funktionsumfang ist enorm.
In diesem Menüpunkt legt man zunächst den Namen der Kamera fest und wählt den Quellentyp aus. Die Dafang sendet einen entsprechenden Stream, also kann „Ffmpeg“ stehen bleiben.
Unter „Funktion“ kann noch festgelegt werden, wie Zoneminder die Kamera bzw. das gelieferte Bild behandeln soll – die Voreinstellung „Mocord“ steht dabei z.B. für Monitor+Record. Eine als „Monitor“ definierte Kamera überträgt lediglich das Bild – ohne das Zoneminder irgendwas spezielles damit anstellt.
„Modect“, für Motion+Detection definiert eine Funktion, die kleine Aufnahmen erstellt, sobald eine Bewegung im Bild erkannt wurde.

Die weiteren Funktionen und Möglichkeiten werden selbstverständlich auch im Zoneminder-User Guide ausführlich beschrieben.

image8.jpg

Meine Dafang nenne ich schlicht Dafang und als Funktion wähle ich „Monitor“ aus.
Um nun den Stream abzurufen, den die Kamera sendet, wechselt man auf den Reiter „Quelle“. Hier wird die URL zum Stream eingetragen (im Dafang_Hacks Menü einzusehen) und trägt die Größe des Bildes ein.

image9

Abschliessend nur noch „Speichern“ und schon ist die Kamera fertig eingebunden. Die Optionen können nachträglich jederzeit nach Belieben verändert werden. Um die Kernfunktion der Kamera zu testen reicht es, sie als normalen „Monitor“ in Betrieb zu nehmen.

Die Übersicht, der eingebundenen Kameras erhält man mit einem Klick auf „Log“ oben in der Menüzeile.

image10

Hier kann man nun auf den Namen der Kamera klicken, in meinem Fall Dafang, und damit das Live-Bild sowie den allgemeinen Status einsehen.

image11.jpg

Falls man sich für eine andere Funktion, wie z.B. „Modect“, entscheidet, werden die entsprechenden Events unter dem Bild chronologisch aufgelistet und sind mit einem Klick einsehbar. Zoneminder speichert dazu die entsprechende Sequenz an dem in den Optionen eingetragenen Speicherort.

Hat man mehrere Kameras eingebunden, dann kann mit einem Klick auf „Montage“ in der Menüleiste, ein Mosaik mit jedem aktuellen Kamerabild angezeigt werden.
Da ich derzeit nur die eine Kamera habe lohnt sich das für mich (noch) nicht.

Fazit

Ich war wirklich motiviert diesen Beitrag hier zu schreiben, nachdem ich die Installation von Zoneminder tatsächlich auf die Kette bekommen hatte.
Die Bedienung ist ziemlich simpel – der Funktionsumfang sehr hoch. Ich bin kein Experte was Kameras, Streams, Bildformate usw. betrifft, daher sind die meisten Einstellmöglichkeiten für mich absolutes Neuland.
Im Zoneminder User-Guide ist zum Glück alles ziemlich gut beschrieben, sodass es keine unüberwindbaren Hürden geben sollte.
Ich bin mir aber auch sicher, dass Zoneminder selbst den ambitionierten User zufrieden stellen kann.

Die Einbindung einer oder mehrerer Kameras geht ziemlich leicht von der Hand, zumindest wenn sie einen Stream liefern (so wie die Dafang). Dank Zoneminder ist man also in der Auswahl der Kameras sehr flexibel und kann auch verschiedene Fabrikate mischen und unter einem Dach vereinen – wie Eingangs bereits erwähnt.

An der (deutschen) Übersetzung sollte allerdings noch gearbeitet werden und auch das standart Theme ist jetzt kein Design-Highlight. Man kann zumindest die Optik aber durch eigene CSS-Sheets und andere Themes ein wenig aufwerten (entsprechende Kenntnisse vorausgesetzt).

Einige externe Programme bieten Schnittstellen zu Zoneminder und auch die Community lebt noch – dementsprechend gibt es regelmäßige Updates und Neuerungen.
Ich, für meinen Teil, bin begeistert von Zoneminder und empfehle es klar weiter.

Beide Daumen hoch!