Node-RED mit dem INSTAR Cloud Webhook

Node-RED HTTP/2 Webproxy

Wir hatten Node-RED bereits mit einem Benutzer Login abgesichert. Aber ich möchte zusätzlich noch die HTTP/2 TLS-Verschlüsselung hinzufügen. Dazu werde ich einen NGINX Ingress für den "Docker Cluster" einrichten und das neueste NGINX Docker Image verwenden:

docker pull nginx:1.21.6-alpine

NGINX Konfigurieren

Sie können diese Github Repository verwenden, um mit der NGINX-Konfiguration zu beginnen. Verwenden Sie Git, um das Repository zu klonen, oder laden Sie einfach die ZIP-Datei von Github herunter und entpacken Sie sie in das Verzeichnis /opt auf Ihrem Server:

git clone https://github.com/mpolinowski/nginx_docker_ingress.git /opt/nginx_docker_ingress

Dieses Repository bringt bereits alles mit, was wir brauchen. Wir müssen nur noch die Standard-Server-Konfigurationsdatei bearbeiten:

nano /opt/nginx_docker_ingress/conf.d/default.conf

Löschen Sie den Inhalt und ersetzen Sie ihn durch:

server {
    listen 80;
    listen [::]:80;

    server_name meine.server.adresse;

    return 301 https://$server_name$request_uri;
}


server {SQL-Logging
    listen 443 ssl http2 default_server;
    listen [::]:443 ssl;
    # ssl_certificate /opt/letsencrypt/live/my.domain.com/fullchain.pem;
    # ssl_certificate_key /opt/letsencrypt/live/my.domain.com/privkey.pem;
    include ssl/self-signed.conf; # Replace with the 2 lines above when using CA Cert
    include ssl/ssl-params.conf;
    include /etc/nginx/conf.d/header.conf;

    server_name meine.server.adresse;


    location / {
      proxy_pass http://nodered:1880/;
    }


    error_page  404 /404.html;
    error_page  500 502 503 504 /50x.html;
    location = /50x.html {
    root   /usr/share/nginx/html;
  }
}

Es gibt zwei Änderungen, die Sie hier vornehmen müssen:

  1. Ersetzen Sie beide meine.server.adresse mit dem Domainnamen oder der IP-Adresse Ihres Servers.
  2. Das Repository wird mit einem selbstsignierten Zertifikat geliefert, das in ssl/self-signed.conf eingebunden wird. Sie können dieses Zertifikat verwenden, um einfach mal loszulegen. Es wird mit der INSTAR Cloud Webhook-Funktion funktionieren. Aber Sie sollten es entweder durch Ihr eigenes selbstsigniertes Zertifikat ersetzen oder Let's Encrypt verwenden, um ein "richtiges" Zertifikat zu erhalten und es anstelle des selbstsignierten Zertifikats einzubinden.

NGINX Starten

Wir müssen nun diesen Container mit den folgenden Flags starten:

  • Öffnen der Ports 443 (HTTPS) und 80 (HTTP)
  • ein Volume-Mount für /opt/nginx_docker_ingress
  • der Container muss sich im selben virtuellen Netzwerk wie Node-RED befinden, z.B. smart:
docker run -d -p 443:443 -p 80:80 -v /opt/nginx_docker_ingress:/etc/nginx --network=smart --name ingress nginx:1.21.6-alpine

Überprüfen Sie, ob die Node-RED-Benutzeroberfläche jetzt über HTTPS zugänglich ist:

https://meine.server.adresse:443/

Wenn Sie ein selbstsigniertes Zertifikat verwenden, wird eine Warnung angezeigt, dass das Zertifikat selbstsigniert ist - akzeptieren Sie dies, um fortzufahren:

Node-RED mit dem INSTAR Cloud Webhook

Können Sie auf Node-RED über Ihren NIGNX-Ingress zugreifen? Wenn ja, fahren Sie mit der Neukonfiguration Ihres INSTAR Cloud-Kontos fort.

INSTAR Cloud Konfiguration

Alles, was hier geändert werden muss, ist der Port - er lautet jetzt 443 statt 1880. Und Sie müssen das Protokoll auf sicher einstellen - das war's:

Node-RED mit dem INSTAR Cloud Webhook

Weitere Schritte