Docker Container für Balkonkraftwerk Überwachung
Dieser Beitrag wurde 3200 mal angezeigt.
heute möchte ich Ihnen zeigen, wie Sie Docker-Container vorbereiten können, um Ihre PV-Anlage, Ihr Balkon- oder Volkskraftwerk zu überwachen.
Zunächst benötigen Sie eine Umgebung, in der Docker ausgeführt werden kann. Ich empfehle einen Raspberry Pi 4 mit mindestens 4 GB RAM und einer großen SD-Karte. Der Speicherplatz wird später wichtig sein und hängt davon ab, wie lange Ihre Logs zurückreichen sollen. Für etwa 4 bis 6 Monate können gut und gerne mal 32 GB anfallen. Derzeit sind SD-Karten günstig zu haben, also zögern Sie nicht, sich eine 128- oder 512-GB-Karte zu besorgen.
Alternativ könnt ihr natürlich auch eine andere Umgebung nehmen auf der Ihr Docker laufen habt.
In diesem Tutorium gehe ich davon aus, das Ihr bereits Docker auf einem Pi installiert habt.
Falls ihr das noch nicht habt, findet ihr im Netz entsprechende Anleitungen.
Es gibt 2 Möglichkeiten die Containerumgebung einzurichten.
- Komplette Einrichtung über Konsole
- Einrichtung über Portainer
Portainer bietet euch eine Weboberfläche über der ihr eure Docker Container verwalten könnt.
Ich möchte euch an der Stelle die Installation über Portainer beschreiben.
Installation von Docker und Portainer
Install Docker
sudo apt update && sudo apt upgrade -y
curl -sSL https://get.docker.com | sh
Dieser Command installiert docker direkt. Dies kann einige Zeit dauern.
Danach benötigen wir noch die entsprechenden Nutzungsrechte:
sudo usermod -aG docker $USER
Wenn wir dies nicht machen, können wir docker als normaler User „pi“ in dem Fall nicht nutzen.
Install Portainer
sudo apt update && sudo apt upgrade -y
sudo docker pull portainer/portainer-ce:latest
Es wird nun Portainer runtergeladen und das Image bereitgestellt.
Nun können wir Portainer einrichten und starten.
Ich habe dafür ein Verzeichnis erstellt um meine Config dort zu speichern und später auch automatisch Updates machen zu lassen.
cd ~ mkdir portainer && cd portainer mkdir data
danach benötigen wir eine docker-composer file. Diese erstellt ihr im portainer Verzeichnis. z.b. mit nano. Falls ihr Nano noch nicht installiert habt:
sudo apt install nano
Nun erstellen wir die Datei und kopieren diesen Inhalt in die Datei und speichern:
nano docker-compose.yaml
version: '3'
services:
portainer:
image: portainer/portainer-ce:latest
container_name: portainer
restart: always
security_opt:
- no-new-privileges:true
network_mode: host
volumes:
- /etc/localtime:/etc/localtime:ro
- /var/run/docker.sock:/var/run/docker.sock:ro
- ./data:/data
Speichert das ganze ab.
Damit wir, wenn ein Update bereit steht, dies auch direkt installieren können, erstellen wir eine SH Datei, die diesen Job für uns übernimmt.
nano update-portainer.sh
Mit dem Inhalt:
#!/bin/bash docker stop portainer && \ docker rm portainer && \ docker pull portainer/portainer-ce:latest && \ docker-compose up -d
Speichert dies ab.
Ihr könnt nun Portainer starten und mit der Webeinrichtung weiter machen:
docker-compose up -d
Ihr könnt Portainer nun auf dem Port 9000 erreichen.
http://[PIIPADDRESS]:9000
Erstellt nun einen User eurer Wahl, zb. „piadmin“ „1234“ 😉
Wählt im nächsten Schritt wie ihr Portainer Lokal nutzen wollt. Ihr wollt es natürlich für Docker nutzen 😉 Klickt dann auf Connect um den lokalen Portainer Agent zu starten.
Danach solltet ihr in der Übersicht landen, in der ihr zum lokalen Agent und die Verwaltung wechseln könnt.
Installation der Docker Container für Überwachung
Damit wir die Daten der Container persistieren können bzw. das ganze Update fähig machen können, müssen wir die Daten der Container speichern. Dafür legen wir entsprechende Verzeichnisse an:
mkdir /home/pi/influxdb_data mkdir /home/pi/mosquitto/ mkdir /home/pi/mosquitto/config mkdir /home/pi/mosquitto/data mkdir /home/pi/mosquitto/log mkdir /home/pi/grafana_data mkdir /home/pi/grafana_data/provisioning mkdir /home/pi/.node-red

