Für den produktiven Einsatz von Enginsight ist eine verschlüsselte Verbindung über HTTPS zwingend notwendig.
Dazu installieren und konfigurieren Sie nginx auf dem Applikationsserver. Bei der automatischen Installation von Enginsight ist nginx bereits installiert.
So erhalten Sie den folgenden Aufbau:
Container Ports: 80, 8080
interne Ports: 81, 82 (127.0.0.1:81, 127.0.0.1:82)
Sie brauchen zwei Domains, die auf die IP-Adresse des Applikationsservers zeigen:
ngs-api.domain.de (Port 80)
ngs-app.domain.de (Port 443)
Wenn Sie ein eigenes Zertifikat besitzen, können Sie es nutzen. Alternativ empfehlen wir die Nutzung von Let's Encrypt.
nginx installieren (nur bei manueller Installation)
Haben Sie eine manuelle Installation durchgeführt, installieren Sie zunächst nginx. Bei einer automatischen Installation können Sie diesen Schritt überspringen.
Interne Ports definieren
Defnieren Sie in der docker-compose.yml
für die Benutzeroberfläche (ui-m1) und API (server-m2) einen internen Port.
1. Navigieren Sie in /opt/enginsight/enterprise
Copy cd /opt/enginsight/enterprise
2. Öffnen Sie docker-compose.yml
.
Copy nano docker-compose.yml
3. Passen Sie die Ports an.
Copy ui-m1:
image: registry.enginsight.com/enginsight/ui-m1:x.x.x
ports:
- "127.0.0.1:81:80"
restart: always
volumes:
- "./conf/ui-m1/environment.js.production:/opt/enginsight/ui-m1/config/environment.js"
server-m2:
image: registry.enginsight.com/enginsight/server-m2:x.x.x
networks:
- redis
- mongodb
ports:
- "127.0.0.1:82:8080"
4. Speichern Sie die Datei (Strg+o) und bestätigen Sie den Speicherprozess. Schließen Sie nano (Strg+x).
5. Führen Sie setup.sh
aus, damit die Änderungen wirksam werden.
Let's Encrypt einrichten
Wollen Sie ein eigenes Zertifikat nutzen, überspringen Sie die folgenden Schritte.
1. Passen Sie die Konfiguration von nginx an. Öffnen Sie die Konfigurationsdatei.
Automatische Installation
Copy nano /etc/nginx/sites-available/ngs.conf
Manuelle Installation
Copy nano /etc/nginx/sites-available/default
2. Nutzen Sie die folgende Vorlage und setzen Sie Ihre Domain ein.
Copy server {
listen 80;
listen [::]:80;
location ~ /.well-known {
allow all;
}
location / {
return 302 https://ngs-api.domain;
}
root /var/www/ngs-api.domain;
server_name ngs-api.domain;
}
server {
listen 80;
listen [::]:80;
location ~ /.well-known {
allow all;
}
location / {
return 302 https://ngs-app.domain;
}
root /var/www/ngs-app.domain;
server_name ngs-app.domain;
}
3. Rufen Sie den Status von nginx ab und prüfen Sie, ob die Änderung erfolgreich war.
4. Starten Sie nginx neu.
Copy service nginx restart
5. Installieren Sie Certbot.
Copy sudo apt-get install certbot
6. Legen Sie für jede Domain einen Ordner an.
Copy mkdir -p /var/www/ngs-api.domain.de
mkdir -p /var/www/ngs-app.domain.de
7. Erstellen Sie das Zertifikat.
Copy certbot certonly --rsa-key-size 4096 --webroot -w /var/www/ngs-api.domain.de -d ngs-api.domain.de
certbot certonly --rsa-key-size 4096 --webroot -w /var/www/ngs-app.domain.de -d ngs-app.domain.de
8. Generieren Sie die Diffie-Hellman Parameter.
Copy openssl dhparam -out dhparam.pem 2048
Zertifikate und SSL/TLS in nginx konfigurieren
Mit Let's Encrypt
Passen Sie die Konfiguration von nginx an.
1. Öffnen Sie die Konfigurationsdatei.
Automatische Installation
Copy nano /etc/nginx/sites-available/ngs.conf
Manuelle Installation
Copy nano /etc/nginx/sites-available/default
2. Nutzen Sie die folgende Vorlage und setzen Sie Ihre Domain ein.
Copy map $http_upgrade $connection_upgrade {
default upgrade;
'' close;
}
server {
listen 443 ssl http2;
listen [::]:443 ssl http2;
server_name ngs-app.domain.de;
ssl_protocols TLSv1.2;
ssl_prefer_server_ciphers on;
ssl_ciphers "ECDHE+AESGCM+AES256";
ssl_ecdh_curve secp384r1;
ssl_session_cache shared:SSL:10m;
ssl_session_tickets off;
ssl_stapling on;
ssl_stapling_verify on;
resolver 8.8.8.8 8.8.4.4 valid=300s;
resolver_timeout 5s;
ssl_dhparam /etc/nginx/dhparam.pem;
ssl_certificate /etc/letsencrypt/live/ngs-app.domain.de/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/ngs-app.domain.de/privkey.pem;
client_max_body_size 200m;
location / {
proxy_pass http://127.0.0.1:81;
proxy_set_header Host $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-Proto "https";
proxy_set_header X-Forwarded-Ssl "on";
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection $connection_upgrade;
}
}
server {
listen 443 ssl http2;
listen [::]:443 ssl http2;
server_name ngs-api.domain.de;
ssl_protocols TLSv1.2;
ssl_prefer_server_ciphers on;
ssl_ciphers "ECDHE+AESGCM+AES256";
ssl_ecdh_curve secp384r1;
ssl_session_cache shared:SSL:10m;
ssl_session_tickets off;
ssl_stapling on;
ssl_stapling_verify on;
resolver 8.8.8.8 8.8.4.4 valid=300s;
resolver_timeout 5s;
ssl_dhparam /etc/nginx/dhparam.pem;
ssl_certificate /etc/letsencrypt/live/ngs-api.domain.de/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/ngs-api.domain.de/privkey.pem;
client_max_body_size 200m;
location / {
proxy_pass http://127.0.0.1:82;
proxy_set_header Host $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-Proto "https";
proxy_set_header X-Forwarded-Ssl "on";
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection $connection_upgrade;
}
}
3. Rufen Sie den Status von nginx ab und prüfen Sie, ob die Änderung erfolgreich war.
4. Starten Sie nginx neu.
Copy service nginx restart
Mit eigenem Zertifikat
Achten Sie beim Zertifikat bitte darauf, dass es im PEM Format vorliegt. Wenn nicht, konvertieren Sie das Zertifikat zunächst in das PEM Format.
Passen Sie die Konfiguration von nginx an.
1. Öffnen Sie die Konfigurationsdatei.
Automatische Installation
Copy nano /etc/nginx/sites-available/ngs.conf
Manuelle Installation
Copy nano /etc/nginx/sites-available/default
2. Nutzen Sie die folgende Vorlage und setzen Sie Ihre Domain und die Pfade zu den Zertifikaten ein.
Copy map $http_upgrade $connection_upgrade {
default upgrade;
'' close;
}
server {
listen 443 ssl http2;
listen [::]:443 ssl http2;
server_name ngs-app.domain.de;
ssl_protocols TLSv1.2;
ssl_prefer_server_ciphers on;
ssl_ciphers "ECDHE+AESGCM+AES256";
ssl_ecdh_curve secp384r1;
ssl_session_cache shared:SSL:10m;
ssl_session_tickets off;
ssl_stapling on;
ssl_stapling_verify on;
resolver 8.8.8.8 8.8.4.4 valid=300s;
resolver_timeout 5s;
# ssl_dhparam /etc/nginx/dhparam.pem;
ssl_certificate /<Pfad>/fullchain.pem;
ssl_certificate_key /<Pfad>/privkey.pem;
client_max_body_size 200m;
location / {
proxy_pass http://127.0.0.1:81;
proxy_set_header Host $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-Proto "https";
proxy_set_header X-Forwarded-Ssl "on";
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection $connection_upgrade;
}
}
server {
listen 443 ssl http2;
listen [::]:443 ssl http2;
server_name ngs-api.domain.de;
ssl_protocols TLSv1.2;
ssl_prefer_server_ciphers on;
ssl_ciphers "ECDHE+AESGCM+AES256";
ssl_ecdh_curve secp384r1;
ssl_session_cache shared:SSL:10m;
ssl_session_tickets off;
ssl_stapling on;
ssl_stapling_verify on;
resolver 8.8.8.8 8.8.4.4 valid=300s;
resolver_timeout 5s;
# ssl_dhparam /etc/nginx/dhparam.pem;
ssl_certificate /<Pfad>/fullchain.pem;
ssl_certificate_key /<Pfad>/privkey.pem;
client_max_body_size 200m;
location / {
proxy_pass http://127.0.0.1:82;
proxy_set_header Host $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-Proto "https";
proxy_set_header X-Forwarded-Ssl "on";
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection $connection_upgrade;
}
}
3. Rufen Sie den Status von nginx ab und prüfen Sie, ob die Änderung erfolgreich war.
4. Starten Sie nginx neu.
Copy service nginx restart