Tschüss Apache2 – Hallo NGINX

Wechsel von Apache 2 nach Nginx (enginX ausgesprochen) im laufendem Betrieb von Nightscout.

Die Nightscout Installation mit Apache 2, wie in der ursprünglichen Anleitung geschrieben, hat sich als nicht so praktikabel erwiesen.
Generell funktioniert mit Apache 2 alles, allerdings nur solange man in WLAN Netzwerken ohne Port sperren unterwegs ist.
Kommt eine Port sperre ins Spiel, dann kann man Nightscout nicht mehr aufrufen.
Wenn man nun über Apache 2 ein Portforwarding, also eine Portweiterleitung einrichtet (Anleitung hier) , funktioniert dies zwar, aber nicht mit AAPS.
AAPS wirft bei Verwendung der Portweiterleitung mit Apache 2 ein XHR-Poll Error aus und kann keine Verbindung zu Nightscout herstellen.
Da ich meine Daten behalten möchte und so wenig wie möglich neu erstellen möchte, erfolgt der wechsel im laufendem Betrieb.


VServer Empfehlung 1Blu R6 oder 1Blu R8.




Lizenz Hinweis der Verwendeten Grafiken im Beitragsbild
Karton Image by Racool_studio – Freepik.com
Vogel Image Pch.vector – Freepik.com

Nginx installieren

Im ersten Schritt wird nginx installiert

$ apt install nginx


Apache 2 deinstallieren

Den Apache 2 Service stoppen:

$ sudo service apache2 stop

Apache 2 Deinstallation durchführen:

$ sudo apt-get purge apache2 apache2-utils

Vorhandene Vorkommen löschen:

sudo rm -rf /etc/apache2
sudo rm -rf /usr/sbin/apache2
sudo rm -rf /usr/lib/apache2
sudo rm -rf /etc/apache2
sudo rm -rf /usr/share/apache2
sudo rm -rf /usr/share/man/man8/apache2.8.gz

Prüfen ob Dateien und Verzeichnisse alle gelöscht sind:

$ whereis apache2

Im Idealfall sollten alle Appache 2 dinge gelöscht sein. Ausgabe sollte so aussehen:

apache2:


Domain konfigurieren

Auch hier empfehle ich für Nightscout die Verwendung einer Subdomain mit Portweiterleitung.

Um die Hauptdomain zu konfiguieren, tragen wir in der default konfiguration den Servername ein. (Domain eintragen)

$ sudo nano /etc/nginx/sites-available/default

server_name domain.de;
server_name www.domain.de;


Subdomain konfiguieren

Die Subdomain richten wir direkt mit Portweiterleitung ein. Das erfolgt erst einmal ohne Zertifikat. Um das SSL Zertifikat kümmern wir uns im späteren Verlauf. Der Servername entsprechend deiner Subdomain geändert werden.

$ sudo nano /etc/nginx/sites-available/Sub.domain.de.conf

Unten stehenden Text kopieren und mit „strg+v“ in Putty einfügen.

server {
listen 80;

server_name Sub.domain.de;
server_name www.Sub.domain.de;

location / {
proxy_pass http://127.0.0.1:1337;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_set_header X-Forwarded-Proto "https";
}
}


Konfiguration aktivieren

Als nächstes muss die konfiguration für die Subdomain aktiviert werden.

$ sudo ln -s /etc/nginx/sites-available/Sub.domain.de.conf /etc/nginx/sites-enabled/


Zertifikat erstellen bzw. erneuern

Damit die Domains auch mit SSL Verschlüsselung aufgerufen werden, muss das Zertifikat erneuert und die automatische weiterleitung auf SSL Vewrschlüsslte Domain aktiviert werden.

Dazu muss erst Certbot für nginx installiert werden:

$ sudo apt install certbot python3-certbot-nginx

Zertifikat für Hauptdomain erneuern:

$ sudo certbot --nginx -d domain.de -d www.doamain.de

renew mit „E“ bestätigen
redirect mit „2“ bestätigen

Zertifikat für Subdomain erneuern:

$ sudo certbot --nginx -d Sub.domain.de -d www.Sub.domain.de

renew mit „E“ bestätigen
redirect mit „2“ bestätigen


Firewall nginx Freigabe

Nun muss der Firewall die Freigabe von nginx erteilt werden.

$ ufw allow 'Nginx Full'


Nightscout start.sh bearbeiten

Im nächsten Schritt muss aus der start.sh das Zertifikat entfernt werden, da dies über nginx gesteuert wird.
Dazu wechseln wir in das start.sh Verzeichnis. Wenn die Optimierung der Nightscout installation angewendet wurde, muss der Pfad entsprechend zur start.sh Datei geändert werden. Standartmäßig liegt diese im Nightscout Verzeichnis.

$ cd /home/mainuser/cgm-remote-monitor/

start.sh in Nano öffen

$ nano start.sh

In vorletzer Zeile das Zertifikat entweder mit # ausklammern oder beide Zeilen löschen. Der schnelligkeit/einfachheit habe ich es nur ausgeklammert.

#export SSL_KEY=/etc/letsencrypt/live/domain.de/privkey.pem
#export SSL_CERT=/etc/letsencrypt/live/domain.de/fullchain.pem

Damit die Änderung wirksam wird, muss der Nightscout Service neu gestartet werden.

$ sudo systemctl restart nightscout.service

Kontrolle ob Nightscout Service korrekt gestartet hat

$ sudo systemctl status nightscout.service

Ausgabe sollte so aussehen (gekürzt):

● nightscout.service – Nightscout Service
Loaded: loaded (/etc/systemd/system/nightscout.service; enabled; vendor preset: enabled)
Active: active (running) since Wed 2022-08-24 18:42:04 UTC; 2 days ago
Main PID: 3356 (start.sh)
Tasks: 12 (limit: 19660)
Memory: 156.1M
CGroup: /system.slice/nightscout.service
├─3356 /bin/bash /home/mainuser/cgm-remote-monitor/start.sh
└─3357 /home/mainuser/.nvm/versions/node/v14.18.1/bin/node server.js
[…]

Mit „strg+c“ kommt man aus der Ansicht raus.


Zertifikat neu installieren

Wie auch in der Anleitung Nightscout auf Ubuntu VPS-Server mit Nginx (neu installieren), kann ich diesen Schritt nicht Nachvollziehen, ist aber Notwendig für die korrekte Ausführung der SSL Verschlüsselung.

Wir installieren das Zertifikat für die Subdomain neu.

$ sudo certbot --nginx -d Sub.domain.de -d www.Sub.domain.de

1 reinstall auswählen
2 redirect auswählen

Damit die Änderung wirksam wird, starten wir nginx neu:

$ systemctl restart nginx


Jetzt sollte Nightscout über die Subdomain (ohne Portangabe) erreichbar sein und die Hauptdomain die nginx Testseite anzeigen.
Optional kann der Server auch einmal neu gestartet werden.


Bitte beachten, in deinen Apps muss die Domain entsprechend geändert werden!