Diese Übersetzuns ins Deutsche mag noch Fehler enthalten. Bitte verwenden Sie im Zweifelsfall die Englische Version. You can find this guide in English here
- Sie haben vollen SSH-Zugriff auf Ihren Server
- Das Erstellen eines Servers dauert eine Minute
- Ein Serverstandort in Deutschland ist möglich.
- Sie können eine Sicherung / einen Snapshot des Servers erstellen, um ihn zu löschen und später wiederherzustellen (spart Geld, wenn Sie ihn eine Weile nicht benötigen).
- Sie zahlen pro Stunde, die Basisversion von DO oder MVPS für 3 EUR oder 5$ pro Monat reicht für Nightscout aus
- Es gibt jede Menge Hilfe zur Installation
- Steuern und verfolgen Sie den Server über die DigitalOcean- oder MVPS-Control-Panel-Website oder alternativ über SSH.
DigitalOcean ist wahrscheinlich der bekanntere Anbieter und bietet eine breite Palette von Dienstleistungen an. Ich persönlich bevorzuge allerdings MVPS. Es ist genauso einfach und etwas günstiger.
- Registrieren Sie sich bei [DigitalOcean] an oder melden Sie sich an (https://m.do.co/c/896e26961756)
- Klicken Sie auf "Create Droplet"
- Wählen Sie unter "Distributions" Ubuntu 20.04 LTS aus
- Unter "Size" ist die kleinste 5$ -Version ausreichend (aber wir müssen die Größe während des Installationsvorgangs vorübergehend ändern. Versuchen Sie nicht, mit dem 10$-Plan zu beginnen, eine Verkleinerung auf 5$ funktioniert nicht).
- Der Rest liegt an Ihnen. Klicken Sie auf "Erstellen", um den Vorgang abzuschließen.
- Auf ähnliche Weise können Sie einen VPS auf MVPS erstellen.
- Die Basisversion für nur 3 EUR pro Monat (weniger als 30 EUR p.a. bei jährlicher Zahlungsmethode) ist ausreichend (alle Preise + MwSt.).
- MVPS verwendet europäische Serverstandorte
Öffnen Sie ein Terminal oder was auch immer Sie verwenden, um SSH-Zugriff auf einen Server zu erhalten. Wenn Sie Linux noch nicht kennen oder noch nie von SSH gehört haben, geben Sie nicht auf! Es ist einfach und Sie finden eine gute Referenz hier.
Verwenden Sie die bereitgestellten Anmeldedaten, die Sie per E-Mail erhalten haben, um eine Verbindung zum Droplet / VPS herzustellen (ich verwende *123.456.789.123 * als Ersatz für die tatsächliche IP Ihres Droplets):
ssh root@123.456.789.123
// Passwort eingeben, wenn Sie danach gefragt werden
MongoDB muss installiert und konfiguriert sein, um (a) gesichert zu sein und (b) die Datenbank für Nightscout bereitzustellen.
sudo apt-get update && apt-get upgrade -y
sudo apt install mongodb -y
mongo --port 27017
Nun befinden Sie sich in der Mongo Oberfläche. Wir erstellen jetzt einen Administrator. Denken Sie daran, was Sie für ADMIN_NAME und ADMIN_PASSWORD ausgewählt haben. Geben Sie Folgendes ein (drücken Sie einfach die Eingabetaste, bevor Sie die nächste Zeile einfügen, das Kopieren und Einfügen sollte ebenfalls funktionieren):
use admin
db.createUser({user: "ADMIN_NAME", pwd: "ADMIN_PASSWORD", roles: [ { role: "userAdminAnyDatabase", db: "admin" }] })
Die Shell sollte diesen Code und "Successfully added user" zurückgeben.
Beenden Sie die Mongo-Shell (STRG + C) und geben Sie Folgendes ein:
sudo nano /etc/mongodb.conf
Suchen Sie die Zeile, in der steht:
#auth = true
und entfernen Sie das #
(Speichern und beenden Sie eine Datei, die Sie mit nano über "STRG" + "O", "Enter", "STRG" + "X" geöffnet haben.)
Starten Sie Mongo neu:
sudo service mongodb restart
Jetzt melden wir uns wieder als Administrator bei der Mongo-Shell an und erstellen unsere Nightscout-Datenbank, wobei MONGO_NS_DB der Name der von uns erstellten Datenbank ist, MONGO_NS_USER der Benutzer ist, der auf diese Datenbank zugreifen kann, und MONGO_NS_PASSWORD sein Passwort ist. Passen Sie Benutzer und Passwort an Ihre Bedürfnisse an (src):
mongo -u ADMIN_NAME -p --authenticationDatabase admin
// ADMIN_PASSWORD eingeben
Geben Sie in die Mongo-Shell Folgendes ein:
use MONGO_NS_DB
db.createUser({user: "MONGO_NS_USER", pwd: "MONGO_NS_PASSWORD", roles: [ { role: "readWrite", db: "MONGO_NS_DB" }]})
Die Shell sollte "Successfully added user" zurückgeben. Beenden Sie die Mongo-Shell erneut über STRG + C oder geben Sie "exit" ein.
Sie sollten sich als der Benutzer anmelden können, den Sie gerade erstellt haben:
mongo -u MONGO_NS_USER -p --authenticationDatabase MONGO_NS_DB
// MONGO_NS_PASSWORD eingeben
exit (STRG + C)
Fügen Sie einen Nicht-Root-Benutzer mit Administratorrechten hinzu. Versuchen Sie nicht, Nightscout als Root-Benutzer auszuführen, es funktioniert jetzt. Ersetzen Sie mainuser
durch einen Namen Ihrer Wahl.
sudo adduser mainuser
Nachdem Sie das Passwort festgelegt und überprüft haben, müssen Sie keine weiteren Informationen eingeben. Drücken Sie einfach weiter die Eingabetaste. Als Nächstes fügen wir den neuen Benutzer zur Liste der administrativen Benutzer hinzu:
sudo usermod -aG sudo mainuser
Jetzt melden wir uns mit logout
ab und mit dem soeben erstellten Konto wieder über SSH am Server an.
ssh mainuser@IP-Nummer
Installieren Sie nodejs und npm:
curl -sL https://deb.nodesource.com/setup_12.x | sudo -E bash -
sudo apt-get install nodejs -y
Klonen Sie Nightscout und erstellen Sie einen Ordner-Link mit dem Namen "Nightscout", um das den Ordnerzugriff später etwas zu erleichtern:
git-clone https://github.com/nightscout/cgm-remote-monitor.git
sudo ln -s cgm-remote-monitor nightscout
cd nightscout
Installieren Sie jetzt Nightscout:
npm install
Wenn Sie sich für den
- Geben Sie über SSH "sudo shutdown now" ein, um das Droplet auszuschalten
- Gehen Sie auf der DigitalOcean-Website zu "Droplets"
- Öffne dein Nightscout-Droplet
- Gehen Sie zu "resize" (Menü auf der linken Seite)
- Klicken Sie auf den 10-Dollar-Plan und warten Sie, bis der Vorgang abgeschlossen ist
- In der oberen rechten Ecke befindet sich ein Schieberegler mit der Aufschrift "Off". Klicken Sie auf den Schieberegler, um das Droplet "On" einzuschalten
- Melden Sie sich erneut über SSH an und wiederholen Sie die folgenden Schritte:
cd cgm-remote-monitor
npm installieren
Anschließend können Sie das Droplet wieder ausschalten, zur DigitalOcean-Site zurückkehren und den Plan zurücksetzen (wählen Sie den 5-Dollar-Plan aus, schalten Sie das Droplet ein und stellen Sie die Verbindung über SSH wieder her).
Bearbeiten Sie die Konfigurationsdatei:
nano my.env
Fügen Sie je nach Bedarf die folgenden und weitere Variablen ein:
MONGO_CONNECTION=mongodb://MONGO_NS_USER:MONGO_NS_PASSWORD@127.0.0.1:27017/MONGO_NS_DB
BASE_URL=http://123.456.789.123:1337
DISPLAY_UNITS=mg
DEVICESTATUS_ADVANCED="true"
mongo_collection="entries"
API_SECRET=NIGHTSCOUT_API_SECRET
ENABLE=careportal%20openaps%20iob%20bwp%20sage%20cage%20basal%20pump%20maker
NIGHTSCOUT_API_SECRET ist etwas Langes, das Sie selbst auswählen können.
Die BASE_URL besteht aus der Droplet-IP und dem Port 1337, auf dem die Nightscout-App ausgeführt wird (stellen Sie sicher, dass Sie dort : 1337
an Ihre IP anhängen).
In meinem Fall musste ich verschiedene Werte mit "%20" anstelle von Leerzeichen oder " verbinden, damit es funktioniert.
Speichern und wieder schließen (STRG
+ O
, Enter
, STRG
+ X
).
sudo npm install pm2 -g
Starten Sie cgm-remote-monitor mit pm2:
env $ (cat my.env) PORT = 1337 pm2 start server.js
Lassen Sie pm2 cgm-remote-monitor beim Start starten
pm2 Start
Dadurch erhalten Sie einen Befehl, den Sie als Superuser ausführen müssen, damit pm2 die App beim Neustart starten kann.
Der Befehl lautet wie folgt:
sudo su -c "env PATH=$PATH:/usr/bin pm2 startup ..."
Kopieren Sie den im Terminal angegebenen Befehl, fügen Sie ihn ein und führen Sie ihn aus. Damit sich pm2 daran erinnert, welche Apps beim nächsten Neustart gestartet werden sollen:
pm2 save
Nightscout kann jetzt so gestartet, gestoppt und neu gestartet werden (das müssen Sie jetzt nicht tun):
pm2 start server
pm2 stop server
pm2 restart server
Beachten Sie, dass Sie jedes Mal, wenn Sie Änderungen an Ihrer my.env-Datei (Ihren Nightscout-Umgebungsvariablen) vornehmen, die Instanz server.js stoppen, löschen und neu starten müssen. Gehen Sie zu Ihrem Ordner / cgm-remote-monitor und:
pm2 list
zeigt Ihre aktuellen Prozesse und deren ID-Nummer an.
pm2 stop 0
stoppt den aktuellen Serverprozess mit der ID "0".
pm2 delete 0
löscht den Serverprozess mit der ID "0".
(Sie müssen auch pm2 unstartup systemd
verwenden und den Startvorgang erneut wiederholen. Auch hier wieder die angegebene Zeile kopieren, einfügen und ausführen.)
Starten Sie dann cgm-remote-monitor erneut mit pm2:
env $ (cat my.env) PORT = 1337 pm2 start server.js
Möglicherweise können Sie Nightscout bereits verwenden. Dies ist die URL (wie BASE_URL in my.env):
http://123.456.789.123:1337
Die meisten Browser erlauben diese unsichere http-Verbindung nicht. Daher sollten Sie die nächsten Schritte ausführen.
Da es sehr empfohlen wird, nicht HTTP, sondern HTTPS für Ihre Nightscout-Instanz zu verwenden, füge ich die Schritte hinzu, um eine HTTPS-Adresse zu erhalten. Dazu benötigen Sie eine Domain - Domains kosten nur ein paar Euro pro Jahr - oder Sie verwenden eine Subdomain einer Domain, die Sie bereits besitzen. Das habe ich getan. Befolgen Sie zum Anhängen der Domain an Ihr Droplet die DigitalOcean-Anleitungen. Der Prozess unterscheidet sich in MVPS nur geringfügig. Ein A-Eintrag, der auf die IP-Adresse verweist, und 2 NS-Einträge in Ihrer Domain / Subdomain sind erforderlich.
Installieren Sie nginx, um die Site zu sichern und sie im gesicherten Zustand funktionsfähig zu machen:
sudo apt install certbot python3-certbot-nginx -y
Konfigurieren Sie nginx für die Verwendung Ihrer Domain:
sudo nano /etc/nginx/sites-available/default
Dann musste ich die folgenden 2 Schritte ausführen.
- Anfangs habe ich MYDOMAIN zur Standardkonfiguration hinzugefügt:
server {
listen 80;
...
server_name MYDOMAIN.COM;
...
Testen Sie über sudo nginx -t
, ob die Konfigurationsdatei gültig ist. Starten Sie anschließend nginx
neu:
sudo service nginx neu starten
Sie müssen die Firewall ufw
zuerst aktivieren (vorher port 22 und ssh erlauben, sonst bricht die Verbindung ab!)
sudo ufw allow ssh && sudo ufw allow 22
sudo ufw enable
(Sie können die Frage mit "y" bestätigen, da nun ssh an Port 22 zulässig ist).
Konfigurieren Sie die Firewall "ufw", um die erforderlichen Ports zu öffnen (verwenden Sie "sudo ufw app list", um zu überprüfen, ob nginx für ufw als App sichtbar ist):
sudo ufw allow 'Nginx Full' && sudo ufw allow 443 && sudo ufw allow 1337 && sudo ufw allow 1337/tcp
sudo ufw status
sudo service nginx restart
Erhalten eines SSL-Zertifikats mit diesem Befehl (Antwort: a (gree); no; 2):
sudo certbot --nginx -d MYDOMAIN.COM
Verbesserung der SSL-Sicherheit durch Generierung einer starken Diffie-Hellman-Gruppe ([src] (https://gist.github.com/johnmales/1b3c927f2a56aae640b4b2cd0298b1e7)):
sudo openssl dhparam -out /etc/ssl/certs/dhparam.pem 2048
Stellen Sie sicher, dass certbot sich um die Erneuerung Ihres Zertifikats kümmert:
ssudo certbot renew --dry-run
Starten Sie den Dienst neu:
sudo service nginx restart
Sie können überprüfen, wie sicher Ihre Website über https://www.ssllabs.com/ssltest/index.html ist.
- Zu diesem Zeitpunkt habe ich mehrere Website-Fehler (Umleitung usw.) erhalten und keine Website-Antwort erhalten. Also musste ich die Nginx-Standarddatei erneut konfigurieren:
ssudo nano /etc/nginx/sites-available/default
Ich musste diese Zeilen im Standortbereich des 443-Servers hinzufügen:
server {
listen [::]:443 ssl ipv6only=on; # managed by Certbot
listen 443 ssl; # managed by Certbot
server_name MYDOMAIN.COM;
... (a few lines managed by Certbot)
location / {
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
# Fix the “It appears that your reverse proxy set up is broken" error.
proxy_pass http://localhost:1337;
proxy_read_timeout 90;
proxy_redirect http://localhost:1337 https://MYDOMAIN.COM;
}
}
Nightscout sollte jetzt über ihre Domain (ohne 1337-Portangabe) erreichbar sein
https://MYDOMAIN.COM
Wenn Sie auf Fehler wie "502 Bad Gateway" stoßen, ist der Prozess wahrscheinlich fehlgeschlagen, da die pm2-Installation fehlgeschlagen ist und der NS-Server noch nicht aktiv ist. Um die Nightscout-Installation zu testen, versuchen Sie es ohne pm2:
cd nightscout
screen
sudo env $ (cat my.env) PORT = 1337 node server.js
Sie können den Bildschirm mit "STRG + A STRG + D" verlassen und mit "screen -x" erneut öffnen oder den Prozess mit "STRG + C" beenden.
Im Basisabonnement eines Droplets können Sie jederzeit einen Schnappschuss Ihres ArbeitsDroplets erstellen. Das Speichern eines Schnappschusses würde ungefähr 20 Cent pro Monat kosten. Alternativ können Sie automatische wöchentliche Backups für 1 $ pro Monat hinzufügen.
Möglicherweise möchten Sie die Mongo-Datenbank sichern und / oder auf ein anderes Droplet übertragen. Führen Sie dazu die folgenden Schritte aus:
Melden Sie sich als mainuser
beim Server an (über ssh oder Konsole).
Erstellen Sie einen Sicherungsordner:
sudo mkdir backup
Jetzt können Sie diesen Befehl ausführen:
sudo mongodump --user MONGO_NS_USER --password MONGO_NS_PASSWORD --db MONGO_NS_DB --out Backup /
Es ist jedoch besser, zuerst den Server zu stoppen, ein Backup zu erstellen und den Server neu zu starten. Verwenden Sie daher das folgende Skript "backup.sh", um diesen Prozess auszuführen.
sudo mongorestore --db = MONGO_NS_DB --username = MONGO_NS_USER --password = MONGO_NS_PASSWORD backup / MONGO_NS_DB
Um Dateninkonsistenzen in der MongoDB zu vermeiden, ist es ratsam, den Nightscout-Prozess zu stoppen, bevor Sie mongodump / mongorestore ausführen. Sie können die unten angegebenen Shell-Skripte im Sicherungsverzeichnis verwenden, die den Prozess über pm2 stoppen, die Sicherung oder Wiederherstellung ausführen und den Prozess dann erneut starten.
Erstellen Sie eine Datei mit
sudo nano backup.sh
Kopieren Sie den unten genannten Inhalt und fügen Sie ihn in das Skript ein. Beenden Sie ihn mit STRG + x und bestätigen Sie das Speichern.
Machen Sie dasselbe mit sudo nano restore.sh
Wenn Sie Backups mit einer täglichen / wöchentlichen Routine erstellen möchten, empfehle ich, der crontab des Root-Benutzers eine Zeile hinzuzufügen:
sudo nano /etc/crontab
und fügen Sie eine Zeile hinzu, die auf ein angepasstes Sicherungsskript verweist (siehe unten backupsu.sh
):
0 9 * * * root /home/mainuser/backup/backupsu.sh
Machen Sie alle Skripte ausführbar mit
sudo chmod + x * .sh
Bitte beachten Sie, dass beide Skripte davon ausgehen, dass die Sicherheitsauthentifizierung der MONGO_NS_DB wie oben beschrieben aktiviert wurde.
Die ursprüngliche Quelle war von (https://gist.github.com/frauzufall/c69f4a76730e3eb24e7a582d636765df).