-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathreadme
402 lines (268 loc) · 11 KB
/
readme
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
Nightscout auf Ubuntu VPS-Server mit Nginx
https://www.michael-schloemp.de/2022/08/27/nightscout-auf-ubuntu-vps-server-mit-nginx/
Nach erfolgreicher Installation des Servers beginnen wir mit den Vorbereitungen.
Login mit Putty selbstverständlich vorausgesetzt.
Um Syntaxfehler auszuschließen empfehle ich zur individuellen Änderung der Daten den „Programmers Notepad“.
In Text verabeitenden Programmen wie z.B. WordPad von Windows, kann es zu Problemen und entsprechenden Fehlern kommen.
Apache 2 deinstallieren
Zunächst wird Apache 2 deinstalliert, dazu stoppen wir den Apache Service.
$ sudo service apache2 stop
Deinstallation durchführen:
$ sudo apt-get purge apache2 apache2-utils
ebenfalls vorhandene Reste 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
Nach Dateien und Verzeichnisse zum Apache finden
$ whereis apache2
Sollten noch Verzeichnisse Angezeigt werden, diese ebenfalls löschen.
Ubuntu aktualisieren
$ apt update
Wenn Updates vorhanden sind, diese installieren
$ apt upgrade
Wichtige Komponenten installieren
Firewall (Einrichtung der Firewall erfolgt später):
$ apt install ufw
Nginx:
$ apt install nginx
Nano:
$ apt-get install nano
Git:
$ apt install git
Python:
$ apt install python
GCC, falls nicht schon vorhanden:
$ apt install gcc
MongoDB installieren
$ apt install mongodb
Nach erfolgreicher Installation prüfen den Mongo DB status:
$ systemctl status mongodb
MongoDB sollte active sein, nun Prüfen wir die Verbindfung:
$mongo --eval 'db.runCommand({ connectionStatus: 1 })'
Ausgabe:
MongoDB shell version v3.6.8
connecting to: mongodb://127.0.0.1:27017
Implicit session: session { „id“ : UUID(„e3c1f2a1-a426-4366-b5f8-c8b8e7813135“) }
MongoDB server version: 3.6.8
{
„authInfo“ : {
„authenticatedUsers“ : [ ],
„authenticatedUserRoles“ : [ ]
},
„ok“ : 1
}
Mongo Datenbank erstellen
(„benutzername“ „passwort“ nach Wunsch ändern und merken/aufschreiben)
$ mongo
> use Nightscout
> db.createUser({user: "benutzername", pwd: "passwort", roles:["readWrite"]})
> quit()
Nutzer erstellen
Als nächstes wird ein neuer Ubuntu Benutzer erstellt (Mainuser=Benutzername).
Neuen Benutzer anlegen:
$adduser mainuser
mainuser Root Berechtigung erteilen:
$usermod -aG sudo mainuser
Berechtigung prüfen:
$su mainuser
grep '^sudo' /etc/group
Als Mainuser eingeloggt bleiben!
Nodejs installieren
$ sudo apt install nodejs
$ sudo apt install build-essential checkinstall
$ sudo apt install libssl-dev
$ wget -qO- https://raw.githubusercontent.com/creationix/nvm/v0.33.8/install.sh | bash
– restart konsole – login mit mainuser –
$ source /etc/profile
$ nvm ls-remote
$ nvm install 14.18.1
$ nvm list
$ nvm use 14.18.1
NPM installieren
$ sudo apt install npm
Git Clonen
Prüfen in welchem Verzeichnis man sich befindet:
$ pwd
> /home/mainuser
Wenn nicht im home/mainuser verzeichnis
§ cd /home/mainuser
Git Kopieren/Clonen
$ git clone https://github.com/nightscout/cgm-remote-monitor.git
$ cd cgm-remote-monitor
$ npm install
Nach der Installation
$ nano start.sh
folgenden Text einfügen und speichern. „benutzer““passwort“ der MongoDatenbank ändern/angeben, API_Secret wunschgemäß Angeben, Base-Url ggf. ändern. Welche Plugins/Module benötigt werden hängt vom Anwender individuell ab.
Die hier aufgeführten Plugins/Module sind für mich Optimal. Eine Auflistung der möglichen Plugins gibt´s auf github
https://github.com/nightscout/cgm-remote-monitor#plugins :
#!/bin/bash
# environment variables
export DISPLAY_UNITS="mg/dl"
export MONGO_CONNECTION="mongodb://benutzer:passwort@localhost:27017/Nightscout"
export BASE_URL="127.0.0.1:1337"
export API_SECRET="12-stellige-API-Secret-Code"
export PUMP_FIELDS="reservoir battery status"
export DEVICESTATUS_ADVANCED=true
export ENABLE="careportal loop iob cob openaps pump bwg rawbg basal cors direction timeago devicestatus ar2 profile boluscalc food sage iage cage alexa basalprofile bgi directions bage upbat googlehome errorcodes reservoir battery openapsbasal"
export TIME_FORMAT=24
export INSECURE_USE_HTTP=true
export LANGUAGE=de
export EDIT_MODE=on
export PUMP_ENABLE_ALERTS=true
export PUMP_FIELDS="reservoir battery clock status"
export PUMP_RETRO_FIELDS="reservoir battery clock"
export PUMP_WARN_CLOCK=30
export PUMP_URGENT_CLOCK=60
export PUMP_WARN_RES=50
export PUMP_URGENT_RES=10
export PUMP_WARN_BATT_P=30
export PUMP_URGENT_BATT_P=20
export PUMP_WARN_BATT_V=1.35
export PUMP_URGENT_BATT_V=1.30
export OPENAPS_ENABLE_ALERTS=false
export OPENAPS_WARN=30
export OPENAPS_URGENT=60
export OPENAPS_FIELDS="status-symbol status-label iob meal-assist rssi freq"
export OPENAPS_RETRO_FIELDS="status-symbol status-label iob meal-assist rssi"
export LOOP_ENABLE_ALERTS=false
export LOOP_WARN=30
export LOOP_URGENT=60
export SHOW_PLUGINS=careportal
export SHOW_FORECAST="ar2 openaps"
# start server
/home/mainuser/.nvm/versions/node/v14.18.1/bin/node server.js
Speichern und beenden mit: strg+X - Y - enter
$ chmod 775 start.sh
$ ./start.sh
Nach Erfolgsmeldung strg+c
Nightscout Service einrichten
Beim Nightscout Service einrichten gibt es zum „Type“ verschiedene Aussagen. Ich nutze von beginn an dem Type „simple“.
In diversen Foren wird der Typ „forked“ empfohlen. Der Type „simple“ sollte normalerweise reichen. Startet Nightscout nicht, so kann man den Type nachträglich noch auf „forked“ ändern. Nach jeder änderung des Nightscout Service oder der start.sh Datei muss der Nightscout Service neu gestartet werden (sudo systemctl restart nightscout.service)
$ sudo nano /etc/systemd/system/nightscout.service
einfügen und speichern:
[Unit]
Description=Nightscout Service
After=network.target
[Service]
Type=simple
WorkingDirectory=/home/mainuser/cgm-remote-monitor
ExecStart=/home/mainuser/cgm-remote-monitor/start.sh
[Install]
WantedBy=multi-user.target
Speichern und beenden mit: „strg+X“ – „Y“ – „enter“
Reload systemd:
$ sudo systemctl daemon-reload
Nigtscout Service aktivieren und starten:
$ sudo systemctl enable nightscout.service
$ sudo systemctl start nightscout.service
Nightscout Service Status anzeigen lassen:
$ sudo systemctl status nightscout.service
Ausgabe:
● nightscout.service – Nightscout Service
Loaded: loaded (/etc/systemd/system/nightscout.service; enabled; vendor preset: enabled)
Active: active (running)
[..]
Domain dem Host zuweisen
(Hauptdomain und eine Subdomain für ns).
Damit Nightscout nicht sofort von fremden über die Hauptdomain gefunden wird, verwende ich eine Subdomain.
$ sudo nano /etc/hosts
[…]
IP.deines.Servers Domain.de
IP.deines.Servers Sub.domain.de
[…]
Speichern mit „strg+X“ – „Y“ – „enter“
Eine Konfiguration für Hauptdomain und Subdomain anlegen
Für die Hauptdomain konfiguieren wir die eine neue konfigurationsdatei.
sudo unlink /etc/nginx/sites-enabled/default
$ sudo nano /etc/nginx/sites-available/domain.de.conf
server {
listen 80 default_server;
listen [::]:80 default_server;
root /var/www/html;
index index.html index.htm index.nginx-debian.html;
server_name domain.de;
location / {
try_files $uri $uri/ =404;
}
}
sudo ln -s /etc/nginx/sites-available/doamin.de.conf /etc/nginx/sites-enabled/
Als nächstes die Subdomain einrichten (weiterleitung auf Port unverschlüsselt)
$ sudo nano /etc/nginx/sites-available/Sub.domain.de.conf
Diesen Text kopieren, server_name auf deine Subdomain vorher ändern:
server {
listen 80;
server_name Sub.domain.de;
server_name www.sub.doamin.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";
}
}
Als nächstes die Nginx Konfiguration für die Subdoamin aktivieren:
$ sudo ln -s /etc/nginx/sites-available/Sub.doamin.de.conf /etc/nginx/sites-enabled/
Nginx neustarten, damit die Konfiguration wirksam wird.
$ sudo service nginx restart
Certbot für Nginx installieren
Falls noch nicht installiert, certbot/python3 installieren:
$ sudo apt install certbot python3-certbot-nginx
Zertifikat anfordern:
Zertifikat für die Hauptdomain:
$ sudo certbot --nginx -d domain.de -d www.doamin.de
Bei der ersten Zertifikatserstellung muss die Nutzungsbedingung akzeptiert werden.
Ebenfalls wird deine Email Adresse angefragt, diese ist einzugeben.
Werbung von Partnern kann mit nein beantwortet werden.
Redirekt mit 2 bestätigen! Heißt das automatisch jeder Aufruf deiner Seite auf SSL Verschlüsselung geleitet wird.
–> Email Adresse eingeben „Enter“
–> Nutzungsbedingungen bestätigen „A“+“Enter“
–> Newsletter/Neuigkeiten „N“+“Enter“
–> Nach einem Moment auswählen ob alle Anfragen auf https umgeleitet werden sollen.
1 = Nein 2=Ja mit „Enter bestätigen
Danach Zertifikat für die Subdomain anfordern:
$ sudo certbot --nginx -d Sub.domain.de -d www.Sub.domain.de
Redirekt mit 2 bestätigen.
Certbot Timer prüfen:
$ sudo systemctl status certbot.timer
Erneuerungsprozess testen
$ sudo certbot renew --dry-run
Zertifikat bzw. Redirect erneuern
Diesen Schritt kann ich nicht Nachvollziehen, erzeugt aber das was gewünscht ist. Zertifikat erneut für die Subdomain anfordern bzw. reparieren. Bei jeder Versuchsinstallation musste ich diesen Schritt tätigen, damit die Subdomain ordnungsgemäß verschlüsselt auf den Nightscout Port weitergeleitet wird.
Dazu wird einfach der Befehl zur Zertifikatsanforderung erneut eingegeben:
$ sudo certbot --nginx -d Sub.domain.de -d www.Sub.domain.de
Es wird gemeldet dass bereits ein Zertifikat existiert. Hier mit 1 das Zertifikat wiederherstellen.
1: Attempt to reinstall this existing certificate
nun sollte die Portweiterleitung verschlüsselt ordnungsgemäß funktionieren.
Firewall konfigurieren/aktivieren
Um die Firewall zu konfigurieren mit root Account einloggen!
Port 27017 freigeben (erlaubt den externen Zugriff auf Mongo DB z.B. mit Robot3T)
Nginx und OpenSSH erlauben.
Port 1337 freigeben (Hier streiten sich die Meinungen ob Sinnvoll ist oder nicht.)
$ ufw allow 1337
$ ufw allow 'Nginx Full'
$ ufw allow 27017
$ ufw allow OpenSSH
Als nächstes aktivieren wir die Firewall:
$ ufw enable
Um einzusehen ob die Firewall aktiviert und die o.a. einstellungen erlaubt sind, status überprüfen:
$ ufw status
Das Ergebnis sollte so aussehen:
Status: active
To Action From
— —— —-
1337 ALLOW Anywhere
27017 ALLOW Anywhere
OpenSSH ALLOW Anywhere
Apache Full ALLOW Anywhere
Nginx Full ALLOW Anywhere
1337 (v6) ALLOW Anywhere (v6)
27017 (v6) ALLOW Anywhere (v6)
OpenSSH (v6) ALLOW Anywhere (v6)
Apache Full (v6) ALLOW Anywhere (v6)
Nginx Full (v6) ALLOW Anywhere (v6)
Jetzt sollte auf beim Aufruf der Hauptdomain (automatisch verschlüsselt) die nginx Testseite erscheinen und beim Aufruf der Subdomain die Nightscout Installation erscheinen (ohne Angabe des Ports 1337, da oben schon eine Weiterleitung eingerichtet ist)
Optional kann man einmal den Sever neu starten,
Der Bootvorgang bis Nightscout wieder voll erreichbar ist, kann bis zu 5 Minuten in Anspruch nehmen.