Zoneminder hinter Apache Reverse Proxy.
Möchte man Zoneminder hinter einem schon bestehenden Apache Webserver betreiben und von außen über die FQDN erreichbar machen, kann man im bestehenden Apache-Webserver, einen Reverse Proxy auf Zoneminder einrichten. Zoneminder ist dann über eine Subdomain wie z.B. zone.domain.de erreichbar. Auf dem bestehenden Apache muss dafür das Modul mod_proxy vorhanden sein.
Zunächst erstellt man auf seinem bereits bestehenden Apache-Webserver, unter /etc/apache2/sites-available/ eine Datei mit dem gewünschten Namen des Zoneminder-VHOST und editiert diese mit dem Editor seiner Wahl.
# touch
/etc/apache2/sites-available/VIRTUALHOST.conf # mcedit /etc/apache2/sites-available/VIRTUALHOST.conf |
Für einen einfachen Zoneminder-VHOST der per http erreichbar ist genügt es bereits, den nachfolgenden Abschnitt in die Datei einzutragen und diese abzuspeichern. Die individuellen Angaben wie Name, Alias, IP... müssen dabei natürlich angepasst werden.
<VirtualHost *:80>
ServerName zone.domain.de:80
ServerAlias www.zone.domain.de
ServerAdmin root@domain.de
<Proxy *>
Order deny,allow
Allow from all
</Proxy>
ProxyRequests On
ProxyPreserveHost On
ProxyPass /zm/ http://192.168.120.200/zm/
ProxyPassReverse /zm/ http://192.168.120.200/zm/
ProxyPass / http://192.168.120.200/zm/
ProxyPassReverse / http://192.168.120.200/zm/
ErrorLog /var/www/log/zone_error_log
CustomLog /var/www/log/zone_access_log combined
</VirtualHost>
Soll Zoneminder per https erreicht und z.B. das schon vorhandene Let's Encrypt Zertifikat verwendet werden,
muss der Eintrag in die /etc/apache2/sites-available/ mit den Angaben zu Port 443 erweitert
werden.
Die Zeile "Redirect permanent" ist Optional und sorgt dafür, dass Zoneminder nur über https
aufgerufen wird. Wird sie nicht verwendet, ist sowohl http wie auch https möglich.
<VirtualHost *:80>
ServerName zone.domain.de:80
ServerAlias www.zone.domain.de
ServerAdmin root@domain.de
<Proxy *>
Order deny,allow
Allow from all
</Proxy>
ProxyRequests On
ProxyPreserveHost On
ProxyPass /zm/ http://192.168.120.200/zm/
ProxyPassReverse /zm/ http://192.168.120.200/zm/
ProxyPass / http://192.168.120.200/zm/
ProxyPassReverse / http://192.168.120.200/zm/
Redirect permanent / https://zone.domain.de:443/
ErrorLog /var/www/log/zone_error_log
CustomLog /var/www/log/zone_access_log combined
</VirtualHost>
<VirtualHost *:443>
ServerName zone.domain.de:443
ServerAlias www.zone.domain.de
ServerAdmin root@domain.de
SSLEngine On
SSLCertificateFile /usr/local/ssl/certs/domain.de.pem
SSLCertificateKeyFile /usr/local/ssl/certs/domain.de.pem
Header add Strict-Transport-Security "max-age=15768000"
<Files ~ "\.(pl|cgi|shtml|phtml|php|php?)$">
SSLOptions +StdEnvVars
</Files>
<Proxy *>
Order deny,allow
Allow from all
</Proxy>
ProxyRequests On
ProxyPreserveHost On
ProxyPass /zm/ http://192.168.120.200/zm/
ProxyPassReverse /zm/ http://192.168.120.200/zm/
ProxyPass / http://192.168.120.200/zm/
ProxyPassReverse / http://192.168.120.200/zm/
SetEnvIf User-Agent ".*MSIE.*" nokeepalive ssl-unclean-shutdown downgrade-1.0 force-response-1.0
ErrorLog /var/www/log/zone_error_log.ssl
CustomLog /var/www/log/zone_access_log.ssl combined
</VirtualHost>
In jedem Fall, muss der Zoneminder-VHOST zum Abschluss aktiviert werden.
Unter Systemen auf Basis von
Debian, wie es auch Ubuntu ist, kann das sehr einfach auf der Kommandozeile mit diesem Befehl erfolgen.
# sudo a2ensite VIRTUALHOST.conf |
Alternativ kann ein Softlink erstellt und Apache neu gestartet werden.
# ln -s
/etc/apache2/sites-available/VIRTUALHOST.conf
/etc/apache2/sites-enabled/VIRTUALHOST.conf # service apache2 restart |
Das ganze funktioniert natürlich nicht nur mit Zoneminder sondern auch mit anderen Webdiensten im eigenen Netzwerk, die auf unterschiedlichen VMs oder physischen Maschinen in Betrieb sind.