Zoneminder unter eigener Domain via nginx und Debian nutzen


Software • by Sven Reifschneider • 04 July 2023 • 0 comments
#software #anleitung #tipps #php
info
This post is also available in English. Read in English

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
About the author

Sven Reifschneider

Greetings! I am the founder and CEO of Neoground GmbH, an IT visionary and passionate photographer. On this blog, I share my expertise and enthusiasm for innovative IT solutions that propel companies forward in the digital age, intertwined with my passion for the visual, unveiling a universe where pixels and aesthetics coexist harmoniously.

Rooted in the picturesque Wetterau near Frankfurt with a perspective that reaches beyond the horizon, I invite you to join me in exploring the facets of digital transformation and the latest technologies. Are you ready to take the next step into the digital future? Follow the path of curiosity and let's shape innovations together.


No comments yet

Add a comment

You can use **Markdown** in your comment. Your email won't be published. Find out more about our data protection in the privacy policy.