Zoneminder unter eigener Domain via nginx und Debian nutzen


Software • von Sven Reifschneider • 04. Juli 2023 • 0 Kommentare
#software #anleitung #tipps #php

Zoneminder ist in der Branche weit bekannt als eine robuste und vielseitige Open-Source-Software für Überwachungskameras (CCTV). Trotz seiner zahlreichen Funktionen und Konfigurationsmöglichkeiten gibt es immer wieder Lücken in den offiziellen Anleitungen: Die Standard-Installation konzentriert sich beispielsweise auf Sub-Verzeichnisse und bietet keine vollständigen Informationen zur Einrichtung unter einer eigenen Domain. Gerade in einer so wichtigen Anwendung wie der Überwachungstechnik oder zum besseren Trennen von Services macht es Sinn, Zoneminder unter einer eigenen Domain oder Subdomain verfügbar zu machen.

Deshalb bieten wir Ihnen einen Leitfaden, der sich speziell hierauf fokussiert. Getestet und genutzt wird dies unter Debian. Auf anderen Systemen muss die Konfiguration ggf. angepasst werden, bzw. einzelne Pfade. Mit diesem Beitrag erhalten Sie eine ausführliche Schritt-für-Schritt-Anleitung zur Einrichtung von Zoneminder unter einer eigenen Domain mithilfe von nginx.

Erstellt wurde diese Anleitung für Debian 11 und Zoneminder 1.36.33.

Die nginx-Konfiguration

Um Zoneminder unter einer eigenen Domain verfügbar zu machen, bedarf es einer eigenen Server-Konfiguration. Alternativ kann auch eine bestehende Konfiguration angepasst werden, wenn die Domain nicht anderweitig verwendet wird.

Wir nutzen eine eigene Subdomain inklusive SSL-Verschlüsselung, wodurch unsere Basis-Konfiguration unter /etc/nginx/sites-enabled/zoneminder.example.com so aussieht:

server {
    listen 443 ssl http2;
    listen [::]:443 ssl http2;

    server_name zoneminder.example.com;
    ssl_certificate /etc/ssl/fullchain.pem;
    ssl_certificate_key /etc/ssl/privkey.pem;

    ssl_protocols TLSv1.2;
    ssl_prefer_server_ciphers on;
    ssl_dhparam /etc/ssl/dhparam.pem;
}

Diese kann gerne als Vorlage genommen werden. Im Server-Block muss für Zoneminder folgendes ergänzt werden. Dies gibt einerseits an, unter welchem Pfad sich die Zoneminder Ordner befinden und macht diese verfügbar.

Wir nutzen eine Standardinstallation von Zoneminder unter Debian, die Pfade sollten auf den meisten Installationen identisch sein.

Unter dem Stamm-Ordner (/) ist Zoneminder dann zukünftig erreichbar.

root /usr/share/zoneminder/www;
index index.php;

location /cgi-bin {
    gzip off;
    if_modified_since off;
    expires off;
    etag off;
    alias /usr/lib/zoneminder/cgi-bin;
    include fastcgi_params;
    fastcgi_param SCRIPT_FILENAME $request_filename;
    fastcgi_param HTTP_PROXY "";
    fastcgi_pass unix:/var/run/fcgiwrap.socket;
}

location /zm/cgi-bin {
    gzip off;
    if_modified_since off;
    expires off;
    etag off;
    alias /usr/lib/zoneminder/cgi-bin;
    include fastcgi_params;
    fastcgi_param SCRIPT_FILENAME $request_filename;
    fastcgi_param HTTP_PROXY "";
    fastcgi_pass unix:/var/run/fcgiwrap.socket;
}

location /cache {
    alias /var/cache/zoneminder/cache;
}

location / {
    gzip off;
    if_modified_since off;
    expires off;
    etag off;
    try_files $uri $uri/ /index.php?$args =404;

    location ~ /api/(css|img|ico) {
        rewrite ^/api(.+)$ /api/app/webroot/$1 break;
        try_files $uri $uri/ =404;
    }

    location /api {
        alias /usr/share/zoneminder/www/api;
        rewrite ^/api(.+)$ /api/app/webroot/index.php?p=$1 last;
    }
}

PHP-FPM Unterstützung

Falls kein allgemeines Handling von php-Dateien in nginx verfügbar ist oder PHP generell noch nicht installiert ist, muss anschließend noch folgende Location zum Server-Block hinzugefügt werden:

location ~ \.php$ {
    try_files $uri =404;
    fastcgi_split_path_info ^(.+\.php)(/.+)$;
    fastcgi_pass unix:/var/run/php/php-fpm.sock;
    fastcgi_index index.php;
    fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
    include fastcgi_params;
}

Der Pfad zum php-fpm Socket muss ggf. angepasst werden. Jedoch sollte das standardmäßig passen, wenn die Pakete php und php-fpm installiert sind. Dabei darauf achten, dass es sich mindestens um PHP8.0 handelt.