Nun klickt in der Übersicht dann auf „Stacks“ und fügt einen neuen Stack hinzu.
Fügt dann diese Composer Daten ein:
version: '3.8'
networks:
monitoring:
driver: bridge
volumes:
prometheus_data: {}
services:
influxdb:
image: influxdb:latest
container_name: influxdb
restart: always
environment:
- INFLUXDB_DB=influx
- INFLUXDB_ADMIN_USER=${GRAFANAUSER}
- INFLUXDB_ADMIN_PASSWORD=${GRAFANAPASS}
ports:
- '8086:8086'
volumes:
- /home/pi/influxdb_data:/var/lib/influxdb
mosquitto:
image: eclipse-mosquitto
container_name: mqtt
volumes:
- /home/pi/mosquitto/config:/mosquitto/config
- /home/pi/mosquitto/data:/mosquitto/data
- /home/pi/mosquitto/log:/mosquitto/log
ports:
- "1883:1883"
- "9001:9001"
grafana:
image: grafana/grafana:latest
container_name: grafana
volumes:
- /home/pi/grafana_data:/var/lib/grafana
- /home/pi/grafana_data/provisioning:/etc/grafana/provisioning
environment:
- GF_SECURITY_ADMIN_USER=${GRAFANAUSER}
- GF_SECURITY_ADMIN_PASSWORD=${GRAFANAPASS}
- GF_USERS_ALLOW_SIGN_UP=false
restart: unless-stopped
expose:
- 3000
ports:
- 3000:3000
networks:
- monitoring
labels:
org.label-schema.group: "monitoring"
node-exporter:
image: prom/node-exporter:latest
container_name: node-exporter
restart: unless-stopped
volumes:
- /proc:/host/proc:ro
- /sys:/host/sys:ro
- /:/rootfs:ro
command:
- '--path.procfs=/host/proc'
- '--path.rootfs=/rootfs'
- '--path.sysfs=/host/sys'
- '--collector.filesystem.mount-points-exclude=^/(sys|proc|dev|host|etc)($$|/)'
expose:
- 9100
networks:
- monitoring
nodered:
image: nodered/node-red:latest
restart: always
container_name: rednode
network_mode: host
volumes:
- /home/pi/.node-red:/data
logging:
driver: json-file
options:
max-size: "10mb"
max-file: "1"
Damit wir uns entsprechend anmelden können bei den einzelnen Containern, hinterlegen wir noch zwei Environment variables.
GRAFANAUSER GRAFANAPASS
Nachdem das ganze runtergeladen und gestartet wurde finden wir die entsprechenden Instanzen:
Portainer: http://[PIIPADDRESS]:9000 Portainer: https://[PIIPADDRESS]:9443 Node-Red: http://[PIIPADDRESS]:1880 Grafana: http://[PIIPADDRESS]:3000 Influxdb: http://[PIIPADDRESS]:8086
In nächsten Beitrag beschreibe ich dann wie ihr Node-Red einrichtet um später Grafana einzurichten. 
DANKE
Ich möchte meine Anlage gerne noch weiter ausbauen und euch auch an deren Änderungen teilhaben lassen.
Daher würde ich mich freuen wenn ihr meine Ref. Links nutzt, wenn ihr euch die Teile besorgt.
Ihr könnt mir auch einen Kaffee ausgeben über Paypal: Klick hier
Oder ihr könnt euch ein NFT (TRX) aus meiner exklusiven Kollektion sichern: Klick hier

