Nightscout direkt über Domain erreichen (Proxy)

Diese Anleitung ist nicht mehr erforderlich wenn die Installation mit Nginx als Webserver erfolgt!
Nightscout auf Ubuntu VPS-Server mit Nginx

Manchmal ist es nervig und in Gastnetzwerken eventuell sogar gesperrt. Der Aufruf von Nightscout über den Port 1337.
Mittels Reverse-Proxy machen wir es möglich, einer Portsperre zu umgehen bzw. die Nightscout Installation auch ohne Porteingabe zu erreichen.
subdomain.Domain.de -> :1337


Ergänzender Hinweis zu dieser Anleitung des Reverse Proxy:
Die Weiterleitung funktioniert ohne Probleme, jedoch funktioniert mit diesem Revers Proxy mit Apache2 kein AAPS.
AAPS erzeugt einen xhr Poll Error. Eine Lösung dafür habe ich noch nicht gefunden, arbeite aber an einem Workarround zur Umstellung auf nginx.

Diese Anleitung ist nicht mehr erforderlich wenn die Installation mit Nginx als Webserver erfolgt!
Nightscout auf Ubuntu VPS-Server mit Nginx


Um Nightscout ohne Port direkt über eine Domain/Subdomain zu erreichen, muss man in der virtuell Host config einen Reverse-proxy einrichten.

Wir öffnen, wie gewohnt, unsere Console (Putty) und loggen uns ein.


Schritt 1
Im ersten Schritt kopieren wir die Standard config. Der Teil „subdomain.Domain.de“ muss durch deine Subdomain ersetzt werden.
(Soll deine ursprünglich eingerichtete Domain direkt auf Nightscout verweisen, so wird dieser Schritt nicht benötigt. Weiter mit Schritt 4)

$ sudo cp /etc/apache2/sites-available/000-default.conf /etc/apache2/sites-available/subdomain.Domain.de.conf

Mit Nano tragen wir in der config den Server Name ein

sudo nano /etc/apache2/sites-available/subdomain.Domain.de.conf

-> ServerName subdomain.Domain.de

Config speichern und schließen mit
strg+x und mit Y bestätigen

Die Konfiguration aktivieren

sudo a2ensite subdomain.Domain.de.conf

Apache2 reload

systemctl reload apache2


Schritt2

Nun tragen wir die Subdomain in die host Datei ein. Dazu wird mit Nano die Host Datei geöffnet und bearbeitet.

sudo nano /etc/hosts

Hier wird die Server-IP und danach die Subdomain eingetragen.
Mit strg+x schließen wir Nano und bestätigen mit „Y“ das die Datei gespeichert werden soll.

Danach Apache2 reloaden

sudo systemctl reload apache2


Schritt 3

Um Nightscout mit der Subdomain weiterhin auch SSL verschlüsselt zu verwenden, erstellen wir wieder mit Certbot ein SSL Zertifikat von Let´s Encrypt.

Zertifikat anfordern

$ sudo certbot --apache
–> Subdomain auswählen
–> Nach einem Moment auswählen ob alle Anfragen auf https umgeleitet werden sollen.
1 = Nein 2=Ja mit „Enter bestätigen (mit 1 beantworten).

Erfolgsmeldung erschein (Congratulations! You have successfully enabled[…])


Schritt 4

Konfiguration der vhost abändern. Dazu wird die config mit Nano geöffnet.  (Der Teil „subdomain.Domain.de“ muss durch deine Subdomain ersetzt werden.)

$ sudo nano /etc/apache2/sites-available/subdomain.Domain.de.conf

Wenn die ursprünglich verwendete Domain auf den Port umgeleitet werden soll, so muss die config der bestehenden Nightscout Domain geändert werden!

Inhalt komplett löschen und ersetzen durch:#

<VirtualHost *:80>
ServerSignature Off
ServerName subdomain.domain.de
Redirect / https://subdomain.domain.de/
</VirtualHost>

<VirtualHost *:443>

ServerName subdomain.domain.de
ServerAlias subdomaindomain.de
ServerSignature off

SSLProxyEngine On

RewriteEngine On
RewriteCond %{HTTP:Upgrade} websocket [NC]
RewriteCond %{HTTP:Connection} upgrade [NC]
RewriteRule ^/?(.*) "wss://subdomain.domain.de:1337/$1" [P,L]
RequestHeader set X-Forwarded-Proto "https"

SSLProxyVerify none
SSLProxyCheckPeerCN off
SSLProxyCheckPeerName off
SSLProxyCheckPeerExpire off
ProxyPass / https://subdomain.domain.de:1337/
ProxyPassReverse / https://subdomain.domain.de:1337/

SSLCertificateFile /etc/letsencrypt/live/subdomain.domain.de/fullchain.pem
SSLCertificateKeyFile /etc/letsencrypt/live/subdomain.domain.de/privkey.pem
</VirtualHost>

Auch hier gilt beim ersetzen „subdomain.Domain.de“ durch Deine Subdomain zu ersetzen.

Spichern mit „strg+x“ –> „Y“–>“enter“


Schritt 4

Im nächsten Schritt müssen wir uns via FTP mit dem Server verbinden und in das Verzeichnis/etc/apache2/sites-available

Dort suchen wir uns die Datei “ subdomain.Domain.de-le-ssl.conf  “ raus, mit rechtsklick auf „umbenennen“ und fügen hinter dem Dateinamen ein „.bak“ hinzu. Also in subdomain.Domain.de-le-ssl.conf.bak

Danach Apache2 Neustart

$ sudo systemctl restart apache2


Nach dem Neustart von Apache2 kann man über die Subdoamain „subdomain.Domain.de“ ohne Portangabe (:1337) die Nightscout Instanz erreichen.
Das hat zum einen den Vorteil, dass man nicht mehr :1337 nach der Domain eingeben muss und zum zweiten, dass in Gastnetzwerken mit Portsperren die Nightscout Instanz weiterhin erreichbar bleibt.