Kategorien
How To

Nightscout installation auf einem Raspberry Pi 4

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ählenOther 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
  • 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.

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