{"version":3,"file":"component---src-pages-frequently-asked-question-websocket-stream-proxy-index-mdx-7f716037c4dd7a92daaf.js","mappings":"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","sources":["webpack://instar-wiki/./src/pages/Frequently_Asked_Question/Websocket_Stream_Proxy/index.mdx"],"sourcesContent":["import * as React from 'react'\n /* @jsx mdx */\nimport { mdx } from '@mdx-js/react';\n/* @jsxRuntime classic */\n\n/* @jsx mdx */\n\nimport BreadCrumbs from 'components/Layout/BreadCrumbs';\nimport SEOHelmet from 'components/Layout/SEOHelmet';\nexport const _frontmatter = {\n \"title\": \"Proxy für den Websocket WQHD Videostream\",\n \"path\": \"/Frequently_Asked_Question/Websocket_Stream_Proxy/\",\n \"dateChanged\": \"2022-12-09\",\n \"author\": \"Mike Polinowski\",\n \"excerpt\": \"Ich habe einen 9008 und einen 9408 in Betrieb. Mit dem 9008 konnte ich immer einen Apache-Proxy verwenden, um dem MJPG-Stream eine beliebige Domain zuzuweisen. Ist es generell nicht mehr möglich, den Stream über einen Proxy zu nutzen?\",\n \"image\": \"../FAQ_SearchThumb.png\",\n \"social\": \"/images/Search/FAQ_SearchThumb.webp\",\n \"toc\": \"/images/Search/TOC_Icons/Wiki_Tiles_FAQs_white.webp\",\n \"chapter\": \"FAQs\",\n \"faq\": \"WQHD & UHD Cameras\"\n};\nconst layoutProps = {\n _frontmatter\n};\nconst MDXLayout = \"wrapper\";\nexport default function MDXContent({\n components,\n ...props\n}) {\n return \n\n \n \n \n

{`Proxy für den Websocket WQHD Videostream`}

\n

{`Q`}{`: Ich habe eine 9008 und 9408 in Betrieb. Bei der 9008 konnte ich schon immer via Apache Proxy den MJPG Stream mit einer beliebigen Domain versehen. Ist es generell nicht mehr möglich den Stream über via Proxy zu nutzen?`}

\n

{`A`}{`: Sie können die folgende NGINX-Proxy-Konfiguration verwenden, um den Videostream Ihrer Kameras sicher zum Internet durchzuleiten. Beginnen Sie mit dem `}{`Herunterladen`}{` oder Klonen des Repositorys:`}

\n
{`git`}{` clone https://github.com/mpolinowski/docker_ws_video_proxy.git`}
\n {\n /* TOC */\n }\n \n {\n /* /TOC */\n }\n

{`NGINX Konfiguration`}

\n

{`Die wichtigsten Dateien in diesem Repository sind:`}

\n
{`.`}{`\n├── certs\n│   ├── nginx-selfsigned.crt\n│   └── nginx-selfsigned.key\n├── conf.d\n│   ├── mjpeg-proxy.conf\n│   ├── ws-proxy.conf\n│   └── wss-proxy.conf\n├── nginx.conf`}
\n

{`TLS Zertifikate`}

\n

{`Beachten Sie`}{`, dass das Repository ein selbstsigniertes TLS-Zertifikat und einen Schlüssel enthält. Dieses kann zum Testen verwendet werden - oder erzeugen Sie einfach ein neues mit dem OpenSSL CLI-Tool:`}

\n
{`cd`}{` docker_ws_video_proxy/certs\nopenssl req -new -newkey rsa:4096 -x509 -sha256 -days `}{`365`}{` -nodes -out nginx-selfsigned.crt -keyout nginx-selfsigned.key`}
\n

{`Beachten Sie aber auch, dass Google Chrome ein selbstsigniertes Zertifikat für Websocket-Verbindungen ablehnt. Sie müssen sie durch von einer Zertifizierungsstelle signierte Zertifikate ersetzen, wenn Sie eine sichere Verbindung herstellen wollen.`}

\n

{`NGINX Hauptkonfiguration`}

\n

{`Die wichtigste Konfigurationsdatei für den NGINX-Proxy ist `}{`nginx.conf`}{`. Hier können Sie wählen, welche Art von Proxy Sie einrichten möchten - kommentieren Sie hier alle Konfigurationsdateien aus, die Sie nicht verwenden möchten:`}

\n

{`docker`}{`_`}{`ws`}{`_`}{`video`}{`_`}{`proxy/nginx.conf`}

\n
{`# MJPEG proxy`}{`\ninclude /etc/nginx/conf.d/mjpeg-proxy.conf`}{`;`}{`\n`}{`# Secure MJPEG proxy`}{`\n`}{`# include /etc/nginx/conf.d/mjpeg-secure-proxy.conf;`}{`\n`}{`# Websocket proxy`}{`\n`}{`# include /etc/nginx/conf.d/ws-proxy.conf;`}{`\n`}{`# Secure websocket proxy`}{`\n`}{`# include /etc/nginx/conf.d/wss-proxy.conf;`}
\n

{`Server Konfiguration`}

\n

{`Als nächstes folgen die Serverkonfigurationsdateien selbst - zum Beispiel der `}{`MJPEG Proxy`}{`-Server:`}

\n

{`docker`}{`_`}{`ws`}{`_`}{`video`}{`_`}{`proxy/conf.d/mjpeg-proxy.conf`}

\n

{`Hier ist der \"Upstream\"-Host immer die lokale IP-Adresse oder der Domänenname Ihrer IP-Kamera, gefolgt von dem HTTP-Port - z.B. \"192.168.2.120:80\":`}

\n
{`upstream mjpeghost `}{`{`}{`\n    `}{`# IP and http port of your camera`}{`\n    server `}{`192.168`}{`.2.120:80`}{`;`}{`\n`}{`}`}
\n

{`Mit dem `}{`Server Block`}{` können Sie den Port festlegen, auf dem NGINX das Video Ihrer Kamera streamen soll, z. B. `}{`8888`}{`. Der \"Server-Name\" ist die IP-Adresse oder der Domain-Name des NGINX-Host-Systems. In dem Beispiel unten streame ich das Video zu localhost - auf diese Weise ist es nur auf dem NGINX-Host selbst unter der Adresse `}{`http://127.0.0.1:8888`}{` zugänglich. Und schließlich gibt es noch den `}{`proxy_pass`}{`, mit dem Sie die `}{`MJPEG-URL`}{` nach Ihren Bedürfnissen anpassen können. Das Beispiel verwendet den Stream \"13\", der am kleinsten ist. Ändern Sie ihn bei Bedarf in `}{`/12`}{` oder `}{`/11`}{`. Und natürlich müssen Sie Ihren eigenen Benutzernamen und Ihr Passwort hinzufügen:`}

\n
{`server `}{`{`}{`\n    listen `}{`8888`}{`;`}{`\n\n    `}{`# IP of your proxy server or localhost`}{`\n    server_name `}{`127.0`}{`.0.1`}{`;`}{`\n\n    location    / `}{`{`}{`\n        proxy_pass http://mjpeghost/livestream/13?action`}{`=`}{`play`}{`&`}{`media`}{`=`}{`mjpeg`}{`&`}{`user`}{`=`}{`admin`}{`&`}{`pwd`}{`=`}{`instar`}{`;`}{`\n        proxy_http_version `}{`1.1`}{`;`}{`\n        proxy_set_header Upgrade `}{`$http_upgrade`}{`;`}{`\n        proxy_set_header Connection `}{`\"upgrade\"`}{`;`}{`\n        proxy_set_header Host `}{`$host`}{`:`}{`$server_port`}{`;`}{`\n        proxy_set_header X-Forwarded-Proto `}{`$scheme`}{`;`}{`\n        proxy_set_header X-Forwarded-For `}{`$remote_addr`}{`;`}{`\n        proxy_set_header X-Forwarded-Port `}{`$server_port`}{`;`}{`\n        proxy_set_header X-Request-Start `}{`$msec`}{`;`}{`\n    `}{`}`}{`\n`}{`}`}
\n

{`Ausführen des MJPEG-Proxys`}

\n

{`Verwenden Sie einen Volume-Mount in den NGINX-Container, um die Standardkonfiguration zu überschreiben. Stellen Sie sicher, dass `}{`/path/to/docker_ws_video_proxy`}{` auf das heruntergeladene Repository zeigt:`}

\n
{`docker run --rm --network `}{`host`}{` -v /path/to/docker_ws_video_proxy:/etc/nginx --name proxy nginx:alpine`}
\n

{`Dadurch wird der an Ihr Terminal angehängte Container ausgeführt und beim Beenden des Containers zerstört. Der NGINX-Proxy ist so konfiguriert, dass er seine Protokolle an STDOUT sendet - Sie werden also alle Zugriffsversuche und Fehlermeldungen in Ihrem Terminal sehen. Sie können den Container auch losgelöst von Ihrer Konsole ausführen:`}

\n
{`docker run -d --network `}{`host`}{` -v /path/to/docker_ws_video_proxy:/etc/nginx --name proxy nginx:alpine`}
\n

{`Um zu testen, ob es funktioniert, öffnen Sie einen Browser auf Ihrem Host-Rechner und besuchen Sie `}{`http://127.0.0.1:8888`}{` - Sie sollten den MJPEG-Stream Ihrer Kamera sehen können - `}{`ohne dass Sie sich anmelden müssen`}{`. Dies ist eine viel sicherere Methode, das Video Ihrer Kamera auf einer öffentlichen Webseite zu veröffentlichen, da der Benutzer, der auf diesen Stream zugreift, nicht in der Lage ist, die Anmeldedaten zu sehen oder CGI-Befehle an Ihre Kamera zu senden.`}

\n

{`Sicherer MJPEG Proxy`}

\n

{`Nachdem wir nun den einfachen MJPEG-Streaming-Proxy eingerichtet und zum Laufen gebracht haben, wollen wir ihn etwas komplizierter machen, indem wir TLS-Verschlüsselung hinzufügen. Wie oben erwähnt, enthält das Repository ein selbstsigniertes TLS-Zertifikat und einen Schlüssel. Ersetzen Sie diese durch Ihre eigenen - oder noch besser - besorgen Sie sich ein von einer CA signiertes Zertifikat, z. B. von Let's Encrypt.`}

\n

{`Die Änderungen, die wir an der NGINX-Konfiguration vornehmen müssen, sind recht einfach. Beginnen Sie mit der Auswahl der richtigen Konfigurationsdatei:`}

\n

{`docker`}{`_`}{`ws`}{`_`}{`video`}{`_`}{`proxy/nginx.conf`}

\n
{`# MJPEG proxy`}{`\n`}{`# include /etc/nginx/conf.d/mjpeg-proxy.conf;`}{`\n`}{`# Secure MJPEG proxy`}{`\ninclude /etc/nginx/conf.d/mjpeg-secure-proxy.conf`}{`;`}{`\n`}{`# Websocket proxy`}{`\n`}{`# include /etc/nginx/conf.d/ws-proxy.conf;`}{`\n`}{`# Secure websocket proxy`}{`\n`}{`# include /etc/nginx/conf.d/wss-proxy.conf;`}
\n

{`Öffnen Sie nun die Konfigurationsdatei und fügen Sie Ihre Informationen hinzu - genau wie in dem einfachen MJPEG-Beispiel oben - aber beachten Sie, dass der `}{`Server Block`}{` nun die Zertifikats- und Schlüsseldatei enthält (`}{`die Sie durch Ihre eigene ersetzen sollten`}{` - aber das mitgelieferte Zertifikat wird zum Testen funktionieren):`}

\n
{`# your SSL configuration`}{`\n`}{`# ssl_certificate /opt/letsencrypt/live/my.domain.com/fullchain.pem;`}{`\n`}{`# ssl_certificate_key /opt/letsencrypt/live/my.domain.com/privkey.pem;`}{`\nssl_certificate /etc/nginx/certs/nginx-selfsigned.crt`}{`;`}{` `}{`# Replace with the 2 lines above when using CA Cert`}{`\nssl_certificate_key /etc/nginx/certs/nginx-selfsigned.key`}{`;`}
\n

{`Stoppen Sie nun den NGINX-Container - falls er noch läuft - und starten Sie ihn neu:`}

\n
{`docker run --rm --network `}{`host`}{` -v /path/to/docker_ws_video_proxy:/etc/nginx --name proxy nginx:alpine`}
\n

{`Jetzt müssen Sie HTTPS verwenden, um auf das Live-Video Ihrer Kamera `}{`https://127.0.0.1:8888/`}{` zuzugreifen. Wenn Sie ein selbstsigniertes Zertifikat verwenden, wird Ihr Browser Sie darüber warnen - klicken Sie einfach auf \"Akzeptieren\".`}

\n

{`Websocket Proxy`}

\n

{`Sowohl die grundlegende als auch die sichere Websocket-Proxy-Konfiguration sind weitgehend identisch mit den obigen Beispielen. Sie sollten also keine Probleme mehr haben, die Konfigurationsdateien zu bearbeiten.`}

\n

{`Für den Zugriff auf den Websocket-Videostream benötigen Sie jedoch einen Websocket-Client - wie den hier bereitgestellten:`}

\n \n

{`Diesen können Sie in Ihre Webseite einbetten und darüber den Stream von Ihrem NGINX Proxy entgegennehmen:`}

\n \n

{`Wie bereits im Abschnitt TLS erwähnt, akzeptiert Ihr Browser keine Websocket-Verbindung (wss) mit einem selbstsignierten Zertifikat. Sie müssen ein Tool wie `}{`certbot`}{` verwenden, um ein von einer Zertifizierungsstelle signiertes Zertifikat und einen Schlüssel für Ihren Proxy zu generieren, damit er mit dem sicheren Websocket-Stream Ihrer Kamera arbeiten kann.`}

\n \n\n
;\n}\n;\nMDXContent.isMDXComponent = true;\n "],"names":["_frontmatter","layoutProps","MDXContent","components","props","mdxType","title","dateChanged","author","tag","description","image","twitter","location","pathname","locationBC","locationDE","locationFR","crumbLabel","parentName","isMDXComponent"],"sourceRoot":""}