Docker Container für Balkonkraftwerk Überwachung
Dieser Beitrag wurde 1965 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