Falls du Hilfe brauchst oder in der Cloud hosten möchtest, kannst du dich auf der Kontaktseite oder unter der E-Mail „hello@diaplay.de“ melden!
Dieses DIY-Tutorial zeigt präzise wie du Nightscout mithilfe von Docker Compose auf einem Raspberry Pi installierst.
Schritt 1: Raspberry Pi Kaufen
Kaufe dir einen Raspberry Pi mit mindestens 2 GB. Gut für unsere Wirtschaft ist da (zum Beispiel) der Anbieter Reichelt: RPI 4B 2G oder Berrybase: RPI 4B 2G.
Ältere Raspberry Pis funktionieren meistens auch, einen Versuch ist es wert.
(Ein gutes Netzteil ist natürlich auch nötig, alternativ gibt es All-in-One Sets: AllInOne bei Reichelt )
Nicht zu vergessen ist eine Micro-SD-Karte mit mindestens 8 GB Speicher.
Schritt 2: OS auf SD Karte installieren
Schritt 2.1: Raspberry Pi Imager herunterladen
Lade dir den kostenlosen SD-Imager von Raspberry Pi herunter: Link ( Download bei Install Raspberry Pi OS using Raspberry Pi Imager
)
Bei Windows lädst du eine .exe
Datei herunter, die du danach auführen musst. Nach der Installation findest du im Windows Startmenü das Programm mit dem Namen Raspberry Pi Imager
Schritt 2.2: SD Karte Flashen
Stecke zuerst deine Micro-SD-Karte in deinen Laptop/PC. Öffne das Programm Raspberry Pi Imager
.
Dort wählst du bei OS Wählen
„Other general Purpose OS
„, dann „Ubuntu
“ und dann Ubuntu Server 22.04.1 LTS
(Wichtig! 64-bit) aus.
Danach wählst du deine SD-Karte mit dem Button SD-Karte Wählen
aus.
Klicke danach auf den Button Schreiben
, das musst du ggf nochmal bestätigen.
Der Schreibprozess dauert eine Weile ( max. 30 min ).
Alternative zu Schritt 2:
Lade dir die 64-Bit version von Ubuntu Server hier herunter und packe die iso
bzw img
auf die SD Karte mit z.B. win32Imager
Schritt 3: Raspberry Pi Vorbereiten
Stecke die neu beschriebene SD-Karte in den SD-Karten-Slot des Raspberry Pi’s, schließe ein Ethernetkabel an deinen Router und den Raspberry Pi an und versorge ihn mit Strom.
Die LEDs des Raspberry Pis, sowie die LEDs beim Ethernet-Stecker sollten blinken/leuchten.
Schritt 4: SSH Verbindung herstellen
SSH ist ein einfacher und sicherer Weg um auf das Terminal des Raspberry Pis zuzugreifen.
Das vermutlich einfachste Programm ist PuTTY, welches hier heruntergeladen werden kann.
Nachdem du Putty installiert hast, kannst du PuTTY Öffnen.
Du siehst jetzt dieses Fenster:
Bei Host Name (or IP address)
musst du ubuntu
eingeben und dann auf Open
klicken.
Achtung: Manche Router unterstützen den hostnamen nicht und müssen per IP-Addresse aufgerufen werden. Diese zu finden geht meist im Router selber oder mit Tools wie https://www.advanced-port-scanner.com/de/.
(Eine Alternative wäre das Terminal, dabei musst du den Befehl ssh ubuntu@ubuntu
ausführen)
Schritt 4b: SSH Login
Falls du dich das erste mal mit dem Raspberry Pi verbindest bekommst du ein Fenster mit einer Warnung, diese kannst du ignorieren und auf Ja
oder Yes
drücken
Du bekommst jetzt ein Fenster in dem Steht login as:
, dort gibst du ubuntu
ein und klickst auf Enter. Das Passwort musst du als nächstes eingeben, dieses ist beim ersten Start ubuntu
(Nicht wundern: während du das Passwort eingibst erscheint dieses nicht im Terminal)
Danach wirst du aufgefordert das alte Passwort erneut einzugeben und ein neues auszuwählen (Wichtig: Das Passwort wird beim eingeben nicht angezeigt und der Cursor bewegt sich nicht). Als neues Passwort habe ich einfach mal raspberry
ausgewählt, du kannst aber auch jedes andere sichere Passwort verwenden
Nachdem du das neues Passwort erneut bestätigt hast, wirst du ausgeloggt und musst dich mit PuTTY erneut einloggen, siehe Schritt 4
(Wichtig: Ab jetzt kannst du als Passwort nur noch dein neues verwenden, da du dies gerade geändert hast)
Du solltest jetzt eingeloggt sein und hast damit ein Terminal
Schritt 5: Installation von einigen Tools
Dies kann eine halbe Ewigkeit (~1 Stunde) brauchen.
Randnotiz: Das kopieren von den Befehlen in das Terminal kannst du so machen: du kopierst den Text mit Ctrl+C und fügst ihn in PuTTY mit einem Klick der rechten Maustaste ein.
Wir installieren jetzt erstmal Docker (kurz nachdem du Enter drückst musst du das bereits erwähnte Passwort eintippen und Enter drücken):
curl https://get.docker.com/ | sh
(Quelle: Docker Docs https://docs.docker.com/engine/install/ubuntu/)
Danach passen wir noch ein paar Rechte an und starten den Pi neu (vergiss nicht dich nach dem Neustart wieder per SSH einzuloggen):
sudo usermod -aG docker $USER &&
sudo reboot
Schritt 6: Nightscout & Mongo installieren
Zuerst erstellen wir einen Ordner in dem wir die Docker Konfigurationsdatei und die Daten der Datenbank speichern:
cd /home/$USER/ &&
mkdir nightscout &&
cd nightscout &&
mkdir db
Danach machen wir eine Datei in diesem Ordner mit den folgenden Befehlen:
cd /home/$USER/nightscout &&
nano docker-compose.yaml
In dem (via nano) geöffneten Dokument fügen wir (für’s erste) folgendes ein
version: '3.9'
services:
nightscout:
image: markxoe/nightscout-cgm-remote-monitor-raspberrypi:latest
environment:
TZ: Europe/Berlin
MONGO_CONNECTION: mongodb://mongo:27017/nightscout
API_SECRET: eintotalsicheresPasswort!
BG_HIGH: 220
BG_LOW: 60
BG_TARGET_TOP: 180
BG_TARGET_BOTTOM: 80
INSECURE_USE_HTTP: "true"
AUTH_DEFAULT_ROLES: denied
ENABLE: delta direction rawbg
ports:
- "1337:1337"
links:
- mongo
restart: always
mongo:
image: mongo:bionic
restart: always
volumes:
- "./db:/data/db"
Danach speichern wir die Datei in dem wir Strg+O
(großes o, keine Null), danach Enter
und dann Strg+X
auf der Tastatur drücken.
In dem Text stehen nach environment:
einige Zeilen mit Einstellungen. Eine davon ist der API_SECRET
, mehr dazu aber weiter unten
Jetzt laden wir noch die Images vom Docker hub mit diesem Befehl herunter: (Kann eventuell bis zu 45 minuten dauern)
docker compose pull
Schritt 7: Nightscout Starten
Jetzt kannst du endlich folgenden Befehl eingeben und damit Nightscout starten:
docker compose up -d
In der Konsole sollte dann so etwas wie
Running 2/2
Container nightscout-mongo-1 Started
Container nightscout-nightscout-1 Started
ausgegeben werden.
Getestet kann das ganze dann mit dem Browser und der URL http://ubuntu:1337/
werden. Falls du bei Schritt 4b Probleme mit dem Hostname ubuntu hattest, musst du hier wieder die IP-Addresse verwenden.
Achtung: Falls du Einstellungen in der Datei docker-compose.yml
vornimmst, musst du nach dem Ändern docker compose up -d
eingeben, um die Einstellungen anzuwenden.
Schritt 8: Einstellungen vornehmen
Die Einstellungen müssen in der Datei docker-compose.yml vorgenommen werden. Zum editieren empfehle ich für nicht-vim-Nutzer „nano“, andere Editoren gehen aber auch.
Achtung: Vergiss nicht nach Änderungen an den Einstellungen den Befehl docker compose up -d
auszuführen, um diese Anzuwenden!
Fun fact: Nach Änderungen an Einstellungen musst du nichts mehr herunterladen, d.h. das Anwenden geht sehr schnell.
Zum Öffnen der Datei wieder folgenden Befehl verwenden:
nano docker-compose.yml
Es gibt folgende wichtige Einstellungen:
- API_SECRET
- 12 Zeichen langer Text, sowas wie das Admin passwort
- Sollte nicht einfach zu erraten sein -> man kann mit ihm daten in Nightscout ändern!
- ENABLE
- Diese Variable gibt an welche Nightscout Plugins aktiviert sein sollen
- Um Plugins zu aktivieren, packt man die Kürzel mit Leerzeichen getrennt nach
ENABLE
- Verfügbare Plugins siehe https://github.com/nightscout/cgm-remote-monitor#plugins
- Wichtige sind
- INSECURE_USE_HTTP
- Muss auf „true“ gesetzt sein, solange man kein SSL direkt mit Nightscout verwendet bzw. Nightscout hinter einen sog. reverse proxy setzt (würde ich empfehlen) Anleitung dazu gibt es hier: Nightscout ins Internet bringen
- AUTH_DEFAULT_ROLES
- Sicherheitsbedingte Einstellung, ist sie auf
denied
gestellt braucht man einen oder den Token um auf Daten zuzugreifen (für Nutzung im Internet empfohlen), diese kann aber auch auf z.B.readable
gesetzt werden, so kann aber jeder auf die Daten zugreifen.
- Sicherheitsbedingte Einstellung, ist sie auf
Gespeichert wird die Datei wieder mit Strg+O
, dann Enter
und dann Strg+X
. Danach muss noch docker compose up -d
ausgeführt werden um die Einstellungen anzuwenden
Schritt 8,5: Updates
Updates gehören zu den Dingen die schnell nervig werden können. Systemupdates kann man automatisch ausführen lassen, dazu gibt es einige Anleitungen, wie zum Beispiel hier: https://www.linuxcapable.com/how-to-install-configure-unattended-upgrades-on-ubuntu-22-04-lts/ (Danke Marco!)
Falls du mal spontan Lust auf Updates bekommen solltest kannst du dafür diesen Befehl ausführen (kann eventuell mehrere Ewigkeiten dauern):
sudo apt update &&
sudo apt upgrade
Um Updates für Nightscout und Mongo zu laden kannst du folgenden Befehl verwenden (kann eventuell einige hundert Sekunden brauchen):
docker compose pull &&
docker compose up -d
ToDo: Automatische Nightscout & MongoDB updates via cronjob
Schritt 9 (optional): Nightscout ins Internet bringen
Bisher kannst du Nightscout nur bei dir lokal verwenden, das ist doof, wenn du oder dein(e) Diabetiker(in) nicht zuhause (b)ist.
Um Nightscout im Internet verfügbar zu machen, kannst du diese Anleitung verwenden: Nightscout ins Internet bringen
Schritt 10: mit Uploader/ xDrip etc. verwenden
Die meisten Applikationen brauchen die URL des Servers sowie der/die/das API_SECRET.
Die URL des Servers ist http://ubuntu:1337/
bzw bei manchen Routern http://<ip-addresse>:1337/
wobei <ip-addresse>
mit der IP addresse des Raspberry Pis ersetzt werden muss. Ach ja, aktuell kannst du Nightscout nur lokal verwenden, um das auch von Außen zu nutzen ist noch ein wenig Aufwand nötig, siehe weiter unten.
Falls du Nightscout außerhalb verwenden willst musst du bereits erwähnte Anleitung verwenden um dies zu tun, die Domain ist dann dementsprechend anders, mehr dazu in der Anleitung
Die API_SECRET
ist (zurzeit) bei uns
eintotalsicheresPasswort!
Dieser kann und soll aber bitte auch geändert werden, siehe Schritt 8.
Bei Fragen oder Verbesserungen einfach Kontaktieren