Fcgiwrap

Zoneminder nutzt für die CGI-Skripte fcgiwrap. Dazu wird das gleichnamige Paket benötigt. Dies sollte nach der Installation einen Socket unter /var/run/fcgiwrap.socket bereitstellen.

Anpassungen sind standardmäßig keine nötig. Sollte es jedoch zu CGI-Problemen kommen, kann es helfen in der Datei /etc/default/fcgiwrap am Ende DAEMON_OPTS=-c 10 zu ergänzen.

Zoneminder Konfiguration

Bevor nun die neue Konfiguration geladen wird, sollten in der bestehenden Zoneminder-Installation noch die URLs angepasst werden.

Dazu in Zoneminder gehen.

Unter Optionen -> Servers sollten Sie die folgenden Parameter aktualisieren, um den reibungslosen Betrieb sicherzustellen:

  • Url: Die neue URL, in unserem Beispiel https://zoneminder.example.com
  • PathToIndex: /index.php
  • PathToZMS: /cgi-bin/nph-zms
  • PathToApi: /api

Relaunch: nginx und Zoneminder neustarten

Nachdem die Konfigurationen sowohl für nginx als auch für Zoneminder angepasst wurden, ist der finale Schritt das Neuladen bzw. Neustarten der Dienste.

Dazu einfach systemctl reload nginx und systemctl restart zoneminder ausführen. Dabei auf Fehler achten, welche meist durch eine falsche Konfiguration zustande kommen.

Falls php-fpm oder fcgiwrap installiert wurden, am Besten noch einmal kontrollieren, dass die Sockets verfügbar sind.

Jetzt sollte Zoneminder unter der neuen Domain erreichbar sein, ebenso dessen API.

Zoneminder Mobil

Die Nutzung von Zoneminder ist primär für den PC gedacht. Wir dürfen aber nicht vergessen, dass eine Nutzung auf Mobilgeräten sehr praktisch ist, da man diese fast immer bei sich hat.

Hierbei nutzen wir seit langer Zeit die App "zmNinja". Diese wird leider nicht mehr weiterentwickelt, funktioniert jedoch nach wie vor bei uns einwandfrei. Die App integriert nahtlos Ihre Zoneminder-Installation und bietet einen bequemen Zugang zu Ihren Überwachungskameras und Aufzeichnungen.

Fazit

Die Implementierung von Zoneminder unter einer eigenen Domain ist zwar ein technisch anspruchsvolleres Unterfangen, jedoch dank unserer ausführlichen Anleitung jetzt gut machbar. Wir haben viele Stunden damit verbracht, dies zum Laufen zu bringen und Feinabstimmung zu betreiben, damit auch beispielsweise die App nahtlos funktioniert.

Mit dieser Konfiguration nutzen wir seit vielen Monaten Zoneminder vollkommen reibungslos, und Sie hoffentlich auch.

Haben Sie Fragen zu diesem Thema oder benötigen Sie weitere Unterstützung? Wir laden Sie herzlich ein, Ihre Gedanken und Fragen in den Kommentaren zu teilen. Wenn Sie professionelle Unterstützung im Bereich der CCTV-Technologie oder bei anderen IT-Herausforderungen suchen, steht Neoground GmbH als Ihr Partner für digitale Lösungen bereit. Kontaktieren Sie uns, und lassen Sie uns Ihre digitale Transformation gemeinsam vorantreiben!

Dieser Beitrag wurde mit Unterstützung von künstlicher Intelligenz (GPT-4) erstellt. Titelfoto von Lianhao Qu auf Unsplash


Sven
Über den Autor

Sven Reifschneider

Gude! Ich bin der Gründer und Geschäftsführer der Neoground GmbH, IT-Visionär und leidenschaftlicher Fotograf. Hier teile ich meine Expertise und Begeisterung für innovative IT-Lösungen, die Unternehmen in der digitalen Ära voranbringen, verflechte sie mit meiner Leidenschaft für das Visuelle und öffne den Vorhang zu einem Universum, in dem Pixel und Ästhetik gleichermaßen zuhause sind.

Mit einem Standbein in der malerischen Wetterau unweit von Frankfurt und einem Blick, der stets über den Horizont hinausgeht, lade ich Sie ein, gemeinsam die Facetten der digitalen Transformation und neuester Technologien zu entdecken. Sind Sie bereit, den nächsten Schritt in die digitale Zukunft zu gehen? Folgen Sie dem Pfad der Neugier und lassen Sie uns gemeinsam Innovationen gestalten.


Noch keine Kommentare

Kommentar hinzufügen

In deinem Kommentar können Sie **Markdown** nutzen. Ihre E-Mail-Adresse wird nicht veröffentlicht. Mehr zum Datenschutz finden Sie in der Datenschutzerklärung.